public final class Interval extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
Interval.RegisterPriority
Constants denoting the register usage priority for an interval.
|
static class |
Interval.SpillState
Constants used in optimization of spilling of an interval.
|
static class |
Interval.UsePosList
List of use positions.
|
| Modifier and Type | Field and Description |
|---|---|
protected static int |
END_MARKER_OPERAND_NUMBER |
AllocatableValue |
operand
The register or variable for this interval
prior to register allocation.
|
int |
operandNumber
The operand number for this interval's operand.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addMaterializationValue(Constant value)
Sets the value which is used for re-materialization.
|
void |
addRange(int from,
int to) |
void |
addUsePos(int pos,
Interval.RegisterPriority registerPriority,
boolean detailedAsserts) |
boolean |
alwaysInMemory() |
boolean |
canMaterialize()
Returns true if this interval can be re-materialized when spilled.
|
Range |
first() |
int |
from() |
Constant |
getMaterializedValue()
Returns a value which can be moved to a register instead of a restore-move from stack.
|
boolean |
isEndMarker()
Returns true is this is the sentinel interval that denotes the end of an interval list.
|
boolean |
isSplitParent() |
<any> |
kind() |
AllocatableValue |
location()
Gets the register or spill slot assigned to
this interval.
|
Interval |
locationHint(boolean searchSplitChild) |
String |
logString(LinearScan allocator)
Gets a single line string for logging the details of this interval to a log stream.
|
void |
setKind(<any> kind) |
void |
setLocationHint(Interval interval) |
void |
setSpillDefinitionPos(int pos) |
void |
setSpillSlot(AllocatableValue slot) |
void |
setSpillState(Interval.SpillState state) |
int |
spillDefinitionPos() |
AllocatableValue |
spillSlot()
Gets the canonical spill slot for this interval.
|
Interval.SpillState |
spillState() |
Interval |
splitParent()
Gets the split parent for this interval.
|
String |
toString() |
Interval.UsePosList |
usePosList()
Gets the use position information for this interval.
|
protected static final int END_MARKER_OPERAND_NUMBER
public final AllocatableValue operand
public final int operandNumber
public boolean isEndMarker()
public AllocatableValue location()
public <any> kind()
public void setKind(<any> kind)
public Range first()
public int from()
public void setLocationHint(Interval interval)
public boolean isSplitParent()
public Interval splitParent()
public AllocatableValue spillSlot()
public void setSpillSlot(AllocatableValue slot)
public Interval.SpillState spillState()
public int spillDefinitionPos()
public void setSpillState(Interval.SpillState state)
public void setSpillDefinitionPos(int pos)
public boolean alwaysInMemory()
public void addMaterializationValue(Constant value)
public boolean canMaterialize()
Interval.materializedValue is restored.public Constant getMaterializedValue()
public Interval locationHint(boolean searchSplitChild)
public void addUsePos(int pos,
Interval.RegisterPriority registerPriority,
boolean detailedAsserts)
public void addRange(int from,
int to)
public Interval.UsePosList usePosList()
public String logString(LinearScan allocator)
allocator - the register allocator context