public class FrameStateAssignmentPhase extends Phase
FrameState nodes from StateSplit nodes to
DeoptimizingNodes.
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 DeoptimizingNodes.
BasePhase.ApplyScope, BasePhase.BasePhaseStatistics, BasePhase.NotApplicable, BasePhase.PhaseOptions, BasePhase.SharedGlobalPhaseStateALWAYS_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, shouldDumpBeforeAtBasicLevelpublic Optional<BasePhase.NotApplicable> canApply(GraphState graphState)
BasePhaseBasePhase.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)
BasePhaseGraphState 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()