diff graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java @ 2640:9e30cf6dcf96

More frame state fixes. All jtt tests passing now again.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 11 May 2011 14:02:08 +0200
parents 8e96b2b3a866
children d1c5a798b73c
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java	Wed May 11 13:41:35 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java	Wed May 11 14:02:08 2011 +0200
@@ -990,12 +990,12 @@
             lockAddress = new MonitorAddress(lockNumber, graph);
             append(lockAddress);
         }
-        frameState.push(CiKind.Object, x);
         MonitorEnter monitorEnter = new MonitorEnter(x, lockAddress, lockNumber, graph);
-        frameState.apop();
         appendWithoutOptimization(monitorEnter, bci);
         frameState.lock(ir, x, lockNumber + 1);
-        monitorEnter.setStateAfter(frameState.create(bci));
+        if (bci == Instruction.SYNCHRONIZATION_ENTRY_BCI) {
+            monitorEnter.setStateAfter(frameState.create(0));
+        }
         killMemoryMap(); // prevent any optimizations across synchronization
     }
 
@@ -1268,14 +1268,14 @@
                 end = (BlockEnd) lastInstr;
                 break;
             }
+            stream.next();
+            bci = stream.currentBCI();
             if (lastInstr instanceof StateSplit) {
                 StateSplit stateSplit = (StateSplit) lastInstr;
                 if (stateSplit.stateAfter() == null && stateSplit.needsStateAfter()) {
                     stateSplit.setStateAfter(frameState.create(bci));
                 }
             }
-            stream.next();
-            bci = stream.currentBCI();
             blockStart = false;
         }