Mercurial > hg > truffle
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; }