org.jikesrvm.compilers.opt.controlflow
Class BuildLST

java.lang.Object
  extended by org.jikesrvm.compilers.opt.driver.CompilerPhase
      extended by org.jikesrvm.compilers.opt.controlflow.BuildLST

public class BuildLST
extends CompilerPhase

A compiler phase to construct the loop structure tree (LST). The steps are (1) construct approximate dominators (ie blocks are not unfactored) and (2) build the LST.

See Also:
LTDominators, LSTGraph

Field Summary
 
Fields inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
container
 
Constructor Summary
BuildLST()
           
 
Method Summary
 String getName()
           
 CompilerPhase newExecution(IR ir)
          This phase contains no per-compilation instance fields.
 void perform(IR ir)
          Build the Loop Structure Tree (LST) for the given IR.
 
Methods inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
dumpIR, dumpIR, getClassConstructor, getCompilerPhaseConstructor, getCompilerPhaseConstructor, performPhase, printingEnabled, reportAdditionalStats, setContainer, shouldPerform, verify
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BuildLST

public BuildLST()
Method Detail

getName

public String getName()
Specified by:
getName in class CompilerPhase
Returns:
a String which is the name of the phase.

newExecution

public final CompilerPhase newExecution(IR ir)
This phase contains no per-compilation instance fields.

Overrides:
newExecution in class CompilerPhase
Parameters:
ir - the IR that is about to be passed to performPhase
Returns:
an opt compiler phase on which performPhase may be invoked.

perform

public void perform(IR ir)
Build the Loop Structure Tree (LST) for the given IR. NOTE: CFG must be reducible. TODO: Detect irreducible CFG, apply node splitting and then construct LST.

Specified by:
perform in class CompilerPhase
Parameters:
ir - the IR on which to apply the phase