public class OptimizingLinearScanWalker extends LinearScanWalker
Modifier and Type | Class and Description |
---|---|
static class |
OptimizingLinearScanWalker.Options |
availableRegs, blockPos, spillIntervals, usePos
activeLists, allocator, currentBinding, currentPosition, inactiveLists, unhandledLists
Constructor and Description |
---|
OptimizingLinearScanWalker(LinearScan allocator,
Interval unhandledFixedFirst,
Interval unhandledAnyFirst) |
Modifier and Type | Method and Description |
---|---|
protected void |
handleSpillSlot(Interval interval)
This is called for every interval that is assigned to a stack slot.
|
private boolean |
optimize(int currentPos,
AbstractBlockBase<?> currentBlock,
Interval currentInterval,
Interval.RegisterBinding binding) |
private void |
optimizeBlock(AbstractBlockBase<?> block) |
private static void |
printRegisterBindingList(Interval.RegisterBindingLists list,
Interval.RegisterBinding binding) |
private void |
splitRegisterInterval(Interval interval,
Register reg) |
(package private) void |
walk() |
activateCurrent, allocFreeRegister, allocLockedRegister, blockAt, blockCount, blockOfOpWithId, combineSpilledIntervals, excludeFromUse, findOptimalSplitPos, findOptimalSplitPos, finishAllocation, freeCollectInactiveAny, freeCollectInactiveFixed, freeCollectUnhandled, freeExcludeActiveAny, freeExcludeActiveFixed, initUseLists, initVarsForAlloc, insertMove, isMove, isRegisterInRange, maxRegisterNumber, minRegisterNumber, noAllocationPossible, printRegisterState, setBlockPos, setUsePos, spillBlockInactiveFixed, spillBlockUnhandledFixed, spillCollectActiveAny, spillCollectInactiveAny, spillExcludeActiveFixed, splitAndSpillIntersectingIntervals, splitAndSpillInterval, splitBeforeUsage, splitForSpilling, splitStackInterval, splitWhenPartialRegisterAvailable
removeFromList, walkBefore, walkTo
OptimizingLinearScanWalker(LinearScan allocator, Interval unhandledFixedFirst, Interval unhandledAnyFirst)
protected void handleSpillSlot(Interval interval)
LinearScanWalker
handleSpillSlot
in class LinearScanWalker
private static void printRegisterBindingList(Interval.RegisterBindingLists list, Interval.RegisterBinding binding)
void walk()
walk
in class IntervalWalker
private void optimizeBlock(AbstractBlockBase<?> block)
private boolean optimize(int currentPos, AbstractBlockBase<?> currentBlock, Interval currentInterval, Interval.RegisterBinding binding)
private void splitRegisterInterval(Interval interval, Register reg)