This type determines in which way the returned values are recorded.
This type determines in which way the returned values are recorded.
For example, if it is sufficient to just record the last value that was
returned by a specific return instruction, then the type could be DomainValue
and the implementation of joinReturnedValues(...)
would just return the last
given value. Furthermore, returnedValue
would be the identity function.
However, if you have a (more) precise domain you may want to collect all
returned values. In this case the type of ReturnedValue
could be Set[DomainValue].
Called by the abstract interpreter when an exception is thrown that is not (guaranteed to be) handled within the same method.
Called by the abstract interpreter when an exception is thrown that is not (guaranteed to be) handled within the same method.
If the original exception value is null
(/*E.g.*/throw null;
), then
the exception that is actually thrown is a new NullPointerException
. This
situation is, however, completely handled by OPAL and the exception value
is hence never null
.
Joins the previously returned value and the newly given value
.
Joins the previously returned value and the newly given value
. Both values
are returned by the same return instruction (same pc
).
The program counter of the return instruction. The returned
values are automatically associated with the pc of the instruction. Hence,
it is not strictly required to store it in the ReturnedValue
.
For details study the documentation of the abstract type ReturnedValue
and study the subclass(es) of RecordReturnedValues
.
Wraps the given value into a ReturnedValue
.
Wraps the given value into a ReturnedValue
.
The program counter of the return instruction. The returned
values are automatically associated with the pc of the instruction. Hence,
it is not strictly required to store it in the ReturnedValue
.
For details study the documentation of the abstract type ReturnedValue
and study the subclass(es) of RecordReturnedValues
.
Called when a return instruction with the given pc
is reached.
Called when a return instruction with the given pc
is reached.
In other words, when the method returns normally.
Returns the set of all returned values.
The given value
, which is a value with computational type reference, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type reference, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type double, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type double, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type float, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type float, is returned
by the return instruction with the given pc
.
Override this method to perform custom initialization steps.
Override this method to perform custom initialization steps.
Always use abstract override
and call the super method; it is recommended
to complete the initialization of this domain before calling the super method.
The given value
, which is a value with computational type integer, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type integer, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type long, is returned
by the return instruction with the given pc
.
The given value
, which is a value with computational type long, is returned
by the return instruction with the given pc
.
Generic infrastructure to record the values returned by the method. (Note that the computational type of the value(s) is not recorded. It is directly determined by the signature of the method that is analyzed or can be extracted using the respective method.)
Usage
This domain can be stacked on top of other traits that handle return instructions that return some value.
Usage
A domain that mixes in this trait should only be used to analyze a single method.