|
39 | 39 | "(no-lazy-methods)" \
|
40 | 40 | "(lazy-methods-extra-entry-point):" \
|
41 | 41 | "(java-load-class):" \
|
42 |
| - "(java-no-load-class):" |
| 42 | + "(java-no-load-class):" \ |
| 43 | + "(static-values):" |
43 | 44 |
|
44 | 45 | #define JAVA_BYTECODE_LANGUAGE_OPTIONS_HELP /*NOLINT*/ \
|
45 | 46 | " --disable-uncaught-exception-check\n" \
|
|
71 | 72 | " METHODNAME can be a regex that will be matched\n" /* NOLINT(*) */ \
|
72 | 73 | " against all symbols. If missing a java:: prefix\n" /* NOLINT(*) */ \
|
73 | 74 | " will be added. If no descriptor is found, all\n"/* NOLINT(*) */ \
|
74 |
| - " overloads of a method will also be added.\n" |
| 75 | + " overloads of a method will also be added.\n" \ |
| 76 | + " --static-values f Load initial values of static fields from the given\n"/* NOLINT(*) */ \ |
| 77 | + " JSON file. We assign static fields to these values\n"/* NOLINT(*) */ \ |
| 78 | + " instead of calling the normal static initializer\n"/* NOLINT(*) */ \ |
| 79 | + " (clinit) method.\n" \ |
| 80 | + " The argument can be a relative or absolute path to\n"/* NOLINT(*) */ \ |
| 81 | + " the file.\n" |
75 | 82 | // clang-format on
|
76 | 83 |
|
77 | 84 | class symbolt;
|
@@ -197,6 +204,10 @@ class java_bytecode_languaget:public languaget
|
197 | 204 | java_string_library_preprocesst string_preprocess;
|
198 | 205 | std::string java_cp_include_files;
|
199 | 206 | bool nondet_static;
|
| 207 | + /// Path to a JSON file which contains initial values of static fields (right |
| 208 | + /// after the static initializer of the class was run). This is read from the |
| 209 | + /// --static-values command-line option. |
| 210 | + std::string static_values_file; |
200 | 211 |
|
201 | 212 | // list of classes to force load even without reference from the entry point
|
202 | 213 | std::vector<irep_idt> java_load_classes;
|
|
0 commit comments