Mercurial > hg > graal-jvmci-8
changeset 16587:173da8c3095d
support simplification in CustomCanonicalizer and turn it into an abstract class
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Wed, 23 Jul 2014 14:20:27 +0200 |
parents | 4a8f255c8c8d |
children | 4209ec855c1c |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Wed Jul 23 14:19:51 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Wed Jul 23 14:20:27 2014 +0200 @@ -49,9 +49,15 @@ private final boolean canonicalizeReads; private final CustomCanonicalizer customCanonicalizer; - public interface CustomCanonicalizer { + public static abstract class CustomCanonicalizer { - Node canonicalize(Node node); + public Node canonicalize(Node node) { + return node; + } + + @SuppressWarnings("unused") + public void simplify(Node node, SimplifierTool tool) { + } } public CanonicalizerPhase(boolean canonicalizeReads) { @@ -225,6 +231,9 @@ if (!result && customCanonicalizer != null) { Node canonical = customCanonicalizer.canonicalize(node); result = performReplacement(node, canonical); + if (!result) { + customCanonicalizer.simplify(node, tool); + } } return result; }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java Wed Jul 23 14:19:51 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java Wed Jul 23 14:20:27 2014 +0200 @@ -30,7 +30,7 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.nodes.Node.Child; -final class PartialEvaluatorCanonicalizer implements CanonicalizerPhase.CustomCanonicalizer { +final class PartialEvaluatorCanonicalizer extends CanonicalizerPhase.CustomCanonicalizer { private final MetaAccessProvider metaAccess; private final ConstantReflectionProvider constantReflection;