Skip to content

Commit f0cb8ce

Browse files
Matthias Güdemannmgudemann
Matthias Güdemann
authored andcommitted
Java entry point / main function
Restructure finding of the entry point of the Java function or the main function of the program.
1 parent 7fee670 commit f0cb8ce

7 files changed

+215
-70
lines changed

src/java_bytecode/java_bytecode_language.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Author: Daniel Kroening, [email protected]
66
77
\*******************************************************************/
88

9+
#include <string>
10+
911
#include <util/symbol_table.h>
1012
#include <util/suffix.h>
1113
#include <util/config.h>
@@ -39,9 +41,9 @@ void java_bytecode_languaget::get_language_options(const cmdlinet& cmd)
3941
disable_runtime_checks=cmd.isset("disable-runtime-check");
4042
assume_inputs_non_null=cmd.isset("java-assume-inputs-non-null");
4143
if(cmd.isset("java-max-input-array-length"))
42-
max_nondet_array_length=safe_string2int(cmd.get_value("java-max-input-array-length"));
44+
max_nondet_array_length=std::stoi(cmd.get_value("java-max-input-array-length"));
4345
if(cmd.isset("java-max-vla-length"))
44-
max_user_array_length=safe_string2int(cmd.get_value("java-max-vla-length"));
46+
max_user_array_length=std::stoi(cmd.get_value("java-max-vla-length"));
4547
}
4648

4749
/*******************************************************************\
@@ -229,11 +231,12 @@ bool java_bytecode_languaget::final(symbol_tablet &symbol_table)
229231
java_internal_additions(symbol_table);
230232

231233

232-
std::tuple<symbolt, bool, bool> t = get_main_symbol(symbol_table, main_class, get_message_handler());
233-
if(std::get<2>(t))
234-
return std::get<1>(t);
234+
main_function_resultt res=
235+
get_main_symbol(symbol_table, main_class, get_message_handler());
236+
if(res.stop_convert)
237+
return res.error_found;
235238

236-
symbolt entry = std::get<0>(t);
239+
symbolt entry=res.main_function;
237240

238241
if(java_entry_point(symbol_table,main_class,get_message_handler(),
239242
assume_inputs_non_null,max_nondet_array_length))

src/java_bytecode/java_bytecode_language.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,15 @@ class java_bytecode_languaget:public languaget
6969
protected:
7070
irep_idt main_class;
7171
java_class_loadert java_class_loader;
72-
bool assume_inputs_non_null;
73-
bool disable_runtime_checks;
74-
int max_nondet_array_length;
75-
int max_user_array_length;
72+
bool assume_inputs_non_null; // assume inputs variables to be non-null
73+
74+
bool disable_runtime_checks; // disable run-time checks for java, i.e.,
75+
// ASSERTS for
76+
// - checkcast / instanceof
77+
// - array bounds check
78+
// - array size for newarray
79+
size_t max_nondet_array_length; // maximal length for non-det array creation
80+
size_t max_user_array_length; // max size for user supplied arrays
7681
};
7782

7883
languaget *new_java_bytecode_language();

0 commit comments

Comments
 (0)