|
cprover
|
This module provides a front end for Java.
To be documented.
To be documented.
To be documented.
To be documented.
To be documented.
To be documented.
To be documented.
To be documented.
remove_java_new.h remove_java_new is responsible for converting the new, newarray and multianewarray Java bytecode operation into codet. Specifically it converts the bytecode instruction into:
java_new on each sub arrayNote: it does not call the constructor as this is done by a separate java bytecode operation.
The basic new operation is represented in Java bytecode by the new op
These are converted by remove_java_newt::lower_java_new
For example, the following Java code:
Which is represented as the following Java bytecode:
The first instruction only is translated into the following codets:
For more details about the zero expression see expr_initializert
The new Java array operation is represented in Java bytecode by the newarray operation.
These are converted by remove_java_newt::lower_java_new_array
See TODO:details about java arrays for details on how arrays are represented in codet. It first allocates the array object as with a regular Java object. Then the size component is set to be the size of the array and the data component is also initialized.
For example the following Java:
Which is compiled into the following Java bytecode:
Is translated into the following codets:
The ARRAY_SET codet sets all the values to null.
The new Java multi dimensional array operation is represented in bytecode by multianewarray
These are also by remove_java_newt::lower_java_new_array
They work the same as single dimensional arrays but create a for loop for each element in the array since these start initialized.
remove_javanew is then recursively applied to the new subarray.
To be documented.
To be documented.
To be documented.
To be documented.
To be documented.
To be documented.
See also String Solver Interface.
To be documented.