The BTypes component defines The BType class hierarchy. BTypes encapsulates all type information that is required after building the ASM nodes. This includes optimizations, geneartion of InnerClass attributes and generation of stack map frames.
This representation is immutable and independent of the compiler data structures, hence it can be queried by concurrent threads.
Attributes
- Companion
- object
- Graph
-
- Supertypes
- Known subtypes
-
class BTypesFromSymbols[I]
- Self type
Members list
Type members
Classlikes
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
BOOL.type
A BType is either a primitve type, a ClassBType, an ArrayBType of one of these, or a MethodType referring to BTypes.
A BType is either a primitve type, a ClassBType, an ArrayBType of one of these, or a MethodType referring to BTypes.
Attributes
- Supertypes
- Known subtypes
-
class MethodBTypetrait PrimitiveBTypeobject BOOLobject BYTEobject CHARobject DOUBLEobject FLOATobject INTobject LONGobject SHORTobject UNITtrait RefBTypeclass ArrayBTypeclass ClassBTypeShow all
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
BYTE.type
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
CHAR.type
A ClassBType represents a class or interface type. The necessary information to build a ClassBType is extracted from compiler symbols and types, see BTypesFromSymbols.
A ClassBType represents a class or interface type. The necessary information to build a ClassBType is extracted from compiler symbols and types, see BTypesFromSymbols.
The offset
and length
fields are used to represent the internal name of the class. They are indices into some character array. The internal name can be obtained through the method internalNameString
, which is abstract in this component. Name creation is assumed to be hash-consed, so if two ClassBTypes have the same internal name, they NEED to have the same offset
and length
.
The actual implementation in subclass BTypesFromSymbols uses the global chrs
array from the name table. This representation is efficient because the JVM class name is obtained through classSymbol.javaBinaryName
. This already adds the necessary string to the chrs
array, so it makes sense to reuse the same name table in the backend.
ClassBType is not a case class because we want a custom equals method, and because the extractor extracts the internalName, which is what you typically need.
Attributes
- Companion
- object
- Supertypes
Attributes
- Companion
- class
- Supertypes
- Self type
-
ClassBType.type
The type info for a class. Used for symboltable-independent subtype checks in the backend.
The type info for a class. Used for symboltable-independent subtype checks in the backend.
Value parameters
- flags
-
The java flags, obtained through
javaFlags
. Used also to derive the flags for InnerClass entries. - interfaces
-
All transitively implemented interfaces, except for those inherited through the superclass.
- memberClasses
-
Classes nested in this class. Those need to be added to the InnerClass table, see the InnerClass spec summary above.
- nestedInfo
-
If this describes a nested class, information for the InnerClass table.
- superClass
-
The super class, not defined for class java/lang/Object.
Attributes
- Supertypes
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
DOUBLE.type
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
FLOAT.type
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
INT.type
This class holds the data for an entry in the InnerClass table. See the InnerClass summary above in this file.
This class holds the data for an entry in the InnerClass table. See the InnerClass summary above in this file.
There's some overlap with the class NestedInfo, but it's not exactly the same and cleaner to keep separate.
Value parameters
- flags
-
The flags for this class in the InnerClass entry.
- innerName
-
The simple name of the inner class, may be null.
- name
-
The internal name of the class.
- outerName
-
The internal name of the outer class, may be null.
Attributes
- Supertypes
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
LONG.type
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalstrait BTypeclass Objecttrait Matchableclass AnyShow all
Just a named pair, used in CoreBTypes.asmBoxTo/asmUnboxTo.
Just a named pair, used in CoreBTypes.asmBoxTo/asmUnboxTo.
Attributes
- Supertypes
Information required to add a class to an InnerClass table. The spec summary above explains what information is required for the InnerClass entry.
Information required to add a class to an InnerClass table. The spec summary above explains what information is required for the InnerClass entry.
Value parameters
- enclosingClass
-
The enclosing class, if it is also nested. When adding a class to the InnerClass table, enclosing nested classes are also added.
- innerName
-
The innerName field, may be None.
- isStaticNestedClass
-
True if this is a static nested class (not inner class) () () Note that the STATIC flag in ClassInfo.flags, obtained through javaFlags(classSym), is not correct for the InnerClass entry, see javaFlags. The static flag in the InnerClass describes a source-level propety: if the class is in a static context (does not have an outer pointer). This is checked when building the NestedInfo.
- outerName
-
The outerName field in the InnerClass entry, may be None.
Attributes
- Supertypes
Attributes
- Supertypes
- Known subtypes
-
class ArrayBTypeclass ClassBType
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
SHORT.type
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalstrait PrimitiveBTypetrait BTypeclass Objecttrait Matchableclass AnyShow all
- Self type
-
UNIT.type
Value members
Concrete methods
Obtain a previously constructed ClassBType for a given internal name.
Obtain a previously constructed ClassBType for a given internal name.