Packages

o

scala.tools.nsc.backend.jvm.opt

BytecodeUtils

object BytecodeUtils

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

Type Members

  1. implicit final class AnalyzerExtensions[V <: Value] extends AnyVal
  2. implicit final class FrameExtensions[V <: Value] extends AnyVal

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @HotSpotIntrinsicCandidate()
  6. def cloneLabels(methodNode: MethodNode): Map[LabelNode, LabelNode]
  7. def cloneLocalVariableNodes(methodNode: MethodNode, labelMap: Map[LabelNode, LabelNode], calleeMethodName: String, shift: Int): List[LocalVariableNode]

    Clone the local variable descriptors of methodNode and map their start and end labels according to the labelMap.

  8. def cloneTryCatchBlockNodes(methodNode: MethodNode, labelMap: Map[LabelNode, LabelNode]): List[TryCatchBlockNode]

    Clone the local try/catch blocks of methodNode and map their start and end and handler labels according to the labelMap.

  9. def codeSizeOKForInlining(caller: MethodNode, callee: MethodNode): Boolean
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  12. def finalJumpTarget(source: JumpInsnNode): LabelNode
  13. def fixLoadedNothingOrNullValue(loadedType: Type, loadInstr: AbstractInsnNode, methodNode: MethodNode, bTypes: BTypes): Unit

    This method is used by optimizer components to eliminate phantom values of instruction that load a value of type Nothing$ or Null$.

    This method is used by optimizer components to eliminate phantom values of instruction that load a value of type Nothing$ or Null$. Such values on the stack don't interact well with stack map frames.

    For example, opt.getOrElse(throw e) is re-written to an invocation of the lambda body, a method with return type Nothing$. Similarly for opt.getOrElse(null) and Null$.

    During bytecode generation this is handled by BCodeBodyBuilder.adapt. See the comment in that method which explains the issue with such phantom values.

  14. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  15. def getPop(size: Int): InsnNode
  16. def hasCallerSensitiveAnnotation(methodNode: MethodNode): Boolean
  17. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  18. def instructionResultSize(insn: AbstractInsnNode): Int
  19. def isAbstractMethod(methodNode: MethodNode): Boolean
  20. def isCall(instruction: AbstractInsnNode): Boolean
  21. def isConditionalJump(instruction: AbstractInsnNode): Boolean
  22. def isConstructor(methodNode: MethodNode): Boolean
  23. def isExecutable(instruction: AbstractInsnNode): Boolean
  24. def isFinalClass(classNode: ClassNode): Boolean
  25. def isFinalMethod(methodNode: MethodNode): Boolean
  26. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  27. def isInterface(classNode: ClassNode): Boolean
  28. def isJumpNonJsr(instruction: AbstractInsnNode): Boolean
  29. def isLoad(instruction: AbstractInsnNode): Boolean
  30. def isLoadOrStore(instruction: AbstractInsnNode): Boolean
  31. def isLoadStoreOrRet(instruction: AbstractInsnNode): Boolean
  32. def isNativeMethod(methodNode: MethodNode): Boolean
  33. def isNonVirtualCall(instruction: AbstractInsnNode): Boolean
  34. def isPrivateMethod(methodNode: MethodNode): Boolean
  35. def isPublicMethod(methodNode: MethodNode): Boolean
  36. def isReference(t: Type): Boolean
  37. def isReturn(instruction: AbstractInsnNode): Boolean
  38. def isSize2LoadOrStore(opcode: Int): Boolean
  39. def isStaticMethod(methodNode: MethodNode): Boolean
  40. def isStore(instruction: AbstractInsnNode): Boolean
  41. def isStrictfpMethod(methodNode: MethodNode): Boolean
  42. def isSynchronizedMethod(methodNode: MethodNode): Boolean
  43. def isVirtualCall(instruction: AbstractInsnNode): Boolean
  44. def loadZeroForTypeSort(sort: Int): InsnNode
  45. final val maxJVMMethodSize: Int(65535)
  46. final val maxMethodSizeAfterInline: Int
  47. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  48. def negateJumpOpcode(jumpOpcode: Int): Int
  49. def newLabelNode: LabelNode

    Create a new LabelNode with a correctly associated Label.

  50. def nextExecutableInstruction(insn: AbstractInsnNode, alsoKeep: (AbstractInsnNode) ⇒ Boolean = Set()): Option[AbstractInsnNode]
    Annotations
    @tailrec()
  51. def nextExecutableInstructionOrLabel(insn: AbstractInsnNode): Option[AbstractInsnNode]
    Annotations
    @tailrec()
  52. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  53. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  54. def parametersSize(methodNode: MethodNode): Int

    The number of local variable slots used for parameters and for the this reference.

  55. def previousExecutableInstruction(insn: AbstractInsnNode, stopBefore: (AbstractInsnNode) ⇒ Boolean = Set()): Option[AbstractInsnNode]

    Find the nearest preceding node to insn which is executable (i.e., not a label / line number) and which is not selected by stopBefore.

    Find the nearest preceding node to insn which is executable (i.e., not a label / line number) and which is not selected by stopBefore.

    Annotations
    @tailrec()
  56. def previousLineNumber(insn: AbstractInsnNode): Option[Int]
    Annotations
    @tailrec()
  57. def removeJumpAndAdjustStack(method: MethodNode, jump: JumpInsnNode): Unit
  58. def sameTargetExecutableInstruction(a: JumpInsnNode, b: JumpInsnNode): Boolean
  59. def substituteLabel(reference: AnyRef, from: LabelNode, to: LabelNode): Unit
  60. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  61. def toString(): String
    Definition Classes
    AnyRef → Any
  62. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  63. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  64. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  65. object ConditionalJump
  66. object Goto
  67. object JumpNonJsr
  68. object VarInstruction

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped