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

java.lang.Object
  extended by org.jikesrvm.compilers.opt.regalloc.LinearScan.SpillLocationManager
All Implemented Interfaces:
ArchitectureSpecificOpt.PhysicalRegisterConstants, PhysicalRegisterConstants, RegisterConstants
Enclosing class:
LinearScan

static class LinearScan.SpillLocationManager
extends Object
implements ArchitectureSpecificOpt.PhysicalRegisterConstants

The following class manages allocation and reuse of spill locations.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jikesrvm.ia32.RegisterConstants
RegisterConstants.FloatingPointMachineRegister, RegisterConstants.FPR, RegisterConstants.GPR, RegisterConstants.MachineRegister, RegisterConstants.MM, RegisterConstants.XMM
 
Field Summary
(package private)  HashSet<LinearScan.SpillLocationInterval> freeIntervals
          Set of spill locations which were previously allocated, but may be free since the assigned register is no longer live.
private  IR ir
          The governing IR
 
Fields inherited from interface org.jikesrvm.compilers.opt.regalloc.ia32.PhysicalRegisterConstants
AF, C0, C1, C2, C3, CF, CONDITION_VALUE, DOUBLE_REG, DOUBLE_VALUE, FIRST_DOUBLE, FIRST_INT, FIRST_SPECIAL, FLOAT_VALUE, INT_REG, INT_VALUE, NUM_SPECIALS, NUMBER_TYPE, OF, PF, SF, SPECIAL_REG, ST0, ST1, ZF
 
Fields inherited from interface org.jikesrvm.ia32.RegisterConstants
ALL_FPRS, ALL_GPRS, EAX, EBP, EBX, ECX, EDI, EDX, ESI, ESP, FP0, FP1, FP2, FP3, FP4, FP5, FP6, FP7, INSTRUCTION_WIDTH, LG_INSTRUCTION_WIDTH, MM0, MM1, MM10, MM11, MM12, MM13, MM14, MM15, MM2, MM3, MM4, MM5, MM6, MM7, MM8, MM9, NATIVE_NONVOLATILE_FPRS, NATIVE_NONVOLATILE_GPRS, NATIVE_PARAMETER_FPRS, NATIVE_PARAMETER_GPRS, NATIVE_VOLATILE_FPRS, NATIVE_VOLATILE_GPRS, NONVOLATILE_FPRS, NONVOLATILE_GPRS, NUM_FPRS, NUM_GPRS, NUM_NONVOLATILE_FPRS, NUM_NONVOLATILE_GPRS, NUM_PARAMETER_FPRS, NUM_PARAMETER_GPRS, NUM_RETURN_FPRS, NUM_RETURN_GPRS, NUM_VOLATILE_FPRS, NUM_VOLATILE_GPRS, PARAMETER_FPRS, PARAMETER_GPRS, R0, R1, R10, R11, R12, R13, R14, R15, R2, R3, R4, R5, R6, R7, R8, R9, RETURN_FPRS, RETURN_GPRS, STACK_POINTER, THREAD_REGISTER, VOLATILE_FPRS, VOLATILE_GPRS, XMM0, XMM1, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9
 
Constructor Summary
LinearScan.SpillLocationManager(IR ir)
          Constructor.
 
Method Summary
(package private)  LinearScan.SpillLocationInterval findOrCreateSpillLocation(LinearScan.CompoundInterval ci)
          Return a spill location that is valid to hold the contents of compound interval ci.
(package private)  void freeInterval(LinearScan.SpillLocationInterval i)
          Record that a particular interval is potentially available for reuse
(package private)  LinearScan.SpillLocationInterval getSpillPreference(LinearScan.CompoundInterval ci, int spillSize)
          Given the current state of the register allocator, compute the available spill location to which ci has the highest preference.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ir

private final IR ir
The governing IR


freeIntervals

final HashSet<LinearScan.SpillLocationInterval> freeIntervals
Set of spill locations which were previously allocated, but may be free since the assigned register is no longer live.

Constructor Detail

LinearScan.SpillLocationManager

LinearScan.SpillLocationManager(IR ir)
Constructor.

Method Detail

findOrCreateSpillLocation

LinearScan.SpillLocationInterval findOrCreateSpillLocation(LinearScan.CompoundInterval ci)
Return a spill location that is valid to hold the contents of compound interval ci.


freeInterval

void freeInterval(LinearScan.SpillLocationInterval i)
Record that a particular interval is potentially available for reuse


getSpillPreference

LinearScan.SpillLocationInterval getSpillPreference(LinearScan.CompoundInterval ci,
                                                    int spillSize)
Given the current state of the register allocator, compute the available spill location to which ci has the highest preference.

Parameters:
ci - the interval to spill
spillSize - the size of spill location needed
Returns:
the interval to spill to. null if no preference found.