Package | Description |
---|---|
org.jikesrvm.adaptive.recompilation.instrumentation | |
org.jikesrvm.compilers.opt | |
org.jikesrvm.compilers.opt.bc2ir |
Provides classes that implement the transformation from bytecode to the
high-level intermediate representation (HIR).
|
org.jikesrvm.compilers.opt.controlflow | |
org.jikesrvm.compilers.opt.driver | |
org.jikesrvm.compilers.opt.escape | |
org.jikesrvm.compilers.opt.hir2lir | |
org.jikesrvm.compilers.opt.lir2mir |
Provides classes that implement the transition from low-level IR to
machine-specific IR.
|
org.jikesrvm.compilers.opt.lir2mir.ia32 |
Provides classes that implement the IA32-specific parts
of the transition from low-level IR to machine-specific IR.
|
org.jikesrvm.compilers.opt.liveness | |
org.jikesrvm.compilers.opt.mir2mc | |
org.jikesrvm.compilers.opt.regalloc | |
org.jikesrvm.compilers.opt.regalloc.ia32 | |
org.jikesrvm.compilers.opt.ssa |
SSA implementation (disabled because of bugs, see entry in issue tracker).
|
org.jikesrvm.osr |
Modifier and Type | Class and Description |
---|---|
class |
InsertInstructionCounters
The following OPT phase inserts counters on all instructions in the
IR.
|
class |
InsertMethodInvocationCounter
An CompilerPhase that inserts a method invocation counter on the first
basic block of the method.
|
class |
InsertYieldpointCounters
An opt compiler phase that inserts yieldpoint counters.
|
class |
InstrumentationSamplingFramework
Transforms the method so that instrumentation is sampled, rather
than executed exhaustively.
|
class |
LowerInstrumentation
This phase takes converts "instrumentation instructions" that were
inserted by previous instrumentation phases and "lowers" them,
converting them to the actual instructions that perform the
instrumentation.
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
InstrumentationSamplingFramework.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
LowerInstrumentation.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
InsertInstructionCounters.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
InsertMethodInvocationCounter.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
InsertYieldpointCounters.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
InstrumentationSamplingFramework.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
class |
AdjustBranchProbabilities
This pass adjusts branch probabilities derived from static estimates
to account for blocks that are statically guessed to be infrequent.
|
class |
FieldAnalysis
Flow-insensitive, context-insensitive, interprocedural analysis
of fields.
|
class |
LocalCastOptimization
Perform simple peephole optimizations to reduce the overhead of
checking casts.
|
class |
LocalConstantProp
Perform local constant propagation for a factored basic block.
|
class |
LocalCopyProp
Perform local copy propagation for a factored basic block.
|
class |
LocalCSE
Perform local common-subexpression elimination for a factored basic
block.
|
class |
MutateSplits
Change SPLIT operations inserting for live range splitting into Moves.
|
class |
NullCheckCombining
This module performs two tasks:
(1) When possible, it folds null checks into the first load/store
that is being guarded by the null check
(2) It removes all validation registers from the IR
Doing (1) more or less implies either (a) doing (2) or
(b) making large changes to the MIR operator set such that
all load/stores produce validation results.
|
class |
Simple
Simple flow-insensitive optimizations.
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
Simple.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
LocalCSE.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
MutateSplits.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
LocalCastOptimization.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
AdjustBranchProbabilities.newExecution(IR ir) |
CompilerPhase |
LocalCopyProp.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
FieldAnalysis.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
LocalConstantProp.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
NullCheckCombining.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
Simple.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
LocalCSE.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
class |
ConvertBCtoHIR
Translate from bytecodes to HIR
|
class |
OsrPointConstructor
A phase in the OPT compiler for construction OsrPoint instructions
after inlining.
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
OsrPointConstructor.constructor |
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
ConvertBCtoHIR.newExecution(IR ir) |
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
OsrPointConstructor.getClassConstructor() |
Modifier and Type | Class and Description |
---|---|
class |
BranchOptimizationDriver
IR level independent driver for
simple peephole optimizations of branches.
|
class |
BranchOptimizations
Perform simple peephole optimizations for branches.
|
class |
BuildLST
A compiler phase to construct the loop structure tree (LST).
|
class |
CFGTransformations
This Phase supports
transforming while into until loops,
elimination of critical edges,
|
class |
DominanceFrontier
Calculate dominance frontier for a set of basic blocks.
|
class |
DominatorsPhase
Driver routine for dominator computation.
|
class |
DominatorTreePhase
Driver routine for dominator tree computation
|
class |
EstimateBlockFrequencies
Derive relative basic block execution frequencies from branch probabilities.
|
class |
LoopAnalysis
The driver that creates an annotated
AnnotatedLSTGraph . |
class |
LoopUnrolling |
class |
MIRBranchOptimizations
Perform simple peephole optimizations for MIR branches.
|
class |
PostDominatorsPhase
Driver routine for post-dominator computation.
|
class |
ReorderingPhase
Reorder code layout of basic blocks for improved I-cache locality and
branch prediction.
|
class |
StaticSplitting
Static splitting based on very simple hints left by
guarded inlining (off blocks marked as infrequent)
and semantic knowledge of tests.
|
class |
TailRecursionElimination
Transform tail recursive calls into loops.
|
class |
YieldPoints
This class inserts yield points in
1) a method's prologue
2) loop headers
3) (optionally) method exits (epilogue, athrow)
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
LoopUnrolling.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
DominatorsPhase.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
EstimateBlockFrequencies.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
TailRecursionElimination.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
YieldPoints.newExecution(IR ir)
This phase contains no per-compilation instance fields.
|
CompilerPhase |
StaticSplitting.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
BuildLST.newExecution(IR ir)
This phase contains no per-compilation instance fields.
|
CompilerPhase |
TailRecursionElimination.newExecution(IR ir) |
CompilerPhase |
DominanceFrontier.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
BranchOptimizationDriver.newExecution(IR ir)
This phase contains no per-compilation instance fields.
|
CompilerPhase |
ReorderingPhase.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
CFGTransformations.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
LoopUnrolling.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
DominatorsPhase.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
EstimateBlockFrequencies.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
TailRecursionElimination.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
class |
IRPrinter
A trivial phase that can be inserted to dump the IR.
|
Modifier and Type | Field and Description |
---|---|
private CompilerPhase |
OptimizationPlanAtomicElement.myPhase
The phase to be performed.
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
IRPrinter.newExecution(IR ir)
Return this instance of this phase
|
CompilerPhase |
CompilerPhase.newExecution(IR ir)
This method is called immediately before performPhase.
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
CompilerPhase.getClassConstructor()
Get a constructor object for this compiler phase
|
protected static Constructor<CompilerPhase> |
CompilerPhase.getCompilerPhaseConstructor(Class<? extends CompilerPhase> klass)
Given the name of a compiler phase return the default (no
argument) constructor for it.
|
protected static Constructor<CompilerPhase> |
CompilerPhase.getCompilerPhaseConstructor(Class<? extends CompilerPhase> phaseType,
Class<?>[] initTypes)
Given the name of a compiler phase return the default (no
argument) constructor for it.
|
Modifier and Type | Method and Description |
---|---|
protected static void |
OptimizationPlanner.addComponent(ArrayList<OptimizationPlanElement> p,
CompilerPhase e) |
Modifier and Type | Method and Description |
---|---|
protected static Constructor<CompilerPhase> |
CompilerPhase.getCompilerPhaseConstructor(Class<? extends CompilerPhase> klass)
Given the name of a compiler phase return the default (no
argument) constructor for it.
|
protected static Constructor<CompilerPhase> |
CompilerPhase.getCompilerPhaseConstructor(Class<? extends CompilerPhase> phaseType,
Class<?>[] initTypes)
Given the name of a compiler phase return the default (no
argument) constructor for it.
|
Constructor and Description |
---|
OptimizationPlanAtomicElement(CompilerPhase p) |
Modifier and Type | Class and Description |
---|---|
class |
EscapeTransformations
Transformations that use escape analysis.
|
(package private) class |
SimpleEscape
Simple flow-insensitive intra-procedural escape analysis.
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
EscapeTransformations.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
SimpleEscape.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Class and Description |
---|---|
class |
ConvertHIRtoLIR
Convert an IR object from HIR to LIR
|
class |
ExpandRuntimeServices
As part of the expansion of HIR into LIR, this compile phase
replaces all HIR operators that are implemented as calls to
VM service routines with CALLs to those routines.
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
ExpandRuntimeServices.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
ConvertHIRtoLIR.newExecution(IR ir) |
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
ExpandRuntimeServices.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
private static class |
ConvertLIRtoMIR.ComplexOperators
Stage 4: Handle complex operators
(those that expand to multiple basic blocks).
|
private static class |
ConvertLIRtoMIR.DoBURS
Stage 3: Block by block build DepGraph and do BURS based
instruction selection.
|
private static class |
ConvertLIRtoMIR.DoLiveness |
private static class |
ConvertLIRtoMIR.InsertIMMQ_MOVForX64 |
private static class |
ConvertLIRtoMIR.NormalizeConstantsPhase
Stage 2: Normalize usage of int constants to make less work in Stage 3.
|
private static class |
ConvertLIRtoMIR.ReduceOperators
Stage 1: Reduce the LIR operator set to a core set of operators.
|
class |
SplitBasicBlock
Splits a large basic block into smaller ones with
size <=
OptOptions.L2M_MAX_BLOCK_SIZE |
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
SplitBasicBlock.newExecution(IR ir) |
CompilerPhase |
ConvertLIRtoMIR.ReduceOperators.newExecution(IR ir) |
CompilerPhase |
ConvertLIRtoMIR.NormalizeConstantsPhase.newExecution(IR ir) |
CompilerPhase |
ConvertLIRtoMIR.DoLiveness.newExecution(IR ir) |
CompilerPhase |
ConvertLIRtoMIR.DoBURS.newExecution(IR ir) |
CompilerPhase |
ConvertLIRtoMIR.ComplexOperators.newExecution(IR ir) |
CompilerPhase |
ConvertLIRtoMIR.InsertIMMQ_MOVForX64.newExecution(IR ir) |
Modifier and Type | Class and Description |
---|---|
class |
ConvertALUOperators
Reduce the number of ALU operators considered by BURS
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
ConvertALUOperators.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Class and Description |
---|---|
class |
LiveAnalysis
This class performs a flow-sensitive iterative live variable analysis.
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
LiveAnalysis.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
LiveAnalysis.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
(package private) class |
AssemblerDriver
A compiler phase that generates machine code instructions and maps.
|
(package private) class |
FinalMIRExpansionDriver
A compiler phase that drives final MIR expansion.
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
AssemblerDriver.newExecution(IR ir) |
CompilerPhase |
FinalMIRExpansionDriver.newExecution(IR ir) |
Modifier and Type | Class and Description |
---|---|
class |
CoalesceMoves
Coalesce registers in move instructions where possible.
|
class |
ExpandCallingConvention
Phase for expanding the calling convention
|
class |
IntervalAnalysis
phase to compute linear scan intervals.
|
class |
LinearScanPhase |
class |
PrologueEpilogueCreator
This class is a phase that inserts prologues and epilogues
|
private static class |
RegisterAllocator.RegisterAllocPreparation |
(package private) class |
RegisterRestrictionsPhase
A phase to compute register restrictions.
|
(package private) class |
SpillCode
Insert Spill Code after register assignment.
|
(package private) class |
UpdateGCMaps1
Update GC maps after register allocation but before inserting spill
code.
|
(package private) class |
UpdateGCMaps2
Update GC Maps again, to account for changes induced by spill code.
|
class |
UpdateOSRMaps
Update GC maps after register allocation but before inserting spill
code.
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
LinearScanPhase.constructor |
private static Constructor<CompilerPhase> |
IntervalAnalysis.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
UpdateOSRMaps.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
SpillCode.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
PrologueEpilogueCreator.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
CoalesceMoves.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
UpdateGCMaps2.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
RegisterAllocator.RegisterAllocPreparation.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
ExpandCallingConvention.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
RegisterRestrictionsPhase.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
UpdateGCMaps1.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
LinearScanPhase.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
IntervalAnalysis.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
class |
ExpandFPRStackConvention
At the beginning of each basic block, the register allocator expects
all floating-point stack locations to be available, and named
FPi, 0 < i < 7
However, BURS may consume FP stack locations by inserting instructions
that push or pop the floating-point stack.
|
class |
MIRSplitRanges
This class splits live ranges for certain special cases to ensure
correctness during IA32 register allocation.
|
class |
RewriteMemoryOperandsWithOversizedDisplacements
Processes memory operands with a displacement that doesn't fit
into 32 bits.
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
RewriteMemoryOperandsWithOversizedDisplacements.newExecution(IR ir) |
CompilerPhase |
MIRSplitRanges.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
ExpandFPRStackConvention.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Class and Description |
---|---|
class |
EnterSSA
This compiler phase constructs SSA form.
|
private static class |
GCP.GCPFinalization
This class sets up the IR state prior to entering SSA for GCP
|
private static class |
GCP.GCPPreparation
This class sets up the IR state prior to entering SSA for GCP
|
class |
GlobalCSE
This class provides global common sub expression elimination.
|
(package private) class |
GlobalValueNumber
This class implements global value numbering
ala Alpern, Wegman and Zadeck, PoPL 88.
|
class |
IndexPropagation
Perform index propagation (see Fink, Knobe & Sarkar, SAS 2000)
This analysis computes for each Array SSA variable A,
the set of value numbers V(k) such that location
A[k] is "available" at def A, and thus at all uses of A
We formulate this as a data flow problem as described in the paper.
|
class |
LeaveSSA
This compiler phase translates out of SSA form.
|
class |
LICM
This class does loop invariant code movement.
|
private static class |
LiveRangeSplitting.LiveRangeSplittingPhase |
private static class |
LiveRangeSplitting.RenamePreparation
This class sets up the IR state prior to entering SSA.
|
static class |
LoadElimination.GVNPreparation
This class sets up the IR state prior to entering SSA for GVN.
|
static class |
LoadElimination.LoadEliminationPreparation
This class sets up the IR state prior to entering SSA for load
elimination
|
(package private) static class |
LoadElimination.LoadEliminator |
class |
LoopVersioning
This optimisation works from the outer most loop inward, optimising
loops that conform to being regular
AnnotatedLSTNode s. |
class |
PiNodes
This pass inserts PI nodes (Effectively copies)
on branch edges, to introduce new names for analysis
|
private static class |
RedundantBranchElimination.EnsureSSA |
private static class |
RedundantBranchElimination.RBE |
private static class |
SSATuneUp.FoldingDriver
This class drives expression folding.
|
static class |
SSATuneUp.TuneUpPreparation
This class sets up the IR state prior to entering SSA.
|
Modifier and Type | Field and Description |
---|---|
private CompilerPhase |
SSATuneUp.TuneUpPreparation.dominators
Compiler phases necessary to re-build dominators and dominance
frontier
|
private CompilerPhase |
LoopVersioning.domPhase |
private CompilerPhase |
LoopVersioning.enterSSA
Compiler phases called from this one
|
private CompilerPhase |
SSATuneUp.TuneUpPreparation.frontier
Compiler phases necessary to re-build dominators and dominance
frontier
|
private CompilerPhase |
LoopVersioning.leaveSSA
Compiler phases called from this one
|
Modifier and Type | Field and Description |
---|---|
private static Constructor<CompilerPhase> |
GlobalCSE.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
LoadElimination.LoadEliminationPreparation.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
LoadElimination.GVNPreparation.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
PiNodes.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
EnterSSA.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
IndexPropagation.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
LeaveSSA.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
LICM.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
LoopVersioning.constructor
Constructor for this compiler phase
|
private static Constructor<CompilerPhase> |
SSATuneUp.TuneUpPreparation.constructor
Constructor for this compiler phase
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
RedundantBranchElimination.EnsureSSA.newExecution(IR ir) |
CompilerPhase |
RedundantBranchElimination.RBE.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
LoadElimination.LoadEliminator.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
GCP.GCPPreparation.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
GCP.GCPFinalization.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
GlobalValueNumber.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
LiveRangeSplitting.LiveRangeSplittingPhase.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
LiveRangeSplitting.RenamePreparation.newExecution(IR ir)
Return this instance of this phase.
|
CompilerPhase |
SSATuneUp.FoldingDriver.newExecution(IR ir)
Return this instance of this phase.
|
Modifier and Type | Method and Description |
---|---|
Constructor<CompilerPhase> |
GlobalCSE.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
LoadElimination.LoadEliminationPreparation.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
LoadElimination.GVNPreparation.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
PiNodes.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
EnterSSA.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
IndexPropagation.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
LeaveSSA.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
LICM.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
LoopVersioning.getClassConstructor()
Get a constructor object for this compiler phase
|
Constructor<CompilerPhase> |
SSATuneUp.TuneUpPreparation.getClassConstructor()
Get a constructor object for this compiler phase
|
Modifier and Type | Class and Description |
---|---|
class |
AdjustBCIndexes
OSR_AdjustBCIndex is an optimizing phase performed on HIR.
|
Modifier and Type | Method and Description |
---|---|
CompilerPhase |
AdjustBCIndexes.newExecution(IR ir)
Return this instance of this phase.
|