diff src/share/vm/runtime/deoptimization.cpp @ 8328:6b6cbd8b8914

Support deoptimizing before the entry to a synchronized method.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sun, 17 Mar 2013 21:20:39 +0100
parents b8f261ba79c6
children 9f9aaa65294e
line wrap: on
line diff
--- a/src/share/vm/runtime/deoptimization.cpp	Sun Mar 17 21:14:35 2013 +0100
+++ b/src/share/vm/runtime/deoptimization.cpp	Sun Mar 17 21:20:39 2013 +0100
@@ -1316,6 +1316,10 @@
 
     methodHandle    trap_method = trap_scope->method();
     int             trap_bci    = trap_scope->bci();
+    if (trap_bci == SynchronizationEntryBCI) {
+      trap_bci = 0;
+      Thread::current()->set_pending_monitorenter(true);
+    }
     Bytecodes::Code trap_bc     = trap_method->java_code_at(trap_bci);
 
     if (trap_scope->rethrow_exception()) {