public class ReassociationPhase extends BasePhase<CoreProviders>
associative binary operations
for loop
invariants and constants.BasePhase.ApplyScope, BasePhase.BasePhaseStatistics, BasePhase.NotApplicable, BasePhase.PhaseOptions, BasePhase.SharedGlobalPhaseState
ALWAYS_APPLICABLE
Constructor and Description |
---|
ReassociationPhase(CanonicalizerPhase canonicalizer) |
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. |
float |
codeSizeIncrease()
Returns a factor
>=1 that determines what the final code size in terms of the sum of
the node code sizes NodeSize of all nodes is. |
protected void |
run(StructuredGraph graph,
CoreProviders context) |
apply, apply, applyScope, contractorName, equals, getName, hashCode, mustApply, shouldDumpAfterAtBasicLevel, shouldDumpBeforeAtBasicLevel, updateGraphState
clone, getClass, notify, notifyAll, toString, wait, wait, wait
checkContract
public ReassociationPhase(CanonicalizerPhase canonicalizer)
public Optional<BasePhase.NotApplicable> canApply(GraphState graphState)
BasePhase
BasePhase.apply(StructuredGraph, Object, boolean)
the phase
are met.canApply
in class BasePhase<CoreProviders>
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, CoreProviders context)
run
in class BasePhase<CoreProviders>
public float codeSizeIncrease()
PhaseSizeContract
>=1
that determines what the final code size in terms of the sum of
the node code sizes NodeSize
of all nodes is.codeSizeIncrease
in interface PhaseSizeContract
codeSizeIncrease
in class BasePhase<CoreProviders>