A standard phase template
A standard phase template
A Tracked
instance stores information about a BType.
A Tracked
instance stores information about a BType. This allows ansering type questions
without resolving to the compiler, in a thread-safe manner, in particular isSubtypeOf.
the BType described by this Tracked
the java flags for the type, computed by BCodeTypes#javaFlags
the bytecode-level superclass if any, null otherwise
the interfaces explicitly declared. Not included are those transitively
supported, but the utility method allLeafIfaces()
can be used for that.
the containing classes for a non-package-level class c
, null otherwise.
Note: the optimizer may inline anonymous closures, thus eliding those inner classes (no
physical class file is emitted for elided classes). Before committing innersChain
to
bytecode, cross-check with the list of elided classes (SI-6546).
All methods of this class can-multi-thread
TODO @lry c: ClassBType. rename to ClassBTypeInfo
The phase factory
The phase factory
The name of the phase
The name of the phase
Names of phases that must run before this phase.
Names of phases that must run before this phase.
Name of the phase that this phase must follow immediately.
Name of the phase that this phase must follow immediately.
Is this component enabled? Default is true.
Is this component enabled? Default is true.
TODO @lry should probably be a map form ClassBType to Tracked
TODO @lry should probably be a map form ClassBType to Tracked
cls.getName
SubComponent are added to a HashSet and two phases are the same if they have the same name
SubComponent are added to a HashSet and two phases are the same if they have the same name
True if this phase runs before all other phases.
True if this phase runs before all other phases. Usually, parser
.
True if this phase is not provided by a plug-in.
True if this phase is not provided by a plug-in.
Finding the least upper bound in agreement with the bytecode verifier (given two internal names handed out by ASM) Background: http://gallium.inria.fr/~xleroy/publi/bytecode-verification-JAR.pdf http://comments.gmane.org/gmane.comp.java.vm.languages/2293 https://issues.scala-lang.org/browse/SI-3872
Finding the least upper bound in agreement with the bytecode verifier (given two internal names handed out by ASM) Background: http://gallium.inria.fr/~xleroy/publi/bytecode-verification-JAR.pdf http://comments.gmane.org/gmane.comp.java.vm.languages/2293 https://issues.scala-lang.org/browse/SI-3872
can-multi-thread
The phase corresponding to this subcomponent in the current compiler run
The phase corresponding to this subcomponent in the current compiler run
New flags defined by the phase which are not valid before
New flags defined by the phase which are not valid before
New flags defined by the phase which are not valid until immediately after it
New flags defined by the phase which are not valid until immediately after it
Names of phases required by this component.
Names of phases required by this component. Default is Nil
.
Names of phases that must run after this phase.
Names of phases that must run after this phase. Default is Nil
.
Maps class symbols to their corresponding Tracked
instance.
Maps class symbols to their corresponding Tracked
instance.
True if this phase runs after all other phases.
True if this phase runs after all other phases. Usually, terminal
.