org.jikesrvm.compilers.opt.regalloc
Class LinearScan.UpdateOSRMaps

java.lang.Object
  extended by org.jikesrvm.compilers.opt.driver.CompilerPhase
      extended by org.jikesrvm.compilers.opt.regalloc.LinearScan.UpdateOSRMaps
Enclosing class:
LinearScan

public static final class LinearScan.UpdateOSRMaps
extends CompilerPhase

Update GC maps after register allocation but before inserting spill code.


Field Summary
 
Fields inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
container
 
Constructor Summary
LinearScan.UpdateOSRMaps()
           
 
Method Summary
 String getName()
           
 CompilerPhase newExecution(IR ir)
          Return this instance of this phase.
 void perform(IR ir)
          Iterate over the IR-based OSR map, and update symbolic registers with real reg number or spill locations.
 boolean printingEnabled(OptOptions options, boolean before)
          Returns true if the phase wants the IR dumped before and/or after it runs.
(package private)  void setRealPosition(IR ir, LocalRegPair tuple, Register sym_reg)
           
(package private) static void setTupleValue(LocalRegPair tuple, byte type, int value)
           
(package private) static void setTupleValue(LocalRegPair tuple, byte type, Word value)
           
 boolean shouldPerform(OptOptions options)
          This method determines if the phase should be run, based on the Options object it is passed.
 
Methods inherited from class org.jikesrvm.compilers.opt.driver.CompilerPhase
dumpIR, dumpIR, getClassConstructor, getCompilerPhaseConstructor, getCompilerPhaseConstructor, performPhase, reportAdditionalStats, setContainer, verify
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LinearScan.UpdateOSRMaps

public LinearScan.UpdateOSRMaps()
Method Detail

shouldPerform

public boolean shouldPerform(OptOptions options)
Description copied from class: CompilerPhase
This method determines if the phase should be run, based on the Options object it is passed. By default, phases are always performed. Subclasses should override this method if they only want to be performed conditionally.

Overrides:
shouldPerform in class CompilerPhase
Parameters:
options - the compiler options for the compilation
Returns:
true if the phase should be performed

newExecution

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

Overrides:
newExecution in class CompilerPhase
Parameters:
ir - not used
Returns:
this

getName

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

printingEnabled

public boolean printingEnabled(OptOptions options,
                               boolean before)
Description copied from class: CompilerPhase
Returns true if the phase wants the IR dumped before and/or after it runs. By default, printing is not enabled. Subclasses should override this method if they want to provide IR dumping.

Overrides:
printingEnabled in class CompilerPhase
Parameters:
options - the compiler options for the compilation
before - true when invoked before perform, false otherwise.
Returns:
true if the IR should be printed, false otherwise.

perform

public void perform(IR ir)
             throws OptimizingCompilerException
Iterate over the IR-based OSR map, and update symbolic registers with real reg number or spill locations. Verify there are only two types of operands: ConstantOperand RegisterOperand for integer constant, we save the value of the integer The LONG register has another half part. CodeSpill replaces any allocated symbolic register by physical registers.

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

setRealPosition

void setRealPosition(IR ir,
                     LocalRegPair tuple,
                     Register sym_reg)

setTupleValue

static void setTupleValue(LocalRegPair tuple,
                          byte type,
                          int value)

setTupleValue

static void setTupleValue(LocalRegPair tuple,
                          byte type,
                          Word value)