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()
  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 finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  14. 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.

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

    Create a new LabelNode with a correctly associated Label.

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

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

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

Inherited from AnyRef

Inherited from Any

Ungrouped