public class FrameStateAssignmentPhase extends Phase
FrameState
nodes from StateSplit
nodes to
DeoptimizingNode
s.
This allows the graph to enter the AFTER_FSA
stage, where no new
nodes that may cause deoptimizations can be introduced anymore.
This Phase processes the graph in post order, assigning the FrameState
from the last
StateSplit
node to DeoptimizingNode
s.
BasePhase.ApplyScope, BasePhase.BasePhaseStatistics, BasePhase.NotApplicable, BasePhase.PhaseOptions, BasePhase.SharedGlobalPhaseState
ALWAYS_APPLICABLE
Constructor and Description |
---|
FrameStateAssignmentPhase() |
Modifier and Type | Method and Description |
---|---|
Optional<BasePhase.NotApplicable> |
canApply(GraphState graphState)
Checks if all the preconditions to
BasePhase.apply(StructuredGraph, Object, boolean) the phase
are met. |
boolean |
checkContract() |
protected void |
run(StructuredGraph graph) |
void |
updateGraphState(GraphState graphState)
Applies all the changes on the
GraphState caused by
BasePhase.apply(StructuredGraph, Object, boolean) . |
apply, apply, applyScope, codeSizeIncrease, contractorName, equals, getName, hashCode, mustApply, shouldDumpAfterAtBasicLevel, shouldDumpBeforeAtBasicLevel
public Optional<BasePhase.NotApplicable> canApply(GraphState graphState)
BasePhase
BasePhase.apply(StructuredGraph, Object, boolean)
the phase
are met.canApply
in class BasePhase<Object>
graphState
- represents the state of the StructuredGraph
used for compilation
and contains the required information to determine if a phase can be applied.Optional.empty()
if all the checks pass, Optional#of(NotApplicable)
containing why this phase is not applicable on this graphState
otherwise.protected void run(StructuredGraph graph)
public void updateGraphState(GraphState graphState)
BasePhase
GraphState
caused by
BasePhase.apply(StructuredGraph, Object, boolean)
.updateGraphState
in class BasePhase<Object>
graphState
- represents the state of the StructuredGraph
used for compilation.public boolean checkContract()