Skip to content

Commit 1a9435a

Browse files
committed
Add CProver.toString() functions to string preprocessing conversion table
New CProverString.toString() operations are added which are now handled internally by cbmc. These operations can be used to model other Java methods such as Integer.toString().
1 parent c1894ab commit 1a9435a

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

jbmc/src/java_bytecode/java_string_library_preprocess.cpp

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,7 +1483,7 @@ void java_string_library_preprocesst::initialize_conversion_table()
14831483
// CProverString.charAt differs from the Java String.charAt in that no
14841484
// exception is raised for the out of bounds case.
14851485
cprover_equivalent_to_java_function
1486-
["java::org.cprover.CProverString.charAt:(Ljava/lang/String;I)C"]=
1486+
["java::org.cprover.CProverString.charAt:(Ljava/lang/String;I)C"] =
14871487
ID_cprover_string_char_at_func;
14881488
cprover_equivalent_to_java_function
14891489
["java::org.cprover.CProverString.charAt:(Ljava/lang/StringBuffer;I)C"] =
@@ -1518,7 +1518,7 @@ void java_string_library_preprocesst::initialize_conversion_table()
15181518
format_signature += "Ljava/lang/String;";
15191519
format_signature += ")Ljava/lang/String;";
15201520
cprover_equivalent_to_java_string_returning_function[format_signature] =
1521-
ID_cprover_string_format_func;
1521+
ID_cprover_string_format_func;
15221522

15231523
cprover_equivalent_to_java_assign_and_return_function
15241524
["java::org.cprover.CProverString.insert:(Ljava/lang/StringBuilder;ILjava/"
@@ -1539,15 +1539,28 @@ void java_string_library_preprocesst::initialize_conversion_table()
15391539
// exception is raised for the out of bounds case.
15401540
cprover_equivalent_to_java_string_returning_function
15411541
["java::org.cprover.CProverString.substring:(Ljava/lang/String;I)"
1542-
"Ljava/lang/String;"]=
1543-
ID_cprover_string_substring_func;
1542+
"Ljava/lang/String;"] = ID_cprover_string_substring_func;
15441543
cprover_equivalent_to_java_string_returning_function
15451544
["java::org.cprover.CProverString.substring:(Ljava/lang/String;II)"
1546-
"Ljava/lang/String;"]=
1547-
ID_cprover_string_substring_func;
1545+
"Ljava/lang/String;"] = ID_cprover_string_substring_func;
15481546
cprover_equivalent_to_java_string_returning_function
15491547
["java::org.cprover.CProverString.substring:(Ljava/Lang/"
15501548
"StringBuffer;II)Ljava/lang/String;"] = ID_cprover_string_substring_func;
1549+
cprover_equivalent_to_java_string_returning_function
1550+
["java::org.cprover.CProverString.toString:(I)Ljava/lang/String;"] =
1551+
ID_cprover_string_of_int_func;
1552+
cprover_equivalent_to_java_string_returning_function
1553+
["java::org.cprover.CProverString.toString:(J)Ljava/lang/String;"] =
1554+
ID_cprover_string_of_long_func;
1555+
conversion_table
1556+
["java::org.cprover.CProverString.toString:(F)Ljava/lang/String;"] =
1557+
std::bind(
1558+
&java_string_library_preprocesst::make_float_to_string_code,
1559+
this,
1560+
std::placeholders::_1,
1561+
std::placeholders::_2,
1562+
std::placeholders::_3,
1563+
std::placeholders::_4);
15511564

15521565
// String library
15531566
conversion_table["java::java.lang.String.<init>:(Ljava/lang/String;)V"] =

0 commit comments

Comments
 (0)