public class LinearScanEliminateSpillMovePhase extends AllocationPhase
AllocationPhase.AllocationContext
LIRPhase.Options
Modifier and Type | Field and Description |
---|---|
protected LinearScan |
allocator |
private static LinearScan.IntervalPredicate |
mustStoreAtDefinition |
Modifier | Constructor and Description |
---|---|
protected |
LinearScanEliminateSpillMovePhase(LinearScan allocator) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
canEliminateSpillMove(AbstractBlockBase<?> block,
StandardOp.MoveOp move) |
private static void |
checkIntervals(Interval interval) |
(package private) void |
eliminateSpillMoves() |
protected int |
firstInstructionOfInterest() |
protected <B extends AbstractBlockBase<B>> |
run(TargetDescription target,
LIRGenerationResult lirGenRes,
List<B> codeEmittingOrder,
List<B> linearScanOrder,
LIRGeneratorTool.SpillMoveFactory spillMoveFactory,
RegisterAllocationConfig registerAllocationConfig) |
run
apply, apply, createName, getName
private static final LinearScan.IntervalPredicate mustStoreAtDefinition
protected final LinearScan allocator
protected LinearScanEliminateSpillMovePhase(LinearScan allocator)
protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, LIRGeneratorTool.SpillMoveFactory spillMoveFactory, RegisterAllocationConfig registerAllocationConfig)
run
in class AllocationPhase
protected int firstInstructionOfInterest()
eliminateSpillMoves()
void eliminateSpillMoves()
protected boolean canEliminateSpillMove(AbstractBlockBase<?> block, StandardOp.MoveOp move)
block
- The block move
is located in.move
- Spill move.private static void checkIntervals(Interval interval)