Skip to content

Commit 493fcda

Browse files
committed
Move object factory parameters to util and add java object factory parameters
This moves object_factory_parameterst to util, and creates a new class derived from it called java_object_factory_parameterst in java_bytecode. This is to separate out common object factory options in preparation of adding c object factory parameters.
1 parent 8a75ce4 commit 493fcda

21 files changed

+138
-72
lines changed

jbmc/src/java_bytecode/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ SRC = bytecode_info.cpp \
2626
java_entry_point.cpp \
2727
java_local_variable_table.cpp \
2828
java_object_factory.cpp \
29+
java_object_factory_parameters.cpp \
2930
java_pointer_casts.cpp \
3031
java_qualifiers.cpp \
3132
java_root_class.cpp \
@@ -35,7 +36,6 @@ SRC = bytecode_info.cpp \
3536
java_types.cpp \
3637
java_utils.cpp \
3738
load_method_by_regex.cpp \
38-
object_factory_parameters.cpp \
3939
mz_zip_archive.cpp \
4040
remove_exceptions.cpp \
4141
remove_instanceof.cpp \

jbmc/src/java_bytecode/convert_java_nondet.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ static goto_programt get_gen_nondet_init_instructions(
4444
const source_locationt &source_loc,
4545
symbol_table_baset &symbol_table,
4646
message_handlert &message_handler,
47-
const object_factory_parameterst &object_factory_parameters,
47+
const java_object_factory_parameterst &object_factory_parameters,
4848
const irep_idt &mode)
4949
{
5050
code_blockt gen_nondet_init_code;
@@ -82,7 +82,7 @@ static std::pair<goto_programt::targett, bool> insert_nondet_init_code(
8282
const goto_programt::targett &target,
8383
symbol_table_baset &symbol_table,
8484
message_handlert &message_handler,
85-
object_factory_parameterst object_factory_parameters,
85+
java_object_factory_parameterst object_factory_parameters,
8686
const irep_idt &mode)
8787
{
8888
const auto next_instr = std::next(target);
@@ -172,7 +172,7 @@ void convert_nondet(
172172
goto_programt &goto_program,
173173
symbol_table_baset &symbol_table,
174174
message_handlert &message_handler,
175-
const object_factory_parameterst &object_factory_parameters,
175+
const java_object_factory_parameterst &object_factory_parameters,
176176
const irep_idt &mode)
177177
{
178178
bool changed = false;
@@ -200,10 +200,10 @@ void convert_nondet(
200200
void convert_nondet(
201201
goto_model_functiont &function,
202202
message_handlert &message_handler,
203-
const object_factory_parameterst &object_factory_parameters,
203+
const java_object_factory_parameterst &object_factory_parameters,
204204
const irep_idt &mode)
205205
{
206-
object_factory_parameterst parameters = object_factory_parameters;
206+
java_object_factory_parameterst parameters = object_factory_parameters;
207207
parameters.function_id = function.get_function_id();
208208
convert_nondet(
209209
function.get_goto_function().body,
@@ -219,7 +219,7 @@ void convert_nondet(
219219
goto_functionst &goto_functions,
220220
symbol_table_baset &symbol_table,
221221
message_handlert &message_handler,
222-
const object_factory_parameterst &object_factory_parameters)
222+
const java_object_factory_parameterst &object_factory_parameters)
223223
{
224224
const namespacet ns(symbol_table);
225225

@@ -229,7 +229,7 @@ void convert_nondet(
229229

230230
if(symbol.mode==ID_java)
231231
{
232-
object_factory_parameterst parameters = object_factory_parameters;
232+
java_object_factory_parameterst parameters = object_factory_parameters;
233233
parameters.function_id = f_it.first;
234234
convert_nondet(
235235
f_it.second.body,
@@ -248,7 +248,7 @@ void convert_nondet(
248248
void convert_nondet(
249249
goto_modelt &goto_model,
250250
message_handlert &message_handler,
251-
const object_factory_parameterst& object_factory_parameters)
251+
const java_object_factory_parameterst &object_factory_parameters)
252252
{
253253
convert_nondet(
254254
goto_model.goto_functions,

jbmc/src/java_bytecode/convert_java_nondet.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class symbol_table_baset;
2020
class goto_modelt;
2121
class goto_model_functiont;
2222
class message_handlert;
23-
struct object_factory_parameterst;
23+
struct java_object_factory_parameterst;
2424

2525
/// Converts side_effect_exprt_nondett expressions using java_object_factory.
2626
/// For example, NONDET(SomeClass *) may become a nondet choice between a null
@@ -40,12 +40,12 @@ void convert_nondet(
4040
goto_functionst &goto_functions,
4141
symbol_table_baset &symbol_table,
4242
message_handlert &message_handler,
43-
const object_factory_parameterst &object_factory_parameters);
43+
const java_object_factory_parameterst &object_factory_parameters);
4444

4545
void convert_nondet(
4646
goto_modelt &,
4747
message_handlert &,
48-
const object_factory_parameterst &object_factory_parameters);
48+
const java_object_factory_parameterst &object_factory_parameters);
4949

5050
/// Converts side_effect_exprt_nondett expressions using java_object_factory.
5151
/// For example, NONDET(SomeClass *) may become a nondet choice between a null
@@ -64,7 +64,7 @@ void convert_nondet(
6464
void convert_nondet(
6565
goto_model_functiont &function,
6666
message_handlert &message_handler,
67-
const object_factory_parameterst &object_factory_parameters,
67+
const java_object_factory_parameterst &object_factory_parameters,
6868
const irep_idt &mode);
6969

7070
#endif // CPROVER_JAVA_BYTECODE_CONVERT_NONDET_H

jbmc/src/java_bytecode/java_bytecode_language.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ Author: Daniel Kroening, [email protected]
1313
#include "ci_lazy_methods.h"
1414
#include "ci_lazy_methods_needed.h"
1515
#include "java_class_loader.h"
16+
#include "java_object_factory_parameters.h"
1617
#include "java_static_initializers.h"
1718
#include "java_string_library_preprocess.h"
18-
#include "object_factory_parameters.h"
1919
#include "select_pointer_type.h"
2020
#include "synthetic_methods_map.h"
2121

@@ -179,7 +179,7 @@ class java_bytecode_languaget:public languaget
179179
java_class_loadert java_class_loader;
180180
bool threading_support;
181181
bool assume_inputs_non_null; // assume inputs variables to be non-null
182-
object_factory_parameterst object_factory_parameters;
182+
java_object_factory_parameterst object_factory_parameters;
183183
size_t max_user_array_length; // max size for user code created arrays
184184
method_bytecodet method_bytecode;
185185
lazy_methods_modet lazy_methods_mode;

jbmc/src/java_bytecode/java_entry_point.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static void java_static_lifetime_init(
122122
symbol_table_baset &symbol_table,
123123
const source_locationt &source_location,
124124
bool assume_init_pointers_not_null,
125-
object_factory_parameterst object_factory_parameters,
125+
java_object_factory_parameterst object_factory_parameters,
126126
const select_pointer_typet &pointer_type_selector,
127127
bool string_refinement_enabled,
128128
message_handlert &message_handler)
@@ -218,7 +218,7 @@ static void java_static_lifetime_init(
218218
is_non_null_library_global(sym.name) ||
219219
assume_init_pointers_not_null;
220220

221-
object_factory_parameterst parameters = object_factory_parameters;
221+
java_object_factory_parameterst parameters = object_factory_parameters;
222222
if(not_allow_null && !is_class_model)
223223
parameters.min_null_tree_depth = 1;
224224

@@ -278,7 +278,7 @@ exprt::operandst java_build_arguments(
278278
code_blockt &init_code,
279279
symbol_table_baset &symbol_table,
280280
bool assume_init_pointers_not_null,
281-
object_factory_parameterst object_factory_parameters,
281+
java_object_factory_parameterst object_factory_parameters,
282282
const select_pointer_typet &pointer_type_selector)
283283
{
284284
const java_method_typet::parameterst &parameters =
@@ -307,7 +307,7 @@ exprt::operandst java_build_arguments(
307307
// be null
308308
bool is_this=(param_number==0) && parameters[param_number].get_this();
309309

310-
object_factory_parameterst parameters = object_factory_parameters;
310+
java_object_factory_parameterst parameters = object_factory_parameters;
311311
// only pointer must be non-null
312312
if(assume_init_pointers_not_null || is_this)
313313
parameters.min_null_tree_depth = 1;
@@ -598,7 +598,7 @@ bool java_entry_point(
598598
message_handlert &message_handler,
599599
bool assume_init_pointers_not_null,
600600
bool assert_uncaught_exceptions,
601-
const object_factory_parameterst &object_factory_parameters,
601+
const java_object_factory_parameterst &object_factory_parameters,
602602
const select_pointer_typet &pointer_type_selector,
603603
bool string_refinement_enabled)
604604
{
@@ -654,7 +654,7 @@ bool generate_java_start_function(
654654
message_handlert &message_handler,
655655
bool assume_init_pointers_not_null,
656656
bool assert_uncaught_exceptions,
657-
const object_factory_parameterst &object_factory_parameters,
657+
const java_object_factory_parameterst &object_factory_parameters,
658658
const select_pointer_typet &pointer_type_selector)
659659
{
660660
messaget message(message_handler);

jbmc/src/java_bytecode/java_entry_point.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ bool java_entry_point(
2525
class message_handlert &message_handler,
2626
bool assume_init_pointers_not_null,
2727
bool assert_uncaught_exceptions,
28-
const object_factory_parameterst &object_factory_parameters,
28+
const java_object_factory_parameterst &object_factory_parameters,
2929
const select_pointer_typet &pointer_type_selector,
3030
bool string_refinement_enabled);
3131

@@ -76,7 +76,7 @@ bool generate_java_start_function(
7676
class message_handlert &message_handler,
7777
bool assume_init_pointers_not_null,
7878
bool assert_uncaught_exceptions,
79-
const object_factory_parameterst &object_factory_parameters,
79+
const java_object_factory_parameterst &object_factory_parameters,
8080
const select_pointer_typet &pointer_type_selector);
8181

8282
#endif // CPROVER_JAVA_BYTECODE_JAVA_ENTRY_POINT_H

jbmc/src/java_bytecode/java_object_factory.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class java_object_factoryt
3030
/// methods in this class.
3131
const source_locationt &loc;
3232

33-
const object_factory_parameterst object_factory_parameters;
33+
const java_object_factory_parameterst object_factory_parameters;
3434

3535
/// This is employed in conjunction with the depth above. Every time the
3636
/// non-det generator visits a type, the type is added to this set. We forbid
@@ -83,7 +83,7 @@ class java_object_factoryt
8383
java_object_factoryt(
8484
std::vector<const symbolt *> &_symbols_created,
8585
const source_locationt &loc,
86-
const object_factory_parameterst _object_factory_parameters,
86+
const java_object_factory_parameterst _object_factory_parameters,
8787
symbol_table_baset &_symbol_table,
8888
const select_pointer_typet &pointer_type_selector)
8989
: symbols_created(_symbols_created),
@@ -1536,7 +1536,7 @@ exprt object_factory(
15361536
const irep_idt base_name,
15371537
code_blockt &init_code,
15381538
symbol_table_baset &symbol_table,
1539-
object_factory_parameterst parameters,
1539+
java_object_factory_parameterst parameters,
15401540
allocation_typet alloc_type,
15411541
const source_locationt &loc,
15421542
const select_pointer_typet &pointer_type_selector)
@@ -1629,7 +1629,7 @@ void gen_nondet_init(
16291629
const source_locationt &loc,
16301630
bool skip_classid,
16311631
allocation_typet alloc_type,
1632-
const object_factory_parameterst &object_factory_parameters,
1632+
const java_object_factory_parameterst &object_factory_parameters,
16331633
const select_pointer_typet &pointer_type_selector,
16341634
update_in_placet update_in_place)
16351635
{
@@ -1666,7 +1666,7 @@ exprt object_factory(
16661666
const irep_idt base_name,
16671667
code_blockt &init_code,
16681668
symbol_tablet &symbol_table,
1669-
const object_factory_parameterst &object_factory_parameters,
1669+
const java_object_factory_parameterst &object_factory_parameters,
16701670
allocation_typet alloc_type,
16711671
const source_locationt &location)
16721672
{
@@ -1690,7 +1690,7 @@ void gen_nondet_init(
16901690
const source_locationt &loc,
16911691
bool skip_classid,
16921692
allocation_typet alloc_type,
1693-
const object_factory_parameterst &object_factory_parameters,
1693+
const java_object_factory_parameterst &object_factory_parameters,
16941694
update_in_placet update_in_place)
16951695
{
16961696
select_pointer_typet pointer_type_selector;

jbmc/src/java_bytecode/java_object_factory.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ exprt object_factory(
9494
const irep_idt base_name,
9595
code_blockt &init_code,
9696
symbol_table_baset &symbol_table,
97-
object_factory_parameterst parameters,
97+
java_object_factory_parameterst parameters,
9898
allocation_typet alloc_type,
9999
const source_locationt &location,
100100
const select_pointer_typet &pointer_type_selector);
@@ -104,7 +104,7 @@ exprt object_factory(
104104
const irep_idt base_name,
105105
code_blockt &init_code,
106106
symbol_tablet &symbol_table,
107-
const object_factory_parameterst &object_factory_parameters,
107+
const java_object_factory_parameterst &object_factory_parameters,
108108
allocation_typet alloc_type,
109109
const source_locationt &location);
110110

@@ -122,7 +122,7 @@ void gen_nondet_init(
122122
const source_locationt &loc,
123123
bool skip_classid,
124124
allocation_typet alloc_type,
125-
const object_factory_parameterst &object_factory_parameters,
125+
const java_object_factory_parameterst &object_factory_parameters,
126126
const select_pointer_typet &pointer_type_selector,
127127
update_in_placet update_in_place);
128128

@@ -133,7 +133,7 @@ void gen_nondet_init(
133133
const source_locationt &loc,
134134
bool skip_classid,
135135
allocation_typet alloc_type,
136-
const object_factory_parameterst &object_factory_parameters,
136+
const java_object_factory_parameterst &object_factory_parameters,
137137
update_in_placet update_in_place);
138138

139139
exprt allocate_dynamic_object(
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*******************************************************************\
2+
3+
Module:
4+
5+
Author: Daniel Poetzl
6+
7+
\*******************************************************************/
8+
9+
#include "java_object_factory_parameters.h"
10+
11+
void parse_java_object_factory_options(
12+
const cmdlinet &cmdline,
13+
optionst &options)
14+
{
15+
parse_object_factory_options(cmdline, options);
16+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*******************************************************************\
2+
3+
Module:
4+
5+
Author: Daniel Poetzl
6+
7+
\*******************************************************************/
8+
9+
#ifndef CPROVER_JAVA_BYTECODE_JAVA_OBJECT_FACTORY_PARAMETERS_H
10+
#define CPROVER_JAVA_BYTECODE_JAVA_OBJECT_FACTORY_PARAMETERS_H
11+
12+
#include <util/object_factory_parameters.h>
13+
14+
struct java_object_factory_parameterst final : public object_factory_parameterst
15+
{
16+
java_object_factory_parameterst()
17+
{
18+
}
19+
20+
explicit java_object_factory_parameterst(const optionst &options)
21+
: object_factory_parameterst(options)
22+
{
23+
}
24+
};
25+
26+
/// Parse the java object factory parameters from a given command line
27+
/// \param cmdline Command line
28+
/// \param [out] options The options object that will be updated
29+
void parse_java_object_factory_options(
30+
const cmdlinet &cmdline,
31+
optionst &options);
32+
33+
#endif

0 commit comments

Comments
 (0)