org.jikesrvm.compilers.opt.ssa
Class LiveRangeSplitting

java.lang.Object
  extended by org.jikesrvm.compilers.opt.driver.OptimizationPlanElement
      extended by org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement
          extended by org.jikesrvm.compilers.opt.ssa.LiveRangeSplitting

public class LiveRangeSplitting
extends OptimizationPlanCompositeElement

Perform live-range splitting.

This pass splits live ranges where they enter and exit loop bodies by normal (unexceptional) control flow. It splits a live range for register r by inserting the instruction r = SPLIT r . Then, SSA renaming will introduce a new name for r. The SPLIT operator is later turned into a MOVE during BURS.

This pass also splits live ranges on edges to and from infrequent code.

This composite phase should be performed at the end of SSA in LIR.


Nested Class Summary
private static class LiveRangeSplitting.LiveRangeSplittingPhase
           
private static class LiveRangeSplitting.RenamePreparation
          This class sets up the IR state prior to entering SSA.
 
Constructor Summary
LiveRangeSplitting()
          Build this phase as a composite of others.
 
Method Summary
 boolean shouldPerform(OptOptions options)
          Determine, possibly by consulting the passed options object, if this optimization plan element should be performed.
 
Methods inherited from class org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement
compose, elapsedTime, getName, initializeForMeasureCompilation, perform, printingEnabled, reportStats
 
Methods inherited from class org.jikesrvm.compilers.opt.driver.OptimizationPlanElement
prettyPrintTime
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LiveRangeSplitting

public LiveRangeSplitting()
Build this phase as a composite of others.

Method Detail

shouldPerform

public final boolean shouldPerform(OptOptions options)
Description copied from class: OptimizationPlanElement
Determine, possibly by consulting the passed options object, if this optimization plan element should be performed.

Overrides:
shouldPerform in class OptimizationPlanCompositeElement
Parameters:
options - The Options object for the current compilation.
Returns:
true if the plan element should be performed.