public class LinearScanEliminateSpillMovePhase extends AllocationPhase
AllocationPhase.AllocationContextLIRPhase.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) |
runapply, apply, createName, getNameprivate 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 AllocationPhaseprotected 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)