# HG changeset patch # User Roland Schatz # Date 1366104639 -7200 # Node ID 6b0a5e236eeaf30b91cb2455787660dac9c5e551 # Parent 221ef4b022c517740f0d90aac5a9bde54d40243b Allow CustomCanonicalizer in reentrant CanonicalizerPhase. diff -r 221ef4b022c5 -r 6b0a5e236eea graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Mon Apr 15 19:54:23 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Apr 16 11:30:39 2013 +0200 @@ -48,14 +48,24 @@ private static final DebugMetric METRIC_SIMPLIFICATION_CONSIDERED_NODES = Debug.metric("SimplificationConsideredNodes"); public static final DebugMetric METRIC_GLOBAL_VALUE_NUMBERING_HITS = Debug.metric("GlobalValueNumberingHits"); + private final CustomCanonicalizer customCanonicalizer; + public interface CustomCanonicalizer { ValueNode canonicalize(ValueNode node); } + public CanonicalizerPhase() { + this(null); + } + + public CanonicalizerPhase(CustomCanonicalizer customCanonicalizer) { + this.customCanonicalizer = customCanonicalizer; + } + @Override protected void run(StructuredGraph graph, PhaseContext context) { - new Instance(context.getRuntime(), context.getAssumptions()).run(graph); + new Instance(context.getRuntime(), context.getAssumptions(), null, customCanonicalizer).run(graph); } public static class Instance extends Phase {