# HG changeset patch # User Doug Simon # Date 1380742999 -7200 # Node ID 008500ebc6c67d3f906d0d85753df240aba51b8e # Parent 673f93db4adc4d8d752a05f83610f25bf4ca30e4 modified CustomCanonicalizer to deal with Nodes (instead of ValueNodes) to avoid extra type testing during canonicalization (GRAAL-506) diff -r 673f93db4adc -r 008500ebc6c6 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 Wed Oct 02 21:40:29 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Wed Oct 02 21:43:19 2013 +0200 @@ -53,7 +53,7 @@ public interface CustomCanonicalizer { - ValueNode canonicalize(ValueNode node); + Node canonicalize(Node node); } public CanonicalizerPhase(boolean canonicalizeReads) { @@ -232,9 +232,8 @@ public boolean tryCanonicalize(final Node node, NodeClass nodeClass) { boolean result = baseTryCanonicalize(node, nodeClass); - if (!result && customCanonicalizer != null && node instanceof ValueNode) { - ValueNode valueNode = (ValueNode) node; - Node canonical = customCanonicalizer.canonicalize(valueNode); + if (!result && customCanonicalizer != null) { + Node canonical = customCanonicalizer.canonicalize(node); result = performReplacement(node, canonical); } return result; diff -r 673f93db4adc -r 008500ebc6c6 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java Wed Oct 02 21:40:29 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java Wed Oct 02 21:43:19 2013 +0200 @@ -27,6 +27,7 @@ import sun.misc.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.Node; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; import com.oracle.graal.phases.common.*; @@ -42,7 +43,7 @@ } @Override - public ValueNode canonicalize(ValueNode node) { + public Node canonicalize(Node node) { if (node instanceof LoadFieldNode) { LoadFieldNode loadFieldNode = (LoadFieldNode) node; if (!loadFieldNode.isStatic() && loadFieldNode.object().isConstant() && !loadFieldNode.object().isNullConstant()) {