Mercurial > hg > truffle
changeset 5486:85986efe747e
Check edge types for replacements in addDuplicate
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Mon, 04 Jun 2012 16:15:56 +0200 |
parents | 62767a364197 |
children | 9743ae819f73 |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java |
diffstat | 1 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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); }