public class ConvertDeoptimizeToGuardPhase extends PostRunCanonicalizationPhase<CoreProviders>
DeoptimizeNode and replace their
ControlSplitNodes with FixedGuardNodes.
This is useful because FixedGuardNodes will be lowered to GuardNodes which can later be optimized more aggressively than control-flow constructs.
This is currently only done for branches that start from a IfNode. If it encounters a
branch starting at an other kind of ControlSplitNode, it will only bring the
DeoptimizeNode as close to the ControlSplitNode as possible.BasePhase.ApplyScope, BasePhase.BasePhaseStatistics, BasePhase.PhaseOptions, BasePhase.SharedGlobalPhaseStatecanonicalizer| Constructor and Description |
|---|
ConvertDeoptimizeToGuardPhase(CanonicalizerPhase canonicalizer) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
run(StructuredGraph graph,
CoreProviders context) |
applyScopeapply, apply, codeSizeIncrease, contractorName, equals, getName, hashCode, shouldDumpAfterAtBasicLevel, shouldDumpBeforeAtBasicLevelclone, getClass, notify, notifyAll, toString, wait, wait, waitcheckContractpublic ConvertDeoptimizeToGuardPhase(CanonicalizerPhase canonicalizer)
protected void run(StructuredGraph graph, CoreProviders context)
run in class BasePhase<CoreProviders>