Package org.jikesrvm.compilers.opt.controlflow

Class Summary
AnnotatedLSTGraph Extends the functionality of a LSTGraph so that it comprises AnnotatedLSTNodes 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 BasicBlocks.
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)
 

Exception Summary
AnnotatedLSTNode.NonRegularLoopException Exception thrown when a non-regular loop is encountered