diff graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java @ 17054:fb8fe09c00a3

Don't remove LoopExitNodes in UseTrappingNullChecksPhase.
author Roland Schatz <roland.schatz@oracle.com>
date Fri, 05 Sep 2014 12:27:04 +0200
parents 06c15e88d383
children 45b45f902bed
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java	Fri Sep 05 11:50:52 2014 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java	Fri Sep 05 12:27:04 2014 +0200
@@ -172,10 +172,14 @@
          * then remove the Begin from the graph.
          */
         nonTrappingContinuation.replaceAtUsages(InputType.Guard, trappingNullCheck);
-        FixedNode next = nonTrappingContinuation.next();
-        nonTrappingContinuation.clearSuccessors();
-        trappingNullCheck.setNext(next);
-        nonTrappingContinuation.safeDelete();
+        if (nonTrappingContinuation.getNodeClass().is(BeginNode.class)) {
+            FixedNode next = nonTrappingContinuation.next();
+            nonTrappingContinuation.clearSuccessors();
+            trappingNullCheck.setNext(next);
+            nonTrappingContinuation.safeDelete();
+        } else {
+            trappingNullCheck.setNext(nonTrappingContinuation);
+        }
 
         GraphUtil.killCFG(trappingContinuation);
         if (isNullNode.usages().isEmpty()) {