Package

scala.tools.nsc.backend

jvm

Permalink

package jvm

Content Hierarchy
Visibility
  1. Public
  2. All

Type Members

  1. final class BCodeAsmCommon[G <: Global] extends AnyRef

    Permalink

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

  2. abstract class BCodeBodyBuilder extends BCodeSkelBuilder

    Permalink
  3. abstract class BCodeHelpers extends BCodeIdiomatic with BytecodeWriters

    Permalink
  4. final class BCodeICodeCommon[G <: Global] extends AnyRef

    Permalink

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

  5. abstract class BCodeIdiomatic extends SubComponent

    Permalink
  6. abstract class BCodeSkelBuilder extends BCodeHelpers

    Permalink
  7. abstract class BCodeSyncAndTry extends BCodeBodyBuilder

    Permalink
  8. abstract class BTypes extends AnyRef

    Permalink

    The BTypes component defines The BType class hierarchy.

    The BTypes component defines The BType class hierarchy. A BType stores all type information that is required after building the ASM nodes. This includes optimizations, generation of InnerClass attributes and generation of stack map frames.

    The representation is immutable and independent of the compiler data structures, hence it can be queried by concurrent threads.

  9. class BTypesFromSymbols[G <: Global] extends BTypes

    Permalink

    This class mainly contains the method classBTypeFromSymbol, which extracts the necessary information from a symbol and its type to create the corresponding ClassBType.

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

    The mixin CoreBTypes defines core BTypes that are used in the backend. Building these BTypes uses classBTypeFromSymbol, hence requires access to the compiler (global).

    BTypesFromSymbols extends BTypes because the implementation of BTypes requires access to some of the core btypes. They are declared in BTypes as abstract members. Note that BTypes does not have access to the compiler instance.

  10. sealed abstract class BackendReporting extends AnyRef

    Permalink

    Interface for emitting inline warnings.

    Interface for emitting inline warnings. The interface is required because the implementation depends on Global, which is not available in BTypes (only in BTypesFromSymbols).

  11. final class BackendReportingImpl extends BackendReporting

    Permalink
  12. trait BytecodeWriters extends AnyRef

    Permalink

    For the last mile: turning generated bytecode in memory into something you can use.

    For the last mile: turning generated bytecode in memory into something you can use. Has implementations for writing to class files, jars, and disassembled/javap output.

  13. class CoreBTypes[BTFS <: BTypesFromSymbols[_ <: Global]] extends AnyRef

    Permalink

    Core BTypes and some other definitions.

    Core BTypes and some other definitions. The initialization of these definitions requires access to symbols / types (global).

    The symbols used to initialize the ClassBTypes may change from one compiler run to the next. To make sure the definitions are consistent with the symbols in the current run, the intializeCoreBTypes method in BTypesFromSymbols creates a new instance of CoreBTypes in each compiler run.

    The class BTypesFromSymbols does not directly reference CoreBTypes, but CoreBTypesProxy. The reason is that having a var bTypes: CoreBTypes would not allow import bTypes._. Instead, the proxy class holds a CoreBTypes in a variable field and forwards to this instance.

    The definitions in CoreBTypes need to be lazy vals to break an initialization cycle. When creating a new instance to assign to the proxy, the classBTypeFromSymbol invoked in the constructor will actually go through the proxy. The lazy vals make sure the instance is assigned in the proxy before the fields are initialized.

    Note: if we did not re-create the core BTypes on each compiler run, BType.classBTypeFromInternalNameMap could not be a perRunCache anymore: the classes defined here need to be in that map, they are added when the ClassBTypes are created. The per run cache removes them, so they would be missing in the second run.

  14. final class CoreBTypesProxy[BTFS <: BTypesFromSymbols[_ <: Global]] extends CoreBTypesProxyGlobalIndependent[BTFS]

    Permalink

    See comment in class CoreBTypes.

  15. trait CoreBTypesProxyGlobalIndependent[BTS <: BTypes] extends AnyRef

    Permalink

    This trait make some core BTypes available that don't depend on a Global instance.

    This trait make some core BTypes available that don't depend on a Global instance. Some core BTypes are required to be accessible in the BTypes trait, which does not have access to Global.

    BTypes cannot refer to CoreBTypesProxy because some of its members depend on global, for example the type Symbol in def primitiveTypeMap: Map[Symbol, PrimitiveBType]

  16. class FileConflictException extends IOException

    Permalink

    Can't output a file due to the state of the file system.

  17. abstract class GenASM extends SubComponent with BytecodeWriters

    Permalink

  18. abstract class GenBCode extends BCodeSyncAndTry

    Permalink

Value Members

  1. object AsmUtils

    Permalink
  2. object BCodeAsmCommon

    Permalink
  3. object BTypes

    Permalink
  4. object BackendReporting

    Permalink

    Utilities for error reporting.

    Utilities for error reporting.

    Defines some tools to make error reporting with Either easier. Would be subsumed by a right-biased Either in the standard library (or scalaz \/) (Validation is different, it accumulates multiple errors).

  5. object BackendStats

    Permalink
  6. object GenBCode

    Permalink
  7. package analysis

    Permalink
  8. package opt

    Permalink

Ungrouped