changeset 6696:2ec25815d84e

When InstanceOfNode is lowered to always true or always false condition, then the no longer used branch needs to be removed from graph.
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 09 Nov 2012 16:58:28 -0800
parents dc7cd6885f07
children 45661f68f317
files graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java	Fri Nov 09 16:57:29 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java	Fri Nov 09 16:58:28 2012 -0800
@@ -272,7 +272,10 @@
         }
 
         private static void connectEnds(MergeNode merge, List<EndNode> ends, BeginNode successor) {
-            if (ends.size() == 1) {
+            if (ends.size() == 0) {
+                // InstanceOf has been lowered to always true or always false - this successor is therefore unreachable.
+                GraphUtil.killCFG(successor);
+            } else if (ends.size() == 1) {
                 EndNode end = ends.get(0);
                 ((FixedWithNextNode) end.predecessor()).setNext(successor);
                 merge.removeEnd(end);