dotty.tools.backend.jvm

Members list

Type members

Classlikes

object AsmUtils

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
AsmUtils.type
final class BCodeAsmCommon[I <: DottyBackendInterface](val interface: I)

This trait contains code shared between GenBCode and GenASM that depends on types defined in the compiler cake (Global).

This trait contains code shared between GenBCode and GenASM that depends on types defined in the compiler cake (Global).

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
trait BCodeHelpers
class Object
trait Matchable
class Any
Show all
Known subtypes
object Impl

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object BCodeHelpers

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes

Attributes

Supertypes
trait BCodeHelpers
class Object
trait Matchable
class Any
Known subtypes

Attributes

Supertypes
trait BCodeHelpers
class Object
trait Matchable
class Any
Show all
Known subtypes
object Impl
abstract class BTypes

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.

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
Supertypes
class Object
trait Matchable
class Any
Known subtypes
Self type
object BTypes

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
BTypes.type
class BTypesFromSymbols[I <: DottyBackendInterface](val int: I, val frontendAccess: PostProcessorFrontendAccess) extends BTypes

This class mainly contains the method classBTypeFromSymbol, which extracts the necessary information from a symbol and its type to create the corresponding ClassBType. It requires access to the compiler (global parameter).

This class mainly contains the method classBTypeFromSymbol, which extracts the necessary information from a symbol and its type to create the corresponding ClassBType. It requires access to the compiler (global parameter).

Attributes

Supertypes
class BTypes
class Object
trait Matchable
class Any
class BackendUtils(val postProcessor: PostProcessor)

This component hosts tools and utilities used in the backend that require access to a BTypes instance.

This component hosts tools and utilities used in the backend that require access to a BTypes instance.

Attributes

Supertypes
class Object
trait Matchable
class Any

Attributes

Supertypes
class Object
trait Matchable
class Any
class CodeGen(val int: DottyBackendInterface, val primitives: DottyPrimitives)(val bTypes: BTypesFromSymbols[int.type])

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Collect all super calls to trait members.

Collect all super calls to trait members.

For each super reference to trait member, register a call from the current class to the owner of the referenced member.

This information is used to know if it is safe to remove a redundant mixin class. A redundant mixin class is one that is implemented by another mixin class. As the methods in a redundant mixin class could be implemented with a default abstract method, the redundant mixin class could be required as a parent by the JVM.

Attributes

Companion
object
Supertypes
class MiniPhase
class Phase
class Object
trait Matchable
class Any

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
abstract class CoreBTypes

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes

Attributes

Supertypes
class CoreBTypes
class Object
trait Matchable
class Any
class DottyBackendInterface(val superCallsMap: ReadOnlyMap[Symbol, Set[ClassSymbol]])(using val ctx: Context)

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
class DottyPrimitives(ictx: Context)

Scala primitive operations are represented as methods in Any and AnyVal subclasses. Here we demultiplex them by providing a mapping from their symbols to integers. Different methods exist for different value types, but with the same meaning (like plus, minus, etc.). They will all be mapped to the same int.

Scala primitive operations are represented as methods in Any and AnyVal subclasses. Here we demultiplex them by providing a mapping from their symbols to integers. Different methods exist for different value types, but with the same meaning (like plus, minus, etc.). They will all be mapped to the same int.

Note: The three equal methods have the following semantics:

  • "==" checks for null, and if non-null, calls java.lang.Object.equals (class: Any; modifier: final). Primitive: EQ
  • "eq" usual reference comparison (class: AnyRef; modifier: final). Primitive: ID
  • "equals" user-defined equality (Java semantics) (class: Object; modifier: none). Primitive: EQUALS

Inspired from the scalac compiler.

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
class JSPrimitives
class GenBCode extends Phase

Attributes

Companion
object
Supertypes
class Phase
class Object
trait Matchable
class Any
Self type
object GenBCode

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
GenBCode.type
object GenBCodeOps extends GenBCodeOps

Attributes

Companion
class
Supertypes
class GenBCodeOps
class Object
trait Matchable
class Any
Self type
class GenBCodeOps

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object GenBCodeOps
case class GeneratedClass(classNode: ClassNode, sourceClassName: String, position: SourcePosition, isArtifact: Boolean, onFileCreated: AbstractFile => Unit)

The result of code generation. isArtifact is true for mirror.

The result of code generation. isArtifact is true for mirror.

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class GeneratedCompilationUnit(sourceFile: AbstractFile, classes: List[GeneratedClass], tasty: List[GeneratedTasty])(using ctx: Context)

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class GeneratedTasty(classNode: ClassNode, tastyGen: () => Array[Byte])

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
abstract class GenericSignatureVisitor(nestedOnly: Boolean)

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
abstract class NestedClassesCollector[T](nestedOnly: Boolean) extends GenericSignatureVisitor

Attributes

Supertypes
class Object
trait Matchable
class Any
class PostProcessor(val frontendAccess: PostProcessorFrontendAccess, val bTypes: BTypes)

Implements late stages of the backend that don't depend on a Global instance, i.e., optimizations, post-processing and classfile serialization and writing.

Implements late stages of the backend that don't depend on a Global instance, i.e., optimizations, post-processing and classfile serialization and writing.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
sealed abstract class PostProcessorFrontendAccess(backendInterface: DottyBackendInterface)

Functionality needed in the post-processor whose implementation depends on the compiler frontend. All methods are synchronized.

Functionality needed in the post-processor whose implementation depends on the compiler frontend. All methods are synchronized.

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class Impl[I]

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
object Primitives

Attributes

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