org.jikesrvm.compilers.opt.regalloc
Class LinearScan.UpdateOSRMaps
java.lang.Object
org.jikesrvm.compilers.opt.driver.CompilerPhase
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.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LinearScan.UpdateOSRMaps
public LinearScan.UpdateOSRMaps()
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 compilationbefore
- 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)