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 LazyVars that were ever accessed

    TODO: convert some uses of LazyVar to ordinary var.

    Definition Classes
    jvm
  • BCodePhase
  • StdPhase

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
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. 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. 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
    BCodePhaseGlobalPhase
  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( ... ) @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 to Ensuring[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 to Ensuring[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 to Ensuring[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 to Ensuring[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 def erasedTypes: Boolean
    Definition Classes
    Phase
  27. def erasedTypes_=(value: Boolean): Unit
    Attributes
    protected
    Definition Classes
    Phase
  28. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  29. def flagMask: Long
    Definition Classes
    Phase
  30. final val flatClasses: Boolean
    Definition Classes
    Phase
  31. val fmask: Long
    Definition Classes
    Phase
  32. 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()
  33. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  34. def hasNext: Boolean
    Definition Classes
    Phase
  35. def hashCode(): Int
    Definition Classes
    Phase → AnyRef → Any
  36. val id: Id
    Definition Classes
    Phase
  37. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  38. def iterator: collection.Iterator[reflect.internal.Phase]
    Definition Classes
    Phase
  39. def keepsTypeParams: Boolean
    Definition Classes
    Phase
  40. def name: String
    Definition Classes
    StdPhase → Phase
  41. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  42. def newFlags: Long
    Definition Classes
    StdPhase → Phase
  43. def next: reflect.internal.Phase
    Definition Classes
    Phase
  44. def nextFlags: Long
    Definition Classes
    StdPhase → Phase
  45. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  46. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  47. val prev: reflect.internal.Phase
    Definition Classes
    Phase
  48. final val refChecked: Boolean
    Definition Classes
    Phase
  49. def run(): Unit
    Definition Classes
    BCodePhaseGlobalPhase → Phase
  50. def shouldSkipThisPhaseForJava: Boolean
    Attributes
    protected
    Definition Classes
    GlobalPhase
  51. final val specialized: Boolean
    Definition Classes
    Phase
  52. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  53. def toString(): String
    Definition Classes
    Phase → AnyRef → Any
  54. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  55. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  56. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  57. final def withCurrentUnitNoLog(unit: Global.CompilationUnit)(task: ⇒ Unit): Unit
    Definition Classes
    GlobalPhase
    Annotations
    @inline()
  58. def writeOtherFiles(): Unit
  59. 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

Shadowed Implicit Value Members

  1. def <(that: BCodePhase): Boolean
    Implicit
    This member is added by an implicit conversion from BCodePhase to math.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 to math.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 to math.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 to math.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 to math.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 to math.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. final def withCurrentUnit(unit: Global.CompilationUnit)(task: ⇒ Unit): Unit
    Definition Classes
    GlobalPhase
    Annotations
    @deprecated
    Deprecated

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 from BCodePhase to math.Ordered[BCodePhase]

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