changeset 8388:bcfe9832552a

Speical case ExceptionObjectNode in deopt to guard conversion.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Wed, 20 Mar 2013 00:06:09 +0100
parents 9f0ae7df921e
children e53b31b29aa4
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java	Tue Mar 19 23:08:03 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java	Wed Mar 20 00:06:09 2013 +0100
@@ -97,11 +97,17 @@
         }
 
         // We could not convert the control split - at least cut off control flow after the split.
-        FixedNode next = deoptBegin.next();
+        FixedWithNextNode deoptPred = deoptBegin;
+        FixedNode next = deoptPred.next();
+        if (next instanceof ExceptionObjectNode) {
+            deoptPred = (FixedWithNextNode) next;
+            next = deoptPred.next();
+        }
+
         if (next != deopt) {
             DeoptimizeNode newDeoptNode = (DeoptimizeNode) deopt.clone(graph);
-            deoptBegin.setNext(newDeoptNode);
-            assert deoptBegin == newDeoptNode.predecessor();
+            deoptPred.setNext(newDeoptNode);
+            assert deoptPred == newDeoptNode.predecessor();
             GraphUtil.killCFG(next);
         }
     }