# HG changeset patch # User Gilles Duboscq # Date 1338819356 -7200 # Node ID 85986efe747eeb6ab5fd20d826e80060551443d3 # Parent 62767a364197de270fb2e1180950aa32d4a4a7e3 Check edge types for replacements in addDuplicate diff -r 62767a364197 -r 85986efe747e 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 Jun 04 16:01:40 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Mon Jun 04 16:15:56 2012 +0200 @@ -941,7 +941,12 @@ Node replacement = replacements.replacement(input); if (replacement != input) { replacementsMap.put(input, replacement); - target = replacement; + Class< ? > edgeType = node.getNodeClass().inputTypes[pos.index]; + if (edgeType != null && !edgeType.isAssignableFrom(replacement.getClass())) { + target = null; + } else { + target = replacement; + } } else { target = newNodes.get(input); } @@ -974,7 +979,12 @@ Node replacement = replacements.replacement(succ); if (replacement != succ) { replacementsMap.put(succ, replacement); - target = replacement; + Class< ? > edgeType = node.getNodeClass().successorTypes[pos.index]; + if (edgeType != null && !edgeType.isAssignableFrom(replacement.getClass())) { + target = null; + } else { + target = replacement; + } } else { target = newNodes.get(succ); }