# HG changeset patch # User Thomas Wuerthinger # Date 1379355806 -7200 # Node ID 3522f7c99c5fef005925e33ee29cc25208468905 # Parent 891fa65ef9ec846deb056a4dba879c287a50eaa2 Allow null DuplicationReplacement in addDuplicates. diff -r 891fa65ef9ec -r 3522f7c99c5f graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java --- 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 addDuplicates(Iterable newNodes, DuplicationReplacement replacements) { - if (replacements == null) { - replacements = NO_REPLACEMENT; - } return NodeClass.addGraphDuplicate(this, newNodes, replacements); } } diff -r 891fa65ef9ec -r 3522f7c99c5f graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java --- 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 addGraphDuplicate(Graph graph, Iterable nodes, DuplicationReplacement replacements) { - Map newNodes = new IdentityHashMap<>(); + IdentityHashMap 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; diff -r 891fa65ef9ec -r 3522f7c99c5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java --- 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();