Scala Compiler2.13.18 < 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, math.Ordered[reflect.internal.Phase], Comparable[reflect.internal.Phase], AnyRef, Any
Type Hierarchy

Ordering

1. Alphabetic
2. By Inheritance

Inherited

1. BCodePhase
2. StdPhase
3. GlobalPhase
4. Phase
5. Ordered
6. Comparable
7. AnyRef
8. Any

Implicitly

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

1. Hide All
2. Show All

Visibility

1. Public
2. Protected

### 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 toany2stringadd[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 toArrowAssoc[BCodePhase] performed by method ArrowAssoc in scala.Predef.
   Definition Classes
     ArrowAssoc
   Annotations
     @inline()
5.  def <(that: reflect.internal.Phase): Boolean
   Definition Classes
     Ordered
6.  def <=(that: reflect.internal.Phase): Boolean
   Definition Classes
     Ordered
7.  final def ==(arg0: Any): Boolean
   Definition Classes
     AnyRef → Any
8.  def >(that: reflect.internal.Phase): Boolean
   Definition Classes
     Ordered
9.  def >=(that: reflect.internal.Phase): Boolean
   Definition Classes
     Ordered
10.  def apply(unit: Global.CompilationUnit): Unit
    Definition Classes
      BCodePhase → GlobalPhase
11.  final def applyPhase(unit: Global.CompilationUnit): Unit
    Definition Classes
      GlobalPhase
12.  final def asInstanceOf[T0]: T0
    Definition Classes
      Any
13.  final val assignsFields: Boolean
    Definition Classes
      Phase
14.  def cancelled(unit: Global.CompilationUnit): Boolean

    Is current phase cancelled on this unit?

    Is current phase cancelled on this unit?

    Definition Classes
      GlobalPhase
15.  def checkable: Boolean
    Definition Classes
      Phase
16.  def clone(): AnyRef
    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.CloneNotSupportedException]) @native()
17.  def compare(that: reflect.internal.Phase): Id
    Definition Classes
      Phase → Ordered
18.  def compareTo(that: reflect.internal.Phase): Int
    Definition Classes
      Ordered → Comparable
19.  def description: String
    Definition Classes
      BCodePhase → Phase
20.  def ensuring(cond: (BCodePhase) => Boolean, msg: => Any): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase toEnsuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
21.  def ensuring(cond: (BCodePhase) => Boolean): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase toEnsuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
22.  def ensuring(cond: Boolean, msg: => Any): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase toEnsuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
23.  def ensuring(cond: Boolean): BCodePhase
    Implicit
      This member is added by an implicit conversion from BCodePhase toEnsuring[BCodePhase] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring
24.  final def eq(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
25.  def equals(other: Any): Boolean
    Definition Classes
      Phase → AnyRef → Any
26.  final val erasedTypes: Boolean
    Definition Classes
      Phase
27.  def finalize(): Unit
    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.Throwable])
28.  def flagMask: Long
    Definition Classes
      Phase
29.  final val flatClasses: Boolean
    Definition Classes
      Phase
30.  val fmask: Long
    Definition Classes
      Phase
31.  final def getClass(): Class[_ <: AnyRef]
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
32.  def hasNext: Boolean
    Definition Classes
      Phase
33.  def hashCode(): Int
    Definition Classes
      Phase → AnyRef → Any
34.  val id: Id
    Definition Classes
      Phase
35.  final def isInstanceOf[T0]: Boolean
    Definition Classes
      Any
36.  def iterator: collection.Iterator[reflect.internal.Phase]
    Definition Classes
      Phase
37.  def keepsTypeParams: Boolean
    Definition Classes
      Phase
38.  def name: String
    Definition Classes
      StdPhase → Phase
39.  final def ne(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
40.  def newFlags: Long
    Definition Classes
      StdPhase → Phase
41.  def next: reflect.internal.Phase
    Definition Classes
      Phase
42.  def nextFlags: Long
    Definition Classes
      StdPhase → Phase
43.  final def notify(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
44.  final def notifyAll(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
45.  val prev: reflect.internal.Phase
    Definition Classes
      Phase
46.  final val refChecked: Boolean
    Definition Classes
      Phase
47.  def run(): Unit
    Definition Classes
      BCodePhase → GlobalPhase → Phase
48.  def shouldSkipThisPhaseForJava: Boolean
    Attributes
      protected
    Definition Classes
      GlobalPhase
49.  final val specialized: Boolean
    Definition Classes
      Phase
50.  final def synchronized[T0](arg0: => T0): T0
    Definition Classes
      AnyRef
51.  def toString(): String
    Definition Classes
      Phase → AnyRef → Any
52.  final def wait(): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.InterruptedException])
53.  final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.InterruptedException])
54.  final def wait(arg0: Long): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws(classOf[java.lang.InterruptedException]) @native()
55.  def writeOtherFiles(): Unit

### Shadowed Implicit Value Members

