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