JVM code generation phase
builder of bean info classes
basic functionality for class file building
functionality for building plain and mirror classes
builder of mirror classes
builder of plain classes
A standard phase template
cls.getName
The global environment; overridden by instantiation in Global.
The global environment; overridden by instantiation in Global.
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
Given an internal name (eg "java/lang/Integer") returns the class symbol for it.
Given an internal name (eg "java/lang/Integer") returns the class symbol for it.
Better not to need this method (an example where control flow arrives here is welcome). This method is invoked only upon both (1) and (2) below happening: (1) providing an asm.ClassWriter with an internal name by other means than javaName() (2) forgetting to track the corresponding class-symbol in reverseJavaName.
(The first item is already unlikely because we rely on javaName() to do the bookkeeping for entries that should go in innerClassBuffer.)
(We could do completely without this method at the expense of computing stack-map-frames ourselves and invoking visitFrame(), but that would require another pass over all instructions.)
Right now I can't think of any invocation of visitSomething() on MethodVisitor where we hand an internal name not backed by a reverseJavaName. However, I'm leaving this note just in case any such oversight is discovered.
Internal flag to tell external from internal phases
Internal flag to tell external from internal phases
Return the Java modifiers for the given symbol.
Return the Java modifiers for the given symbol. Java modifiers for classes:
(*) protected cannot be used, since inner classes 'see' protected members, and they would fail verification after lifted.
A namespace for utilities to normalize the code of an IMethod, over and beyond what IMethod.
Create a new phase
Create a new phase
The phase corresponding to this subcomponent in the current compiler run
The phase corresponding to this subcomponent in the current compiler run
The name of the phase
The name of the phase
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
List of phase names, this phase should run after
List of phase names, this phase should run after
List of phase names, this phase should run before
List of phase names, this phase should run before
Phase name this phase will attach itself to, not allowing any phase to come between it and the phase name declared
Phase name this phase will attach itself to, not allowing any phase to come between it and the phase name declared