|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractSet<E> java.util.TreeSet<LinearScan.BasicInterval> org.jikesrvm.compilers.opt.regalloc.LinearScan.IntervalSet org.jikesrvm.compilers.opt.regalloc.LinearScan.IncreasingStartIntervalSet org.jikesrvm.compilers.opt.regalloc.LinearScan.CompoundInterval
static class LinearScan.CompoundInterval
Implements a live interval with holes; ie; a list of basic live intervals.
Field Summary | |
---|---|
private boolean |
_infrequent
Is this compound interval fully contained in infrequent code? |
private Register |
reg
The register this compound interval represents |
(package private) static long |
serialVersionUID
Support for Set serialization |
private LinearScan.SpillLocationInterval |
spillInterval
A spill location assigned for this interval. |
Fields inherited from class org.jikesrvm.compilers.opt.regalloc.LinearScan.IncreasingStartIntervalSet |
---|
c |
Constructor Summary | |
---|---|
LinearScan.CompoundInterval(int dfnBegin,
int dfnEnd,
Register register)
Create a new compound interval of a single Basic interval |
|
LinearScan.CompoundInterval(LinearScan.BasicInterval i,
Register register)
Create a new compound interval of a single Basic interval |
|
LinearScan.CompoundInterval(Register r)
Dangerous constructor: use with care. |
Method Summary | |
---|---|
(package private) void |
addNonIntersectingInterval(LinearScan.CompoundInterval i,
LinearScan.BasicInterval stop)
Merge this interval with another, non-intersecting interval. |
(package private) LinearScan.BasicInterval |
addRange(LiveIntervalElement live,
BasicBlock bb)
Add a new live range to this compound interval. |
(package private) void |
assign(Register r)
Assign this compound interval to a physical register. |
(package private) LinearScan.CompoundInterval |
copy(Register r)
Copy the ranges into a new interval associated with a register r. |
(package private) LinearScan.CompoundInterval |
copy(Register r,
LinearScan.BasicInterval stop)
Copy the ranges into a new interval associated with a register r. |
(package private) Register |
getAssignment()
Get the physical register this interval is assigned to. null if none assigned. |
(package private) LinearScan.BasicInterval |
getBasicInterval(Instruction s)
Return the first basic interval that contains a given instruction. |
(package private) LinearScan.BasicInterval |
getBasicInterval(int n)
Return the first basic interval that contains the given instruction. |
(package private) int |
getLowerBound()
Return the lowest DFN in this compound interval. |
(package private) Register |
getRegister()
Return the register this interval represents |
(package private) LinearScan.SpillLocationInterval |
getSpillInterval()
|
(package private) int |
getUpperBound()
Return the highest DFN in this compound interval. |
(package private) SortedSet<LinearScan.BasicInterval> |
headSetInclusive(int upperBound)
Compute the headSet() [from java.util.SortedSet] but include all elements less than upperBound inclusive |
(package private) SortedSet<LinearScan.BasicInterval> |
headSetInclusive(LinearScan.BasicInterval upperBound)
Compute the headSet() [from java.util.SortedSet] but include all elements less than upperBound inclusive |
(package private) boolean |
intersects(LinearScan.CompoundInterval i)
Does this interval intersect with i? |
(package private) boolean |
isAssigned()
Has this interval been assigned to a physical register? |
(package private) boolean |
isInfrequent()
|
(package private) boolean |
isSpilled()
Has this interval been spilled? |
(package private) void |
removeAll(LinearScan.CompoundInterval c)
SJF: Apparently our java.util implementation of removeAll() doesn't work. |
(package private) LinearScan.CompoundInterval |
removeIntervalsAndCache(LinearScan.CompoundInterval i)
Remove some basic intervals from this compound interval, and return the intervals actually removed. |
(package private) void |
setFrequent()
|
private boolean |
shouldConcatenate(LiveIntervalElement live,
BasicBlock bb)
Should we simply merge the live interval live into a
previous BasicInterval? |
(package private) void |
spill(LinearScan.SpillLocationManager spillManager)
Assign this compound interval to a free spill location. |
(package private) SortedSet<LinearScan.BasicInterval> |
tailSetInclusive(int lowerBound)
Compute the tailSet() [from java.util.SortedSet] but include all elements greater than lowerBound inclusive |
String |
toString()
Make a String representation |
Methods inherited from class java.util.TreeSet |
---|
add, addAll, ceiling, clear, clone, comparator, contains, descendingIterator, descendingSet, first, floor, headSet, headSet, higher, isEmpty, iterator, last, lower, pollFirst, pollLast, remove, size, subSet, subSet, tailSet, tailSet |
Methods inherited from class java.util.AbstractSet |
---|
equals, hashCode, removeAll |
Methods inherited from class java.util.AbstractCollection |
---|
containsAll, retainAll, toArray, toArray |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.util.Set |
---|
containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray |
Field Detail |
---|
static final long serialVersionUID
private boolean _infrequent
private final Register reg
private LinearScan.SpillLocationInterval spillInterval
Constructor Detail |
---|
LinearScan.CompoundInterval(int dfnBegin, int dfnEnd, Register register)
LinearScan.CompoundInterval(LinearScan.BasicInterval i, Register register)
LinearScan.CompoundInterval(Register r)
Method Detail |
---|
final void setFrequent()
final boolean isInfrequent()
LinearScan.SpillLocationInterval getSpillInterval()
Register getRegister()
LinearScan.CompoundInterval copy(Register r)
LinearScan.CompoundInterval copy(Register r, LinearScan.BasicInterval stop)
LinearScan.BasicInterval addRange(LiveIntervalElement live, BasicBlock bb)
live
- the new live rangebb
- the basic block for live
private boolean shouldConcatenate(LiveIntervalElement live, BasicBlock bb)
live
into a
previous BasicInterval?
live
- the live interval being queriedbb
- the basic block in which live resides.void spill(LinearScan.SpillLocationManager spillManager)
spillManager
- governing spill location managerboolean isSpilled()
void assign(Register r)
boolean isAssigned()
Register getAssignment()
void addNonIntersectingInterval(LinearScan.CompoundInterval i, LinearScan.BasicInterval stop)
SortedSet<LinearScan.BasicInterval> headSetInclusive(LinearScan.BasicInterval upperBound)
SortedSet<LinearScan.BasicInterval> headSetInclusive(int upperBound)
SortedSet<LinearScan.BasicInterval> tailSetInclusive(int lowerBound)
LinearScan.CompoundInterval removeIntervalsAndCache(LinearScan.CompoundInterval i)
void removeAll(LinearScan.CompoundInterval c)
int getLowerBound()
int getUpperBound()
boolean intersects(LinearScan.CompoundInterval i)
LinearScan.BasicInterval getBasicInterval(Instruction s)
s
- The instruction in questionLinearScan.BasicInterval getBasicInterval(int n)
n
- The DFN of the instruction in questionpublic String toString()
toString
in class LinearScan.IntervalSet
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |