final class FixPointIntervalBuilder extends Object
Modifier and Type | Class and Description |
---|---|
private class |
FixPointIntervalBuilder.BlockClosure |
Modifier and Type | Field and Description |
---|---|
private LIR |
lir |
private BlockMap<BitSet> |
liveInMap |
private BlockMap<BitSet> |
liveOutMap |
private int |
maxOpId |
private StackInterval[] |
stackSlotMap |
private static DebugMetric |
uninitializedSlots
The number of allocated stack slots.
|
private HashSet<LIRInstruction> |
usePos |
Constructor and Description |
---|
FixPointIntervalBuilder(LIR lir,
StackInterval[] stackSlotMap,
int maxOpId) |
Modifier and Type | Method and Description |
---|---|
(package private) Set<LIRInstruction> |
build()
Builds the lifetime intervals for
virtual stack slots , sets up
stackSlotMap and returns a set of use positions, i.e. |
private StackInterval |
get(VirtualStackSlot stackSlot) |
private static int |
getBlockBegin(List<LIRInstruction> instructions) |
private static int |
getBlockEnd(List<LIRInstruction> instructions) |
private StackInterval |
getIntervalFromStackId(int id) |
private StackInterval |
getOrCreateInterval(VirtualStackSlot stackSlot) |
private String |
liveSetToString(BitSet liveSet) |
private void |
markInInterval(BitSet inSet,
int blockFirstOpId) |
private void |
markOutInterval(BitSet outSet,
int blockEndOpId) |
private void |
printLiveSet(String label,
BitSet liveSet) |
private void |
processBlock(AbstractBlockBase<?> block,
Deque<AbstractBlockBase<?>> worklist) |
private void |
put(VirtualStackSlot stackSlot,
StackInterval interval) |
private boolean |
updateOutBlock(AbstractBlockBase<?> block)
Merge outSet with in-set of successors.
|
private final BlockMap<BitSet> liveOutMap
private final int maxOpId
private final StackInterval[] stackSlotMap
private final HashSet<LIRInstruction> usePos
private static final DebugMetric uninitializedSlots
FixPointIntervalBuilder(LIR lir, StackInterval[] stackSlotMap, int maxOpId)
Set<LIRInstruction> build()
virtual stack slots
, sets up
stackSlotMap
and returns a set of use positions, i.e. instructions that contain
virtual stack slots.private boolean updateOutBlock(AbstractBlockBase<?> block)
private void processBlock(AbstractBlockBase<?> block, Deque<AbstractBlockBase<?>> worklist)
private void printLiveSet(String label, BitSet liveSet)
private String liveSetToString(BitSet liveSet)
private void markOutInterval(BitSet outSet, int blockEndOpId)
private void markInInterval(BitSet inSet, int blockFirstOpId)
private StackInterval get(VirtualStackSlot stackSlot)
private void put(VirtualStackSlot stackSlot, StackInterval interval)
private StackInterval getOrCreateInterval(VirtualStackSlot stackSlot)
private StackInterval getIntervalFromStackId(int id)
private static int getBlockBegin(List<LIRInstruction> instructions)
private static int getBlockEnd(List<LIRInstruction> instructions)