PlainBodyBuilder

abstract class PlainBodyBuilder(cunit: CompilationUnit) extends PlainSkelBuilder
trait BCPickles
class Object
trait Matchable
class Any

Type members

Inherited classlikes

case class Local(tk: BType, name: String, idx: Int, isSynth: Boolean)
Inherited from
PlainSkelBuilder
object bc
Inherited from
PlainSkelBuilder
object locals
Inherited from
PlainSkelBuilder

Value members

Abstract methods

def genLoadTry(tree: Try): BType
def genSynchronized(tree: Apply, expectedType: BType): BType

Concrete methods

def adapt(from: BType, to: BType): Unit
def emit(opc: Int): Unit
def emitZeroOf(tk: BType): Unit
def fieldLoad(field: Symbol, hostClass: Symbol): Unit
def fieldStore(field: Symbol, hostClass: Symbol): Unit
def genArithmeticOp(tree: Tree, code: Int): BType
def genArrayOp(tree: Tree, code: Int, expectedType: BType): BType
def genBlock(tree: Block, expectedType: BType): Unit
def genCallMethod(method: Symbol, style: InvokeStyle, pos: Span, specificReceiver: Symbol): BType

Generate a method invocation. If specificReceiver != null, it is used as receiver in the invocation instruction, otherwise method.owner. A specific receiver class is needed to prevent an IllegalAccessError, (aladdin bug 455).

Generate a method invocation. If specificReceiver != null, it is used as receiver in the invocation instruction, otherwise method.owner. A specific receiver class is needed to prevent an IllegalAccessError, (aladdin bug 455).

def genCast(to: RefBType, cast: Boolean): Unit
def genCoercion(code: Int): Unit
def genConstant(const: Constant): Unit
def genConversion(from: BType, to: BType, cast: Boolean): Unit
def genEqEqPrimitive(l: Tree, r: Tree, success: Label, failure: Label, targetIfNoJump: Label): Unit
def genInvokeDynamicLambda(ctor: Symbol, lambdaTarget: Symbol, environmentSize: Int, functionalInterface: Symbol): BType
def genLoad(tree: Tree): Unit
def genLoad(tree: Tree, expectedType: BType): Unit
def genLoadArguments(args: List[Tree], btpes: List[BType]): Unit
def genLoadIf(tree: If, expectedType: BType): BType
def genLoadModule(tree: Tree): BType
def genLoadModule(module: Symbol): Unit
def genPrimitiveOp(tree: Apply, expectedType: BType): BType
def genScalaHash(tree: Tree): BType
def genStat(tree: Tree): Unit
def genThrow(expr: Tree): BType
def genWhileDo(tree: WhileDo): BType
def testOpForPrimitive(primitiveCode: Int): TestOp

Inherited methods

Inherited from
PlainSkelBuilder
def addForwarders(jclass: ClassVisitor, jclassName: String, moduleClass: Symbol): Unit
Inherited from
BCForwardersGen
def addSerialVUID(id: Long, jclass: ClassVisitor): Unit
Inherited from
BCClassGen
final def asmMethodType(msym: Symbol): MethodBType
Inherited from
BCInnerClassGen
Inherited from
BCInnerClassGen
def emitAnnotations(fw: FieldVisitor, annotations: List[Annotation]): Unit
Inherited from
BCAnnotGen
Inherited from
BCAnnotGen
def emitAnnotations(cw: ClassVisitor, annotations: List[Annotation]): Unit
Inherited from
BCAnnotGen
def emitLocalVarScope(sym: Symbol, start: Label, end: Label, force: Boolean): Unit
Inherited from
PlainSkelBuilder
Inherited from
BCAnnotGen
def emitParamNames(jmethod: MethodVisitor, params: List[Symbol]): Unit
Inherited from
BCAnnotGen
def gen(tree: Tree): Unit
Inherited from
PlainSkelBuilder
def genDefDef(dd: DefDef): Unit
Inherited from
PlainSkelBuilder
Inherited from
PlainSkelBuilder

The ClassBType for a class symbol. If the class is nested, the ClassBType is added to the innerClassBufferASM.

The ClassBType for a class symbol. If the class is nested, the ClassBType is added to the innerClassBufferASM.

The class symbol scala.Nothing is mapped to the class scala.runtime.Nothing$. Similarly, scala.Null is mapped to scala.runtime.Null$. This is because there exist no class files for the Nothing / Null. If used for example as a parameter type, we use the runtime classes in the classfile method signature.

Note that the referenced class symbol may be an implementation class. For example when compiling a mixed-in method that forwards to the static method in the implementation class, the class descriptor of the receiver (the implementation class) is obtained by creating the ClassBType.

Inherited from
BCInnerClassGen
Definition Classes
Inherited from
PlainSkelBuilder

Generates the generic signature for sym before erasure.

Generates the generic signature for sym before erasure.

Value Params
owner

The owner of sym.

sym

The symbol for which to generate a signature.

Returns

The generic signature of sym before erasure, as specified in the Java Virtual Machine Specification, ยง4.3.4, or null if sym doesn't need a generic signature.

See also
Inherited from
BCJGenSigGen
def initJMethod(flags: Int, params: List[Symbol]): Unit
Inherited from
PlainSkelBuilder
final def internalName(sym: Symbol): String

The class internal name for a given class symbol. If the symbol describes a nested class, the ClassBType is added to the innerClassBufferASM.

The class internal name for a given class symbol. If the symbol describes a nested class, the ClassBType is added to the innerClassBufferASM.

Inherited from
BCInnerClassGen
def legacyAddCreatorCode(clinit: MethodVisitor, cnode: ClassNode, thisName: String): Unit
Inherited from
JAndroidBuilder
def lineNumber(tree: Tree): Unit
Inherited from
PlainSkelBuilder
Inherited from
PlainSkelBuilder
def paramTKs(app: Apply, take: Int): List[BType]
Inherited from
PlainSkelBuilder
def programPoint(labelSym: Symbol): Label
Inherited from
PlainSkelBuilder
def registerCleanup(finCleanup: Label): Unit
Inherited from
PlainSkelBuilder
final def symDescriptor(sym: Symbol): String

The jvm descriptor for a symbol. If sym represents a nested class, its ClassBType is added to the innerClassBufferASM.

The jvm descriptor for a symbol. If sym represents a nested class, its ClassBType is added to the innerClassBufferASM.

Inherited from
BCInnerClassGen
def symInfoTK(sym: Symbol): BType
Inherited from
PlainSkelBuilder
final def toTypeKind(tp: Type): BType
Inherited from
BCInnerClassGen
def tpeTK(tree: Tree): BType
Inherited from
PlainSkelBuilder
final def typeDescriptor(t: Type): String

The jvm descriptor of a type. If t references a nested class, its ClassBType is added to the innerClassBufferASM.

The jvm descriptor of a type. If t references a nested class, its ClassBType is added to the innerClassBufferASM.

Inherited from
BCInnerClassGen
def unregisterCleanup(finCleanup: Label): Unit
Inherited from
PlainSkelBuilder

Inherited fields

final val MaximumJvmParameters: 254
Inherited from
PlainSkelBuilder
Inherited from
PlainSkelBuilder
Inherited from
PlainSkelBuilder
final val emitLines: Boolean
Inherited from
BCInnerClassGen
final val emitSource: Boolean
Inherited from
BCInnerClassGen
final val emitVars: Boolean
Inherited from
BCInnerClassGen
Inherited from
PlainSkelBuilder
Inherited from
PlainSkelBuilder