BCodeUtils

dotty.tools.backend.jvm.BCodeUtils
object BCodeUtils

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
BCodeUtils.type

Members list

Type members

Classlikes

final implicit class AnalyzerExtensions[V <: Value](val analyzer: Analyzer[V]) extends AnyVal

Attributes

Supertypes
class AnyVal
trait Matchable
class Any

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
final implicit class FrameExtensions[V <: Value](val frame: Frame[V]) extends AnyVal

Attributes

Supertypes
class AnyVal
trait Matchable
class Any
object Goto

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
Goto.type
object JumpNonJsr

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
JumpNonJsr.type

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Value members

Concrete methods

def checkConstantStringLength(name: String, other: String = ...): Boolean

Checks that the given name, or the concatenation of the given two names and descriptor if present, do not exceed the JVM's UTF-8 text size limits.

Checks that the given name, or the concatenation of the given two names and descriptor if present, do not exceed the JVM's UTF-8 text size limits.

Attributes

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.

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

Attributes

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

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

Attributes

def getPop(size: Int): InsnNode
def isAbstractMethod(methodNode: MethodNode): Boolean
def isCall(instruction: AbstractInsnNode): Boolean
def isConstructor(methodNode: MethodNode): Boolean
def isFinalClass(classNode: ClassNode): Boolean
def isFinalMethod(methodNode: MethodNode): Boolean
def isInterface(classNode: ClassNode): Boolean
def isLoad(instruction: AbstractInsnNode): Boolean
def isNativeMethod(methodNode: MethodNode): Boolean
def isPrivateMethod(methodNode: MethodNode): Boolean
def isPublicMethod(methodNode: MethodNode): Boolean
def isReturn(instruction: AbstractInsnNode): Boolean
def isStaticMethod(methodNode: MethodNode): Boolean
def isStore(instruction: AbstractInsnNode): Boolean
def isStrictfpMethod(methodNode: MethodNode): Boolean
def isVarargsMethod(methodNode: MethodNode): Boolean
final def javaFlags(sym: Symbol)(using Context): Int

Return the Java modifiers for the given symbol. Java modifiers for classes:

Return the Java modifiers for the given symbol. Java modifiers for classes:

  • public, abstract, final, strictfp (not used) for interfaces:
  • the same as for classes, without 'final' for fields:
  • public, private (*)
  • static, final for methods:
  • the same as for fields, plus:
  • abstract, synchronized (not used), strictfp (not used), native (not used) for all:
  • deprecated

(*) protected cannot be used, since inner classes 'see' protected members, and they would fail verification after lifted.

Attributes

def negateJumpOpcode(jumpOpcode: Int): Int

Create a new LabelNode with a correctly associated Label.

Create a new LabelNode with a correctly associated Label.

Attributes

def parametersSize(methodNode: MethodNode): Int

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

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

Attributes

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.

Attributes

def substituteLabel(reference: AnyRef, from: LabelNode, to: LabelNode): Unit

Implicits

Implicits

final implicit def AnalyzerExtensions[V <: Value](analyzer: Analyzer[V]): AnalyzerExtensions[V]
final implicit def FrameExtensions[V <: Value](frame: Frame[V]): FrameExtensions[V]