Scala Compiler 2.13.16 - scala.tools.nsc.backend.jvm.opt.BytecodeUtils
Keywords: Scala Compiler 2.13.16 scala.tools.nsc.backend.jvm.opt.BytecodeUtils

Scala Compiler2.13.16 < Back


# Packages

-  package root

  The Scala compiler and reflection APIs.

  The Scala compiler and reflection APIs.

  Definition Classes
    root
-  package scala
  Definition Classes
    root
-  package tools
  Definition Classes
    scala
-  package nsc
  Definition Classes
    tools
-  package backend
  Definition Classes
    nsc
-  package jvm
  Definition Classes
    backend
-  package opt
  Definition Classes
    jvm
- BoxUnbox
- ByteCodeRepository
- BytecodeUtils
- CallGraph
- ClosureOptimizer
- CopyProp
- FifoCache
- InlineInfoAttribute
- InlineInfoAttributePrototype
- Inliner
- InlinerHeuristics
- LabelNotLive
- LocalOpt
- LocalOptImpls
- RemovePair
- RemovePairDependency

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. Protected

### 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 callsiteTooLargeAfterInlining(caller: MethodNode, callee: MethodNode): Boolean
6.  def clone(): AnyRef
   Attributes
     protected[lang]
   Definition Classes
     AnyRef
   Annotations
     @throws(classOf[java.lang.CloneNotSupportedException]) @native()
7.  def cloneLabels(methodNode: MethodNode): Map[LabelNode, LabelNode]
8.  def cloneLocalVariableNodes(methodNode: MethodNode, labelMap: Map[LabelNode, LabelNode], calleeMethodName: String, localIndexMap: (Int) => Int): List[LocalVariableNode]

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

9.  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`.

10.  final def eq(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
11.  def equals(arg0: AnyRef): 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 findSingleCall(method: MethodNode, such: (MethodInsnNode) => Boolean): Option[MethodInsnNode]
15.  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.

16.  final def getClass(): Class[_ <: AnyRef]
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
17.  def getPop(size: Int): InsnNode
18.  def hasCallerSensitiveAnnotation(methodNode: MethodNode): Boolean
19.  def hashCode(): Int
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
20.  def instructionResultSize(insn: AbstractInsnNode): Int
21.  def isAbstractMethod(methodNode: MethodNode): Boolean
22.  def isCall(instruction: AbstractInsnNode): Boolean
23.  def isConditionalJump(instruction: AbstractInsnNode): Boolean
24.  def isConstructor(methodNode: MethodNode): Boolean
25.  def isExecutable(instruction: AbstractInsnNode): Boolean
26.  def isFinalClass(classNode: ClassNode): Boolean
27.  def isFinalMethod(methodNode: MethodNode): Boolean
28.  final def isInstanceOf[T0]: Boolean
    Definition Classes
      Any
29.  def isInterface(classNode: ClassNode): Boolean
30.  def isJumpNonJsr(instruction: AbstractInsnNode): Boolean
31.  def isLoad(instruction: AbstractInsnNode): Boolean
32.  def isLoadOrStore(instruction: AbstractInsnNode): Boolean
33.  def isLoadStoreOrRet(instruction: AbstractInsnNode): Boolean
34.  def isNativeMethod(methodNode: MethodNode): 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 isStaticCall(instruction: AbstractInsnNode): Boolean
41.  def isStaticMethod(methodNode: MethodNode): Boolean
42.  def isStore(instruction: AbstractInsnNode): Boolean
43.  def isStrictfpMethod(methodNode: MethodNode): Boolean
44.  def isSynchronizedMethod(methodNode: MethodNode): Boolean
45.  def isSyntheticMethod(methodNode: MethodNode): Boolean
46.  def isVarargsMethod(methodNode: MethodNode): Boolean
47.  def isVirtualCall(instruction: AbstractInsnNode): Boolean
48.  def loadZeroForTypeSort(sort: Int): InsnNode
49.  final val maxJVMMethodSize: Int(65535)
50.  final val maxMethodSizeAfterInline: 62259
51.  final def ne(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
52.  def negateJumpOpcode(jumpOpcode: Int): Int
53.  def newLabelNode: LabelNode

    Create a new LabelNode with a correctly associated Label.

54.  def nextExecutableInstruction(insn: AbstractInsnNode, alsoKeep: (AbstractInsnNode) => Boolean = Set()): Option[AbstractInsnNode]
    Annotations
      @tailrec()
55.  def nextExecutableInstructionOrLabel(insn: AbstractInsnNode): Option[AbstractInsnNode]
    Annotations
      @tailrec()
56.  final def notify(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
57.  final def notifyAll(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
58.  def parametersSize(methodNode: MethodNode): Int

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

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

### Inherited from AnyRef

### Inherited from Any

### Ungrouped