JAVA Bytecode Language Conversion. More...
#include "java_bytecode_convert_class.h"#include "java_root_class.h"#include <util/arith_tools.h>#include <util/expr_initializer.h>#include <util/namespace.h>#include <util/prefix.h>#include <util/std_expr.h>#include <util/symbol_table_base.h>#include "ci_lazy_methods.h"#include "java_bytecode_convert_method.h"#include "java_string_library_preprocess.h"#include "java_types.h"#include "java_utils.h"Go to the source code of this file.
symbol_table new symbols for the objects java::array[X] where X is byte, short, int, long, char, boolean, float, double and reference. JAVA Bytecode Language Conversion.
Definition in file java_bytecode_convert_class.cpp.
Register in the symbol_table new symbols for the objects java::array[X] where X is byte, short, int, long, char, boolean, float, double and reference.
Also registers a java::array[X].clone():Ljava/lang/Object; method for each type.
Definition at line 791 of file java_bytecode_convert_class.cpp.
Convert parsed annotations into the symbol table.
Definition at line 1132 of file java_bytecode_convert_class.cpp.
Convert java annotations, e.g.
as retrieved from the symbol table, back to type annotationt (inverse of convert_annotations())
Definition at line 1155 of file java_bytecode_convert_class.cpp.
Auxiliary function to extract the generic interface reference of an interface with the specified name from the class signature.
If the signature is empty or the interface is not generic it returns empty. Example:
Definition at line 229 of file java_bytecode_convert_class.cpp.
Auxiliary function to extract the generic superclass reference from the class signature.
If the signature is empty or the superclass is not generic it returns empty. Example:
Definition at line 189 of file java_bytecode_convert_class.cpp.
For a given generic type parameter, check if there is a parameter in the given vector of replacement parameters with a matching name.
If yes, replace the identifier of the parameter at hand by the identifier of the matching parameter. Example: if parameter has identifier java::Outer$Inner::T and there is a replacement parameter with identifier java::Outer::T, the identifier of parameter gets set to java::Outer::T.
parameter identifier) Definition at line 1059 of file java_bytecode_convert_class.cpp.
Recursively find all generic type parameters of a given type and replace their identifiers if matching replacement parameter exist.
Example: class Outer<T> has an inner class Inner that has a field t of type Generic<T>. This function ensures that the parameter points to java::Outer::T instead of java::Outer$Inner::T.
Definition at line 1098 of file java_bytecode_convert_class.cpp.
Definition at line 1037 of file java_bytecode_convert_class.cpp.
Definition at line 1042 of file java_bytecode_convert_class.cpp.
See class java_bytecode_convert_classt.
Definition at line 995 of file java_bytecode_convert_class.cpp.
Checks if the class is implicitly generic, i.e., it is an inner class of any generic class.
All uses of the implicit generic type parameters within the inner class are updated to point to the type parameters of the corresponding outer classes.
Definition at line 1180 of file java_bytecode_convert_class.cpp.