public class TraceLinearScanLifetimeAnalysisPhase extends LinearScanLifetimeAnalysisPhase
AllocationPhase.AllocationContext
LIRPhase.Options
Modifier and Type | Field and Description |
---|---|
private TraceBuilder.TraceBuilderResult<?> |
traceBuilderResult |
allocator
Constructor and Description |
---|
TraceLinearScanLifetimeAnalysisPhase(LinearScan linearScan,
TraceBuilder.TraceBuilderResult<?> traceBuilderResult) |
Modifier and Type | Method and Description |
---|---|
private void |
addInterTraceHints() |
protected void |
buildIntervals() |
protected void |
changeSpillDefinitionPos(LIRInstruction op,
AllocatableValue operand,
Interval interval,
int defPos)
Eliminates moves from register to stack if the stack slot is known to be correct.
|
protected void |
computeGlobalLiveSets()
Performs a backward dataflow analysis to compute global live sets (i.e.
|
protected void |
handleMethodArguments(LIRInstruction op)
Optimizes moves related to incoming stack based arguments.
|
private boolean |
isAllocatedOrCurrent(AbstractBlockBase<?> currentBlock,
AbstractBlockBase<?> other) |
protected void |
postBuildIntervals() |
protected Interval.RegisterPriority |
registerPriorityOfOutputOperand(LIRInstruction op)
Determines the register priority for an instruction's output/result operand.
|
private boolean |
sameTrace(AbstractBlockBase<?> a,
AbstractBlockBase<?> b) |
(package private) static void |
setHint(LIRInstruction op,
Interval target,
Interval source) |
addDef, addRegisterHint, addTemp, addUse, getMaterializedValue, numberInstructions, registerPriorityOfInputOperand, reportFailure, run, verifyLiveness
run
apply, apply, createName, getName
private final TraceBuilder.TraceBuilderResult<?> traceBuilderResult
public TraceLinearScanLifetimeAnalysisPhase(LinearScan linearScan, TraceBuilder.TraceBuilderResult<?> traceBuilderResult)
private boolean sameTrace(AbstractBlockBase<?> a, AbstractBlockBase<?> b)
private boolean isAllocatedOrCurrent(AbstractBlockBase<?> currentBlock, AbstractBlockBase<?> other)
static void setHint(LIRInstruction op, Interval target, Interval source)
protected void changeSpillDefinitionPos(LIRInstruction op, AllocatableValue operand, Interval interval, int defPos)
LinearScanLifetimeAnalysisPhase
changeSpillDefinitionPos
in class LinearScanLifetimeAnalysisPhase
protected void buildIntervals()
buildIntervals
in class LinearScanLifetimeAnalysisPhase
protected void postBuildIntervals()
private void addInterTraceHints()
protected Interval.RegisterPriority registerPriorityOfOutputOperand(LIRInstruction op)
LinearScanLifetimeAnalysisPhase
registerPriorityOfOutputOperand
in class LinearScanLifetimeAnalysisPhase
protected void handleMethodArguments(LIRInstruction op)
LinearScanLifetimeAnalysisPhase
handleMethodArguments
in class LinearScanLifetimeAnalysisPhase
protected void computeGlobalLiveSets()
LinearScan.BlockData.liveIn
and LinearScan.BlockData.liveOut
) for each block.computeGlobalLiveSets
in class LinearScanLifetimeAnalysisPhase