|
Class Summary |
| EnterSSA |
This compiler phase constructs SSA form. |
| GCP |
Global code placement comes in two flavours. |
| GCP.GCPFinalization |
This class sets up the IR state prior to entering SSA for GCP |
| GCP.GCPPreparation |
This class sets up the IR state prior to entering SSA for GCP |
| GlobalCSE |
This class provides global common sub expression elimination. |
| GlobalValueNumber |
This class implements global value numbering
ala Alpern, Wegman and Zadeck, PoPL 88. |
| GlobalValueNumberState |
This class holds the results of global value numbering. |
| GVCongruenceClass |
This class represents a congruence class for
global value numbering. |
| HeapVariable<T> |
An HeapVariable represents a heap variable for heap array SSA form |
| IndexPropagation |
IndexPropagation.java
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. |
| IndexPropagation.ArrayCell |
An ArrayCell is a lattice cell for the index propagation
problem, used in redundant load elimination for one-dimensional arrays. |
| IndexPropagation.ObjectCell |
An ObjectCell is a lattice cell for the index propagation
problem, used in redundant load elimination for fields. |
| IndexPropagationSystem |
Represents a set of dataflow equations used to solve the
index propagation problem. |
| IndexPropagationSystem.MeetOperator |
Represents a MEET function (intersection) over Cells. |
| IndexPropagationSystem.UpdateUseArrayOperator |
Represents an UPDATE_USE function over two ArrayCells. |
| IndexPropagationSystem.UpdateUseObjectOperator |
Represents an UPDATE_USE function over two ObjectCells. |
| LeaveSSA |
This compiler phase translates out of SSA form. |
| LeaveSSA.Copy |
An instance of this class represents a pending copy instruction
to be inserted. |
| LeaveSSA.VariableStacks |
This class provides an abstraction over stacks of names
for registers. |
| LICM |
This class does the job. |
| LiveRangeSplitting |
Perform live-range splitting. |
| LiveRangeSplitting.LiveRangeSplittingPhase |
|
| LiveRangeSplitting.LiveRangeSplittingPhase.BasicBlockPair |
A utility class to represent an edge in the CFG. |
| LiveRangeSplitting.RenamePreparation |
This class sets up the IR state prior to entering SSA. |
| LoadElimination |
This class implements the redundant load elimination by
Fink, Knobe && Sarkar. |
| LoadElimination.GVNPreparation |
This class sets up the IR state prior to entering SSA for GVN. |
| LoadElimination.LoadEliminationPreparation |
This class sets up the IR state prior to entering SSA for load
elimination |
| LoadElimination.LoadEliminator |
|
| LoadElimination.UseRecord |
|
| LoadElimination.UseRecordSet |
|
| LoopVersioning |
This optimisation works from the outer most loop inward, optimising
loops that conform to being regular AnnotatedLSTNodes. |
| PiNodes |
This pass inserts PI nodes (Effectively copies)
on branch edges, to introduce new names for analysis |
| RedundantBranchElimination |
Redundant branch elimination based on SSA form, global value numbers,
and dominance relationships. |
| RedundantBranchElimination.EnsureSSA |
|
| RedundantBranchElimination.RBE |
|
| SSA |
This module holds utility functions for SSA form. |
| SSADictionary |
An SSADictionary structure holds lookaside
information regarding Heap Array SSA form for an IR. |
| SSADictionary.AllInstructionEnumeration |
This class implements an Enumeration over all
instructions for a basic block. |
| SSADictionary.HeapKey<T> |
This class represents the name of a heap variable in the heap array
SSA form. |
| SSAOptions |
This module defines parameters to the SSA construction process. |
| SSATuneUp |
This phase puts the IR in SSA form and performs a set of simple
optimizations to clean up. |
| SSATuneUp.FoldingDriver |
This class drives expression folding. |
| SSATuneUp.TuneUpPreparation |
This class sets up the IR state prior to entering SSA. |
| UniformlyGeneratedGVN |
This class implements index equivalence via global value numbering
and 'uniformly generated expressions'. |
| ValueGraph |
This class implements the value graph used in global value numbering
a la Alpern, Wegman and Zadeck. |
| ValueGraphEdge |
This class implements an edge in the value graph used in global value
numbering
ala Alpern, Wegman and Zadeck. |
| ValueGraphParamLabel |
Represent a value that is a parameter |
| ValueGraphVertex |
This class implements a vertex in the value graph used in global
value numbering
ala Alpern, Wegman and Zadeck. |
| ValueNumberPair |
utility class: represents a pair of value numbers. |