changeset 4690:b22f3f406b97

Merge.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 24 Feb 2012 20:05:32 +0100
parents 15849962252d (diff) dd521d481734 (current diff)
children fc42b5b6941a
files graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java
diffstat 3 files changed, 7 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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()) {
--- 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();
         }
     }
 
--- 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, "",                               \