NullnessFrame

dotty.tools.backend.jvm.analysis.NullnessFrame
class NullnessFrame(nLocals: Int, nStack: Int) extends AliasingFrame[NullnessValue]

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Value members

Constructors

def this(src: Frame[_ <: NullnessValue])

Concrete methods

override def execute(insn: AbstractInsnNode, interpreter: Interpreter[NullnessValue]): Unit

Attributes

Definition Classes
override def initJumpTarget(opcode: Int, target: LabelNode | Null): Unit

Attributes

Definition Classes

Inherited methods

def aliasesOf(entry: Int): AliasSet

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

Inherited from:
AliasingFrame
override def clearStack(): Unit

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
Inherited from:
AliasingFrame

Attributes

Inherited from:
Frame
def getLocals(): Int

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame
def getStackSize(): Int

Attributes

Inherited from:
Frame
override def init(src: Frame[_ <: NullnessValue]): Frame[NullnessValue]

Attributes

Definition Classes
Inherited from:
AliasingFrame
override def merge(other: Frame[_ <: NullnessValue], interpreter: Interpreter[NullnessValue]): Boolean

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
Inherited from:
AliasingFrame

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame

Attributes

Inherited from:
Frame
override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
AliasingFrame -> Frame -> Any
Inherited from:
AliasingFrame

Inherited fields

val aliases: Array[AliasSet | Null]

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) == null then i has no aliases. This is equivalent to having aliases(i) == SingletonSet(i).
  • If aliases(i) != null then aliases(i) contains i.
  • If aliases(i) contains j then aliases(i) eq aliases(j), i.e., they are references to the same (mutable) AliasSet.

Attributes

Inherited from:
AliasingFrame