AliasingFrame
A subclass of Frame that tracks aliasing of values stored in local variables and on the stack.
Note: an analysis tracking aliases is roughly 5x slower than a usual analysis (assuming a simple value domain with a fast merge function). For example, nullness analysis is roughly 5x slower than a BasicValue analysis.
See the doc of package object analysis for some notes on the performance of alias analysis.
Attributes
- Graph
-
- Supertypes
- Known subtypes
-
class NullnessFrame
Members list
Value members
Concrete methods
The set of aliased values for a given entry in the values array.
The set of aliased values for a given entry in the values array.
Attributes
When entering an exception handler, all values are dropped from the stack (and the exception value is pushed). The ASM analyzer invokes firstHandlerInstructionFrame.clearStack(). To ensure consistent aliasing sets, we need to remove the dropped values from aliasing sets.
When entering an exception handler, all values are dropped from the stack (and the exception value is pushed). The ASM analyzer invokes firstHandlerInstructionFrame.clearStack(). To ensure consistent aliasing sets, we need to remove the dropped values from aliasing sets.
Attributes
- Definition Classes
Attributes
- Definition Classes
Merge the AliasingFrame other into this AliasingFrame.
Merge the AliasingFrame other into this AliasingFrame.
Aliases that are common in both frames are kept. Example:
var x, y = null if (...) { x = a y = a // (x, y, a) are aliases } else { x = a y = b // (x, a) and (y, b) } [...] // (x, a) -- merge of ((x, y, a)) and ((x, a), (y, b))
Attributes
- Definition Classes
Concrete fields
For every value the set of values that are aliases of it.
For every value the set of values that are aliases of it.
Invariants:
- If
aliases(i) == nullthen i has no aliases. This is equivalent to havingaliases(i) == SingletonSet(i). - If
aliases(i) != nullthenaliases(i) contains i. - If
aliases(i) contains jthenaliases(i) eq aliases(j), i.e., they are references to the same (mutable) AliasSet.