1.  def <(that: BCodePhase): Boolean
   Implicit
     This member is added by an implicit conversion from BCodePhase tomath.Ordered[BCodePhase] performed by method orderingToOrdered in scala.math.Ordered.This conversion will take place only if an implicit value of type math.Ordering[BCodePhase] is in scope.
   Shadowing
     This implicitly inherited member is shadowed by one or more members in this class.
     To access this member you can use a type ascription:

         (bCodePhase: math.Ordered[BCodePhase]).<(that)

   Definition Classes
     Ordered
2.  def <=(that: BCodePhase): Boolean
   Implicit
     This member is added by an implicit conversion from BCodePhase tomath.Ordered[BCodePhase] performed by method orderingToOrdered in scala.math.Ordered.This conversion will take place only if an implicit value of type math.Ordering[BCodePhase] is in scope.
   Shadowing
     This implicitly inherited member is shadowed by one or more members in this class.
     To access this member you can use a type ascription:

         (bCodePhase: math.Ordered[BCodePhase]).<=(that)

   Definition Classes
     Ordered
3.  def >(that: BCodePhase): Boolean
   Implicit
     This member is added by an implicit conversion from BCodePhase tomath.Ordered[BCodePhase] performed by method orderingToOrdered in scala.math.Ordered.This conversion will take place only if an implicit value of type math.Ordering[BCodePhase] is in scope.
   Shadowing
     This implicitly inherited member is shadowed by one or more members in this class.
     To access this member you can use a type ascription:

         (bCodePhase: math.Ordered[BCodePhase]).>(that)

   Definition Classes
     Ordered
4.  def >=(that: BCodePhase): Boolean
   Implicit
     This member is added by an implicit conversion from BCodePhase tomath.Ordered[BCodePhase] performed by method orderingToOrdered in scala.math.Ordered.This conversion will take place only if an implicit value of type math.Ordering[BCodePhase] is in scope.
   Shadowing
     This implicitly inherited member is shadowed by one or more members in this class.
     To access this member you can use a type ascription:

         (bCodePhase: math.Ordered[BCodePhase]).>=(that)

   Definition Classes
     Ordered
5.  def compare(that: BCodePhase): Int
   Implicit
     This member is added by an implicit conversion from BCodePhase tomath.Ordered[BCodePhase] performed by method orderingToOrdered in scala.math.Ordered.This conversion will take place only if an implicit value of type math.Ordering[BCodePhase] is in scope.
   Shadowing
     This implicitly inherited member is shadowed by one or more members in this class.
     To access this member you can use a type ascription:

         (bCodePhase: math.Ordered[BCodePhase]).compare(that)

   Definition Classes
     Ordered
6.  def compareTo(that: BCodePhase): Int
   Implicit
     This member is added by an implicit conversion from BCodePhase tomath.Ordered[BCodePhase] performed by method orderingToOrdered in scala.math.Ordered.This conversion will take place only if an implicit value of type math.Ordering[BCodePhase] is in scope.
   Shadowing
     This implicitly inherited member is shadowed by one or more members in this class.
     To access this member you can use a type ascription:

         (bCodePhase: math.Ordered[BCodePhase]).compareTo(that)

   Definition Classes
     Ordered → Comparable

### Deprecated Value Members

1.  def formatted(fmtstr: String): String
   Implicit
     This member is added by an implicit conversion from BCodePhase toStringFormat[BCodePhase] performed by method StringFormat in scala.Predef.
   Definition Classes
     StringFormat
   Annotations
     @deprecated @inline()
   Deprecated

     (Since version 2.12.16) Use `formatString.format(value)` instead of `value.formatted(formatString)`, or use the `f""` string interpolator. In Java 15 and later, `formatted` resolves to the new method in String which has reversed parameters.

2.  final def withCurrentUnit(unit: Global.CompilationUnit)(task: => Unit): Unit
   Definition Classes
     GlobalPhase
   Annotations
     @deprecated
   Deprecated

     (Since version 2.13) Unused, inlined in applyPhase

3.  final def withCurrentUnitNoLog(unit: Global.CompilationUnit)(task: => Unit): Unit
   Definition Classes
     GlobalPhase
   Annotations
     @inline() @deprecated
   Deprecated

     (Since version 2.13) Unused, see withCurrentUnit

4.  def →[B](y: B): (BCodePhase, B)
   Implicit
     This member is added by an implicit conversion from BCodePhase toArrowAssoc[BCodePhase] performed by method ArrowAssoc in scala.Predef.
   Definition Classes
     ArrowAssoc
   Annotations
     @deprecated
   Deprecated

     (Since version 2.13.0) Use `->` instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.

### Inherited from GenBCode.StdPhase

### Inherited from GlobalPhase

### Inherited from reflect.internal.Phase

### Inherited from math.Ordered[reflect.internal.Phase]

### Inherited from Comparable[reflect.internal.Phase]

### Inherited from AnyRef

### Inherited from Any

### Inherited by implicit conversion orderingToOrdered fromBCodePhase to math.Ordered[BCodePhase]

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

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

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

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

### Ungrouped