comparison src/share/vm/runtime/vframeArray.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
comparison
equal deleted inserted replaced
8327:e24fb475bdec 8328:6b6cbd8b8914
284 // we placed in the skeletal frame now that we finally know the 284 // we placed in the skeletal frame now that we finally know the
285 // exact interpreter address we should use. 285 // exact interpreter address we should use.
286 286
287 _frame.patch_pc(thread, pc); 287 _frame.patch_pc(thread, pc);
288 288
289 assert (!method()->is_synchronized() || locks > 0, "synchronized methods must have monitors"); 289 assert (!method()->is_synchronized() || locks > 0 || raw_bci() == SynchronizationEntryBCI, "synchronized methods must have monitors");
290 290
291 BasicObjectLock* top = iframe()->interpreter_frame_monitor_begin(); 291 BasicObjectLock* top = iframe()->interpreter_frame_monitor_begin();
292 for (int index = 0; index < locks; index++) { 292 for (int index = 0; index < locks; index++) {
293 top = iframe()->previous_monitor_in_interpreter_frame(top); 293 top = iframe()->previous_monitor_in_interpreter_frame(top);
294 BasicObjectLock* src = _monitors->at(index); 294 BasicObjectLock* src = _monitors->at(index);