Scala Compiler2.12.5 < Back
 

# Packages

-  package root

  The Scala compiler and reflection APIs.

  The Scala compiler and reflection APIs.

  Definition Classes
    root
-  package scala
  Definition Classes
    root
-  package tools
  Definition Classes
    scala
-  package nsc
  Definition Classes
    tools
-  package backend
  Definition Classes
    nsc
-  package jvm
  Definition Classes
    backend
-  abstract class GenBCode extends SubComponent

  Some notes about the backend's state and its initialization and release.

  Some notes about the backend's state and its initialization and release.

  State that is used in a single run is allocated through `recordPerRunCache`, for example `ByteCodeRepository.compilingClasses` or `CallGraph.callsites`. This state is cleared at the end of each run.

  Some state needs to be re-initialized per run, for example `CoreBTypes` (computed from Symbols / Types) or the `GeneratedClassHandler` (depends on the compiler settings). This state is (re-) initialized in the `GenBCode.initialize` method. There two categories:

  1. State that is stored in a `var` field and (re-) assigned in the `initialize` method, for example the `GeneratedClassHandler` 2. State that uses the `PerRunInit` / `bTypes.perRunLazy` / `LazyVar` infrastructure, for example the types in `CoreBTypes`

  The reason to use the `LazyVar` infrastructure is to prevent eagerly computing all the state even if it's never used in a run. It can also be used to work around initialization ordering issues, just like ordinary lazy vals. For state that is known to be accessed, a `var` field is just fine.

  Typical `LazyVar` use: `lazy val state: LazyVar[T] = perRunLazy(component)(initializer)`

  - The `initializer` expression is executed lazily
  - When the initializer actually runs, it synchronizes on the `PostProcessorFrontendAccess.frontendLock`
  - The `component.initialize` method causes the `LazyVar` to be re-initialized on the next `get`
  - The `state` is itself a `lazy val` to make sure the `component.initialize` method only clears those `LazyVar`s that were ever accessed

  TODO: convert some uses of `LazyVar` to ordinary `var`.

  Definition Classes
    jvm
- BCodePhase
- StdPhase

c

scala.tools.nsc.backend.jvm.GenBCode

# BCodePhase 

###

#### class BCodePhase extends StdPhase

Source
  GenBCode.scala

Linear Supertypes
GenBCode.StdPhase, GlobalPhase, reflect.internal.Phase, AnyRef, Any
 
Ordering

1. Alphabetic
2. By Inheritance

Inherited

1. BCodePhase
2. StdPhase
3. GlobalPhase
4. Phase
5. AnyRef
6. Any

Implicitly

1. by any2stringadd
2. by StringFormat
3. by Ensuring
4. by ArrowAssoc

1. Hide All
2. Show All

Visibility

1. Public
2. All

### Instance Constructors

1.  new BCodePhase(prev: Phase)

### Type Members

1.  type Id = Int
   Definition Classes
     Phase

### Value Members

1.  final def !=(arg0: Any): Boolean
   Definition Classes
     AnyRef → Any
2.  final def ##(): Int
   Definition Classes
     AnyRef → Any
3.  def +(other: String): String
   Implicit
     This member is added by an implicit conversion from BCodePhase to any2stringadd[BCodePhase] performed by method any2stringadd in scala.Predef.
   Definition Classes
     any2stringadd
4.  def ->[B](y: B): (BCodePhase, B)
   Implicit
     This member is added by an implicit conversion from BCodePhase to ArrowAssoc[BCodePhase] performed by method ArrowAssoc in scala.Predef.
   Definition Classes
     ArrowAssoc
   Annotations
     @inline()
5.  final def ==(arg0: Any): Boolean
   Definition Classes
     AnyRef → Any
6.  def apply(unit: Global.CompilationUnit): Unit
   Definition Classes
     BCodePhase → GlobalPhase
7.  final def applyPhase(unit: Global.CompilationUnit): Unit
   Definition Classes
     GlobalPhase
8.  final def asInstanceOf[T0]: T0
   Definition Classes
     Any
9.  final val assignsFields: Boolean
   Definition Classes
     Phase
