Skip to content

Commit 778fb97

Browse files
authored
Merge pull request #5226 from smowton/smowton/feature/faster-string-to-int
String solver: avoid cubic formulas for string-to-int conversions
2 parents cccdfd9 + b8e774c commit 778fb97

File tree

24 files changed

+89
-41
lines changed

24 files changed

+89
-41
lines changed

jbmc/regression/strings-smoke-tests/java_parseint/test1.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
Test1
3-
--max-nondet-string-length 1000 --function Test1.main
3+
--max-nondet-string-length 1000 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test1.main
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[.*assertion.1\].* line 8.* SUCCESS$

jbmc/regression/strings-smoke-tests/java_parseint/test2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
Test2
3-
--max-nondet-string-length 1000 --function Test2.main
3+
--max-nondet-string-length 1000 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test2.main
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[.*assertion.1\].* line 9.* SUCCESS$

jbmc/regression/strings-smoke-tests/java_parseint/test3.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
Test3
3-
--max-nondet-string-length 1000 --function Test3.main
3+
--max-nondet-string-length 1000 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test3.main
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[.*assertion.1\].* line 7.* FAILURE$

jbmc/regression/strings-smoke-tests/java_parseint_knownbug/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
KNOWNBUG
22
Test
3-
--max-nondet-string-length 1000 --function Test.main
3+
--max-nondet-string-length 1000 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test.main
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[.*assertion.1\].* line 10.* SUCCESS$
Binary file not shown.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
public class Test {
2+
3+
public static void testMe(String input, int radix) {
4+
5+
// Railroad the solver a bit to speed up solving
6+
// (note use of > and < to dodge constant propagation)
7+
if(input == null || input.length() != 1 || input.charAt(0) != 'k' || radix < 30 || radix > 30)
8+
return;
9+
10+
int value = Integer.parseInt(input, radix);
11+
if(value == 20)
12+
assert false;
13+
else
14+
assert false;
15+
16+
}
17+
18+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
Test
3+
--max-nondet-string-length 10 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test.testMe --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar`
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
^\[.*assertion.1\].* line 12.* FAILURE$
7+
^\[.*assertion.2\].* line 14.* SUCCESS$
8+
--
9+
non equal types

jbmc/regression/strings-smoke-tests/java_parseint_with_radix/test1.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
Test1
3-
--max-nondet-string-length 1000 --function Test1.main
3+
--max-nondet-string-length 1000 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test1.main
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[.*assertion.1\].* line 8.* SUCCESS$

jbmc/regression/strings-smoke-tests/java_parseint_with_radix/test2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
Test2
3-
--max-nondet-string-length 1000 --function Test2.main
3+
--max-nondet-string-length 1000 --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar` --function Test2.main
44
^EXIT=10$
55
^SIGNAL=0$
66
^\[.*assertion.1\].* line 8.* SUCCESS$

0 commit comments

Comments
 (0)