public class TraceLinearScanLifetimeAnalysisPhase extends LinearScanLifetimeAnalysisPhase
AllocationPhase.AllocationContextLIRPhase.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, verifyLivenessrunapply, apply, createName, getNameprivate 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)
LinearScanLifetimeAnalysisPhasechangeSpillDefinitionPos in class LinearScanLifetimeAnalysisPhaseprotected void buildIntervals()
buildIntervals in class LinearScanLifetimeAnalysisPhaseprotected void postBuildIntervals()
private void addInterTraceHints()
protected Interval.RegisterPriority registerPriorityOfOutputOperand(LIRInstruction op)
LinearScanLifetimeAnalysisPhaseregisterPriorityOfOutputOperand in class LinearScanLifetimeAnalysisPhaseprotected void handleMethodArguments(LIRInstruction op)
LinearScanLifetimeAnalysisPhasehandleMethodArguments in class LinearScanLifetimeAnalysisPhaseprotected void computeGlobalLiveSets()
LinearScan.BlockData.liveIn and LinearScan.BlockData.liveOut) for each block.computeGlobalLiveSets in class LinearScanLifetimeAnalysisPhase