changeset 16403:39f9f052e5a8

Move DefaultCanonicalizerTool to GraphUtil and make it a DefaultSimplifierTool
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 04 Jul 2014 13:40:34 +0200
parents 639716622dc8
children fe985eebfcd9
files graal/com.oracle.graal.graph/src/com/oracle/graal/graph/spi/DefaultCanonicalizerTool.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java
diffstat 2 files changed, 50 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/spi/DefaultCanonicalizerTool.java	Thu Jul 03 18:27:08 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.graph.spi;
-
-import com.oracle.graal.api.code.*;
-import com.oracle.graal.api.meta.*;
-
-public class DefaultCanonicalizerTool implements CanonicalizerTool {
-
-    private final Assumptions assumptions;
-    private final MetaAccessProvider metaAccess;
-    private final ConstantReflectionProvider constantReflection;
-    private final boolean canonicalizeReads;
-
-    public DefaultCanonicalizerTool(Assumptions assumptions, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, boolean canonicalizeReads) {
-        this.assumptions = assumptions;
-        this.metaAccess = metaAccess;
-        this.constantReflection = constantReflection;
-        this.canonicalizeReads = canonicalizeReads;
-    }
-
-    public Assumptions assumptions() {
-        return assumptions;
-    }
-
-    public MetaAccessProvider getMetaAccess() {
-        return metaAccess;
-    }
-
-    public ConstantReflectionProvider getConstantReflection() {
-        return constantReflection;
-    }
-
-    public boolean canonicalizeReads() {
-        return canonicalizeReads;
-    }
-}
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java	Thu Jul 03 18:27:08 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java	Fri Jul 04 13:40:34 2014 +0200
@@ -24,6 +24,7 @@
 
 import java.util.*;
 
+import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.graph.iterators.*;
@@ -441,4 +442,53 @@
             }
         };
     }
+
+    private static final class DefaultSimplifierTool implements SimplifierTool {
+        private final Assumptions assumptions;
+        private final MetaAccessProvider metaAccess;
+        private final ConstantReflectionProvider constantReflection;
+        private final boolean canonicalizeReads;
+
+        public DefaultSimplifierTool(Assumptions assumptions, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, boolean canonicalizeReads) {
+            this.assumptions = assumptions;
+            this.metaAccess = metaAccess;
+            this.constantReflection = constantReflection;
+            this.canonicalizeReads = canonicalizeReads;
+        }
+
+        public Assumptions assumptions() {
+            return assumptions;
+        }
+
+        public MetaAccessProvider getMetaAccess() {
+            return metaAccess;
+        }
+
+        public ConstantReflectionProvider getConstantReflection() {
+            return constantReflection;
+        }
+
+        public boolean canonicalizeReads() {
+            return canonicalizeReads;
+        }
+
+        public void deleteBranch(Node branch) {
+            branch.predecessor().replaceFirstSuccessor(branch, null);
+            GraphUtil.killCFG(branch, this);
+        }
+
+        public void removeIfUnused(Node node) {
+            GraphUtil.tryKillUnused(node);
+        }
+
+        public void addToWorkList(Node node) {
+        }
+
+        public void addToWorkList(Iterable<? extends Node> nodes) {
+        }
+    }
+
+    public static SimplifierTool getDefaultSimplifier(Assumptions assumptions, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, boolean canonicalizeReads) {
+        return new DefaultSimplifierTool(assumptions, metaAccess, constantReflection, canonicalizeReads);
+    }
 }