# HG changeset patch # User Thomas Wuerthinger # Date 1330110332 -3600 # Node ID b22f3f406b978b19a54802d76ea9901eed3352bf # Parent 15849962252df3e8a67d3d5facb749b4bb971e23# Parent dd521d4817343811aa46f53d8fe3924977b27ea8 Merge. diff -r dd521d481734 -r b22f3f406b97 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/InliningUtil.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/InliningUtil.java Fri Feb 24 17:17:48 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/util/InliningUtil.java Fri Feb 24 20:05:32 2012 +0100 @@ -826,7 +826,6 @@ } } - FrameState stateBefore = null; FrameState outerFrameState = null; double invokeProbability = invoke.node().probability(); for (Node node : duplicates.values()) { @@ -842,12 +841,8 @@ } if (node instanceof FrameState) { FrameState frameState = (FrameState) node; - if (frameState.bci == FrameState.BEFORE_BCI) { - if (stateBefore == null) { - stateBefore = stateAfter.duplicateModified(invoke.bci(), false, invoke.node().kind(), parameters.toArray(new ValueNode[parameters.size()])); - } - frameState.replaceAndDelete(stateBefore); - } else if (frameState.bci == FrameState.AFTER_BCI) { + assert frameState.bci != FrameState.BEFORE_BCI; + if (frameState.bci == FrameState.AFTER_BCI) { frameState.replaceAndDelete(stateAfter); } else if (frameState.bci == FrameState.AFTER_EXCEPTION_BCI) { if (frameState.isAlive()) { diff -r dd521d481734 -r b22f3f406b97 graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java Fri Feb 24 17:17:48 2012 +0100 +++ b/graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java Fri Feb 24 20:05:32 2012 +0100 @@ -1333,8 +1333,10 @@ assert lastInstr.next() == null : "instructions already appended at block " + block.blockID; if (block == returnBlock) { + frameState.setRethrowException(false); createReturn(); } else if (block == unwindBlock) { + frameState.setRethrowException(false); createUnwind(); } else if (block instanceof ExceptionBlock) { createExceptionDispatch((ExceptionBlock) block); @@ -1394,6 +1396,7 @@ // TODO (gd) remove this when FloatingRead is fixed if (Modifier.isSynchronized(method.accessFlags())) { append(currentGraph.add(new ValueAnchorNode(x))); + assert !frameState.rethrowException(); } synchronizedEpilogue(FrameState.AFTER_BCI); @@ -1405,6 +1408,7 @@ if (Modifier.isSynchronized(method.accessFlags())) { MonitorExitNode monitorExit = genMonitorExit(methodSynchronizedObject); monitorExit.setStateAfter(frameState.create(bci)); + assert !frameState.rethrowException(); } } diff -r dd521d481734 -r b22f3f406b97 src/share/vm/runtime/globals.hpp --- a/src/share/vm/runtime/globals.hpp Fri Feb 24 17:17:48 2012 +0100 +++ b/src/share/vm/runtime/globals.hpp Fri Feb 24 20:05:32 2012 +0100 @@ -662,7 +662,7 @@ develop(bool, TraceCallFixup, false, \ "traces all call fixups") \ \ - develop(bool, DeoptimizeALot, false, \ + product(bool, DeoptimizeALot, false, \ "deoptimize at every exit from the runtime system") \ \ notproduct(ccstrlist, DeoptimizeOnlyAt, "", \