# HG changeset patch # User Gilles Duboscq # Date 1364223566 -3600 # Node ID 149dee7367e0d07c30b36044ff0a958c0fc0d626 # Parent 6a8ad083746e397c84fde8ea320d217207abf942 Bailout from OSR compilation when there is more than on EntryMarkerNode diff -r 6a8ad083746e -r 149dee7367e0 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Mon Mar 25 14:11:01 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Mon Mar 25 15:59:26 2013 +0100 @@ -79,16 +79,17 @@ NodeIterable osrNodes = graph.getNodes(EntryMarkerNode.class); osr = osrNodes.first(); if (osr == null) { - throw new BailoutException("no OnStackReplacementNode generated"); + throw new BailoutException("No OnStackReplacementNode generated"); } if (osrNodes.count() > 1) { - throw new GraalInternalError("multiple OnStackReplacementNodes generated"); + // this can happen with JSR inlining + throw new BailoutException("Multiple OnStackReplacementNodes generated"); } if (osr.stateAfter().locksSize() != 0) { - throw new BailoutException("osr with locks not supported"); + throw new BailoutException("OSR with locks not supported"); } if (osr.stateAfter().stackSize() != 0) { - throw new BailoutException("osr with stack entries not supported: " + osr.stateAfter().toString(Verbosity.Debugger)); + throw new BailoutException("OSR with stack entries not supported: " + osr.stateAfter().toString(Verbosity.Debugger)); } LoopEx osrLoop = null; LoopsData loops = new LoopsData(graph);