Class Summary |
AnnotatedLSTGraph |
Extends the functionality of a LSTGraph so that it comprises
AnnotatedLSTNode s which have extra information in them. |
AnnotatedLSTNode |
A node in the LST (Loop Structure Tree) with added information
on:
Whether this is a countable, affine or non-regular loop
The registers being used to hold the loop iterator
The initial loop iterator value
The terminal loop iterator value
The instruction that modifies the iterator
The phi instruction that merges the redefined iterator with its original value
The condition used to test for loop termination
The stride operand
The information is only held on regular loops. |
AnnotatedLSTNode.BBEnum |
This class implements an enumeration of BasicBlock s. |
BranchOptimizationDriver |
IR level independent driver for
simple peephole optimizations of branches. |
BranchOptimizations |
Perform simple peephole optimizations for branches. |
BranchSimplifier |
Simplify and canonicalize conditional branches with constant operands. |
BuildLST |
A compiler phase to construct the loop structure tree (LST). |
CFGTransformations |
This Phase supports
transforming while into until loops,
elimination of critical edges,
|
Diamond |
This class represents a diamond (if-then-else) structure in the
control-flow graph. |
DominanceFrontier |
Calculate dominance frontier for a set of basic blocks. |
DominatorCell |
DominatorCell represents a set of basic blocks, used in
the dataflow calculation |
DominatorInfo |
This structure holds dominator-related information for a basic block. |
DominatorOperator |
This class implements the MEET operation for the
dataflow equations for the dominator calculation. |
Dominators |
Calculate dominators for basic blocks. |
DominatorsPhase |
Driver routine for dominator computation. |
DominatorSystem |
Implementation of the dataflow equation system to calculate dominators. |
DominatorTree |
This class provides the abstraction of a dominator tree
TODO: we do not support IRs with exception handlers. |
DominatorTreeNode |
This class implements a node in the dominator tree. |
DominatorTreePhase |
Driver routine for dominator tree computation |
EstimateBlockFrequencies |
Derive relative basic block execution frequencies from branch probabilities. |
LoopAnalysis |
The driver that creates an annotated AnnotatedLSTGraph . |
LoopUnrolling |
|
LoopUnrolling.RealDefs |
|
LSTGraph |
Identify natural loops and builds the LST (Loop Structure Tree)
Note: throws an exception if an irreducible loop is found
(which I believe could only happen in Java from modified bytecode,
because Java source code is structured enough to prevent
irreducible loops.) |
LSTNode |
A node in the LST (Loop Structure Tree) |
LSTNode.Edge |
|
LTDominatorInfo |
This class holds data associated with a basic block as computed by the
Lengauer-Tarjan dominator calculation. |
LTDominators |
Calculate dominators using Langauer and Tarjan's fastest algorithm. |
MIRBranchOptimizations |
Perform simple peephole optimizations for MIR branches. |
PostDominatorsPhase |
Driver routine for post-dominator computation. |
ReorderingPhase |
Reorder code layout of basic blocks for improved I-cache locality and
branch prediction. |
ReorderingPhase.ChainInfo |
|
ReorderingPhase.Edge |
|
StaticSplitting |
Static splitting based on very simple hints left by
guarded inlining (off blocks marked as infrequent)
and semantic knowledge of tests. |
StaticSplitting.CandInfo |
|
TailRecursionElimination |
Transform tail recursive calls into loops. |
YieldPoints |
This class inserts yield points in
1) a method's prologue
2) loop headers
3) (optionally) method exits (epilogue, athrow)
|