changeset 23035:075e134c16ff

Fix for the GraphDecoder for the case when merge loop explosions is enabled.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 19 Nov 2015 20:35:05 +0100
parents 73fa2bf51eaa
children b2243b94f6c1
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java
diffstat 3 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Thu Nov 19 18:01:10 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Thu Nov 19 20:35:05 2015 +0100
@@ -204,6 +204,7 @@
     }
 
     public void setOuterFrameState(FrameState x) {
+        assert x == null || !x.isDeleted();
         updateUsages(this.outerFrameState, x);
         this.outerFrameState = x;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java	Thu Nov 19 18:01:10 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GraphDecoder.java	Thu Nov 19 20:35:05 2015 +0100
@@ -278,7 +278,6 @@
         try (Debug.Scope scope = Debug.scope("GraphDecoder", graph)) {
             MethodScope methodScope = new MethodScope(graph, encodedGraph, LoopExplosionKind.NONE);
             decode(methodScope, null);
-            cleanupGraph(methodScope, null);
             methodScope.graph.verify();
         } catch (Throwable ex) {
             Debug.handle(ex);
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java	Thu Nov 19 18:01:10 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java	Thu Nov 19 20:35:05 2015 +0100
@@ -525,6 +525,7 @@
     public static FrameState processFrameState(FrameState frameState, Invoke invoke, ResolvedJavaMethod inlinedMethod, FrameState stateAtExceptionEdge, FrameState outerFrameState,
                     boolean alwaysDuplicateStateAfter, ResolvedJavaMethod invokeTargetMethod, List<ValueNode> invokeArgsList) {
 
+        assert outerFrameState == null || !outerFrameState.isDeleted() : outerFrameState;
         FrameState stateAtReturn = invoke.stateAfter();
         JavaKind invokeReturnKind = invoke.asNode().getStackKind();