Mercurial > hg > graal-compiler
changeset 8524:ecb2446232ac
Safer bailout for JSR+OSR
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 27 Mar 2013 11:51:53 +0100 |
parents | ebf95eed9eef |
children | 54f0a88e4523 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java |
diffstat | 2 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Mar 27 14:03:03 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Mar 27 11:51:53 2013 +0100 @@ -82,8 +82,7 @@ throw new BailoutException("No OnStackReplacementNode generated"); } if (osrNodes.count() > 1) { - // this can happen with JSR inlining - throw new BailoutException("Multiple OnStackReplacementNodes generated"); + throw new GraalInternalError("Multiple OnStackReplacementNodes generated"); } if (osr.stateAfter().locksSize() != 0) { throw new BailoutException("OSR with locks not supported");
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Mar 27 14:03:03 2013 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Mar 27 11:51:53 2013 +0100 @@ -1688,6 +1688,9 @@ traceState(); traceInstruction(bci, opcode, bci == block.startBci); if (bci == entryBCI) { + if (block.jsrScope != JsrScope.EMPTY_SCOPE) { + throw new BailoutException("OSR into a JSR scope is not supported"); + } EntryMarkerNode x = currentGraph.add(new EntryMarkerNode()); append(x); frameState.insertProxies(x);