◆ annotationt
◆ classt
◆ fieldt
◆ methodt
◆ overlay_classest
◆ java_bytecode_convert_classt()
◆ check_field_exists()
◆ convert() [1/2]
Convert a class, adding symbols to the symbol table for its members.
- Parameters
-
c | Bytecode of the class to convert |
overlay_classes | Bytecode of any overlays for the class to convert |
Definition at line 270 of file java_bytecode_convert_class.cpp.
◆ convert() [2/2]
void java_bytecode_convert_classt::convert |
( |
symbolt & |
class_symbol, |
|
|
const fieldt & |
f |
|
) |
| |
|
private |
Convert a field, adding a symbol to teh symbol table for it.
- Parameters
-
class_symbol | The already added symbol for the containing class |
f | The bytecode for the field to convert |
this is for a free type variable, e.g., a field of the form T f;
this is for a field that holds a generic type, either with instantiated or with free type variables, e.g., List<T> l;
or List<Integer> l;
Definition at line 642 of file java_bytecode_convert_class.cpp.
◆ is_ignored_method()
static bool java_bytecode_convert_classt::is_ignored_method |
( |
const irep_idt & |
class_name, |
|
|
const methodt & |
method |
|
) |
| |
|
inlinestaticprivate |
Check if a method is an ignored method, by one of two mechanisms:
- If the class under consideration is org.cprover.CProver, and the method is listed as ignored.
- If it has the annotation@IgnoredMethodImplementation. This kind of ignord method is intended for use in overlay classes, in particular for methods which must exist in the overlay class so that it will compile, e.g. default constructors, but which we do not want to overlay the corresponding method in the underlying class. It is an error if a method in an overlay class has the same signature as a method in the underlying class and it isn't marked as an overlay method or an ignored method.
- Parameters
-
class_name | class the method is declared on |
method | a methodt object from a java bytecode parse tree |
- Returns
- true if the method is an ignored method, else false
Definition at line 161 of file java_bytecode_convert_class.cpp.
◆ is_overlay_method()
static bool java_bytecode_convert_classt::is_overlay_method |
( |
const methodt & |
method | ) |
|
|
inlinestaticprivate |
Check if a method is an overlay method by searching for ID_overlay_method
in its list of annotations.
An overlay method is a method with the annotation @OverlayMethodImplementation. They should only appear in overlay classes. They will be loaded by JBMC instead of the method with the same signature in the underlying class. It is an error if there is no method with the same signature in the underlying class. It is an error if a method in an overlay class has the same signature as a method in the underlying class and it isn't marked as an overlay method or an ignored method.
- Parameters
-
method | a methodt object from a java bytecode parse tree |
- Returns
- true if the method is an overlay method, else false
Definition at line 136 of file java_bytecode_convert_class.cpp.
◆ operator()()
Converts all the class parse trees into a class symbol and adds it to the symbol table.
- Parameters
-
parse_trees | The parse trees found for the class to be converted. |
Definition at line 67 of file java_bytecode_convert_class.cpp.
◆ log
messaget java_bytecode_convert_classt::log |
|
private |
◆ max_array_length
const size_t java_bytecode_convert_classt::max_array_length |
|
private |
◆ method_bytecode
◆ no_load_classes
std::unordered_set<std::string> java_bytecode_convert_classt::no_load_classes |
|
private |
◆ string_preprocess
◆ symbol_table
The documentation for this class was generated from the following file: