Packages

object BoxKind

Source
BoxUnbox.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BoxKind
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. def checkInstanceCreation(newOp: TypeInsnNode, prodCons: (backendUtils)#ProdConsAnalyzer): Option[(InsnNode, MethodInsnNode)]

    Check if newOp is part of a standard object construction pattern in which:

    Check if newOp is part of a standard object construction pattern in which:

    NEW T DUP [load constructor args] INVOKESPECIAL T.init

    The method ensures that the entire construction pattern is closed in itself, without any branches going in or out. This is checked by looking at producers / consumers:

    • DUP is the only consumer of NEW, and vice versa
    • DUP the only producer for the receiver of the constructor call
    • The set of consumers of DUP without the constructor call is the same as the set of consumers of the value on the stack top after the constructor call
  2. def checkReceiverPredefLoad(mi: MethodInsnNode, prodCons: (backendUtils)#ProdConsAnalyzer): Option[AbstractInsnNode]

    If mi is an invocation of a method on Predef, check if the receiver is a GETSTATIC of Predef.MODULE$ and return it.

  3. def valueCreationKind(insn: AbstractInsnNode, prodCons: (backendUtils)#ProdConsAnalyzer): Option[(BoxCreation, BoxKind)]