Mercurial > hg > truffle
changeset 6435:9ce24a27f035
fix for InliningUtil (dropped outer frame states while inlining)
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Tue, 25 Sep 2012 16:35:27 +0200 |
parents | 58d7df6720ff |
children | 5395ecdfce8a |
files | graal/com.oracle.graal.compiler.phases/src/com/oracle/graal/compiler/util/InliningUtil.java |
diffstat | 1 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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); } } }