# HG changeset patch # User Lukas Stadler # Date 1348583727 -7200 # Node ID 9ce24a27f0351c7348e95526bd7b4f09e7bb50fa # Parent 58d7df6720ff3050052e016fe65780d4912bea73 fix for InliningUtil (dropped outer frame states while inlining) diff -r 58d7df6720ff -r 9ce24a27f035 graal/com.oracle.graal.compiler.phases/src/com/oracle/graal/compiler/util/InliningUtil.java --- a/graal/com.oracle.graal.compiler.phases/src/com/oracle/graal/compiler/util/InliningUtil.java Tue Sep 25 11:29:52 2012 +0200 +++ b/graal/com.oracle.graal.compiler.phases/src/com/oracle/graal/compiler/util/InliningUtil.java Tue Sep 25 16:35:27 2012 +0200 @@ -908,12 +908,16 @@ assert stateAtExceptionEdge == null; } } else { - if (outerFrameState == null) { - outerFrameState = stateAfter.duplicateModified(invoke.bci(), stateAfter.rethrowException(), invoke.node().kind()); - outerFrameState.setDuringCall(true); + // only handle the outermost frame states + if (frameState.outerFrameState() == null) { + assert frameState.method() == inlineGraph.method(); + if (outerFrameState == null) { + outerFrameState = stateAfter.duplicateModified(invoke.bci(), stateAfter.rethrowException(), invoke.node().kind()); + outerFrameState.setDuringCall(true); + } + frameState.setOuterFrameState(outerFrameState); + frameState.setInliningIdentifier(identifier); } - frameState.setOuterFrameState(outerFrameState); - frameState.setInliningIdentifier(identifier); } } }