org.jikesrvm.compilers.opt.lir2mir
Class SplitBasicBlock

java.lang.Object
  extended by org.jikesrvm.compilers.opt.driver.CompilerPhase
      extended by org.jikesrvm.compilers.opt.lir2mir.SplitBasicBlock

public final class SplitBasicBlock
extends CompilerPhase

Splits a large basic block into smaller ones with size <= OptOptions.L2M_MAX_BLOCK_SIZE


Field Summary
 
Fields inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
container
 
Constructor Summary
SplitBasicBlock()
           
 
Method Summary
 String getName()
           
 CompilerPhase newExecution(IR ir)
          This method is called immediately before performPhase.
 void perform(IR ir)
          This is the method that actually does the work of the phase.
(package private)  BasicBlock splitEachBlock(BasicBlock bb, IR ir)
          Splits basic block
 
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

SplitBasicBlock

public SplitBasicBlock()
Method Detail

getName

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

newExecution

public CompilerPhase newExecution(IR ir)
Description copied from class: CompilerPhase
This method is called immediately before performPhase. Phases that do not need to create a new instance for each execution may override this method to return this, but this must be done carefully! Classes that don't override this method need to override getClassConstructor.

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)
Description copied from class: CompilerPhase
This is the method that actually does the work of the phase.

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

splitEachBlock

BasicBlock splitEachBlock(BasicBlock bb,
                          IR ir)
Splits basic block

Returns:
null if no splitting is done, returns the second block if splitting is done.