10.  def cancelled(unit: Global.CompilationUnit): Boolean

    Is current phase cancelled on this unit?

    Is current phase cancelled on this unit?

    Definition Classes
      GlobalPhase
11.  def checkable: Boolean
    Definition Classes
      Phase
12.  def clone(): AnyRef
    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @native() @throws( ... )
13.  def description: String
    Definition Classes
      BCodePhase → Phase
14.  def ensuring(cond: (BCodePhase) ⇒ Boolean, msg: ⇒ Any): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase to Ensuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
15.  def ensuring(cond: (BCodePhase) ⇒ Boolean): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase to Ensuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
16.  def ensuring(cond: Boolean, msg: ⇒ Any): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase to Ensuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
17.  def ensuring(cond: Boolean): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase to Ensuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
18.  final def eq(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
19.  def equals(other: Any): Boolean
    Definition Classes
      Phase → AnyRef → Any
20.  val erasedTypes: Boolean
    Definition Classes
      BCodePhase → Phase
21.  def finalize(): Unit
    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( classOf[java.lang.Throwable] )
22.  def flagMask: Long
    Definition Classes
      Phase
23.  final val flatClasses: Boolean
    Definition Classes
      Phase
24.  val fmask: Long
    Definition Classes
      Phase
25.  def formatted(fmtstr: String): String
    Implicit
      This member is added by an implicit conversion from BCodePhase to StringFormat[BCodePhase] performed by method StringFormat in scala.Predef.
    Definition Classes
      StringFormat
    Annotations
      @inline()
26.  final def getClass(): Class[_]
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
27.  def hasNext: Boolean
    Definition Classes
      Phase
28.  def hashCode(): Int
    Definition Classes
      Phase → AnyRef → Any
29.  val id: Id
    Definition Classes
      Phase
30.  final def isInstanceOf[T0]: Boolean
    Definition Classes
      Any
31.  def iterator: collection.Iterator[reflect.internal.Phase]
    Definition Classes
      Phase
32.  def keepsTypeParams: Boolean
    Definition Classes
      Phase
33.  def name: String
    Definition Classes
      StdPhase → Phase
34.  final def ne(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
35.  def newFlags: Long
    Definition Classes
      StdPhase → Phase
36.  def next: reflect.internal.Phase
    Definition Classes
      Phase
37.  def nextFlags: Long
    Definition Classes
      StdPhase → Phase
38.  final def notify(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
39.  final def notifyAll(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
40.  val prev: reflect.internal.Phase
    Definition Classes
      Phase
41.  final val refChecked: Boolean
    Definition Classes
      Phase
42.  def run(): Unit
    Definition Classes
      BCodePhase → GlobalPhase → Phase
43.  final val specialized: Boolean
    Definition Classes
      Phase
44.  final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
      AnyRef
45.  def toString(): String
    Definition Classes
      Phase → AnyRef → Any
46.  final def wait(): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws( ... )
47.  final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws( ... )
48.  final def wait(arg0: Long): Unit
    Definition Classes
      AnyRef
    Annotations
      @native() @throws( ... )
49.  final def withCurrentUnit(unit: Global.CompilationUnit)(task: ⇒ Unit): Unit
    Definition Classes
      GlobalPhase
50.  final def withCurrentUnitNoLog(unit: Global.CompilationUnit)(task: ⇒ Unit): Unit
    Definition Classes
      GlobalPhase
51.  def →[B](y: B): (BCodePhase, B)
    Implicit
      This member is added by an implicit conversion from BCodePhase to ArrowAssoc[BCodePhase] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
      ArrowAssoc

### Inherited from GenBCode.StdPhase

### Inherited from GlobalPhase

### Inherited from reflect.internal.Phase

### Inherited from AnyRef

### Inherited from Any

### Inherited by implicit conversion any2stringadd from BCodePhase to any2stringadd[BCodePhase]

### Inherited by implicit conversion StringFormat from BCodePhase to StringFormat[BCodePhase]

### Inherited by implicit conversion Ensuring from BCodePhase to Ensuring[BCodePhase]

### Inherited by implicit conversion ArrowAssoc from BCodePhase to ArrowAssoc[BCodePhase]

### Ungrouped