changeset 11671:3522f7c99c5f

Allow null DuplicationReplacement in addDuplicates.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Mon, 16 Sep 2013 20:23:26 +0200
parents 891fa65ef9ec
children 25de2c04c956
files graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java
diffstat 3 files changed, 10 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Mon Sep 16 19:56:54 2013 +0200
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Mon Sep 16 20:23:26 2013 +0200
@@ -743,19 +743,8 @@
 
     }
 
-    private static final DuplicationReplacement NO_REPLACEMENT = new DuplicationReplacement() {
-
-        @Override
-        public Node replacement(Node original) {
-            return original;
-        }
-    };
-
     @SuppressWarnings("all")
     public Map<Node, Node> addDuplicates(Iterable<Node> newNodes, DuplicationReplacement replacements) {
-        if (replacements == null) {
-            replacements = NO_REPLACEMENT;
-        }
         return NodeClass.addGraphDuplicate(this, newNodes, replacements);
     }
 }
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Sep 16 19:56:54 2013 +0200
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Sep 16 20:23:26 2013 +0200
@@ -968,12 +968,15 @@
     }
 
     static Map<Node, Node> addGraphDuplicate(Graph graph, Iterable<Node> nodes, DuplicationReplacement replacements) {
-        Map<Node, Node> newNodes = new IdentityHashMap<>();
+        IdentityHashMap<Node, Node> newNodes = new IdentityHashMap<>();
         // create node duplicates
         for (Node node : nodes) {
             if (node != null) {
                 assert !node.isDeleted() : "trying to duplicate deleted node: " + node;
-                Node replacement = replacements.replacement(node);
+                Node replacement = node;
+                if (replacements != null) {
+                    replacement = replacements.replacement(node);
+                }
                 if (replacement != node) {
                     assert replacement != null;
                     newNodes.put(node, replacement);
@@ -997,7 +1000,10 @@
                 Node target = newNodes.get(input);
                 NodeClass nodeClass = node.getNodeClass();
                 if (target == null) {
-                    Node replacement = replacements.replacement(input);
+                    Node replacement = input;
+                    if (replacements != null) {
+                        replacement = replacements.replacement(input);
+                    }
                     if (replacement != input) {
                         assert isAssignable(nodeClass.fieldTypes.get(nodeClass.inputOffsets[pos.index]), replacement);
                         target = replacement;
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java	Mon Sep 16 19:56:54 2013 +0200
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java	Mon Sep 16 20:23:26 2013 +0200
@@ -129,13 +129,7 @@
                     }
                 };
             } else {
-                dr = new DuplicationReplacement() {
-
-                    @Override
-                    public Node replacement(Node o) {
-                        return o;
-                    }
-                };
+                dr = null;
             }
             duplicationMap = graph().addDuplicates(original().nodes(), dr);
             finishDuplication();