238 // This is not the first frame so we either own this monitor
239 // or we owned the monitor before and called wait(). Because
240 // wait() could have been called on any monitor in a lower
241 // numbered frame on the stack, we have to check all the
242 // monitors on the list for this frame.
243 mark = monitor->owner()->mark();
244 if (mark->has_monitor() &&
245 ( // we have marked ourself as pending on this monitor
246 mark->monitor() == thread()->current_pending_monitor() ||
247 // we are not the owner of this monitor
248 !mark->monitor()->is_entered(thread())
249 )) {
250 lock_state = "waiting to re-lock in wait()";
251 } else {
252 // We own the monitor which is not as interesting so
253 // disable the extra printing below.
254 mark = NULL;
255 }
256 }
257 print_locked_object_class_name(st, Handle(THREAD, monitor->owner()), lock_state);
258 if (ObjectMonitor::Knob_Verbose && mark != NULL) {
259 st->print("\t- lockbits=");
260 mark->print_on(st);
261 st->cr();
262 }
263
264 found_first_monitor = true;
265 }
266 }
267 }
268 }
269
270 // ------------- interpretedVFrame --------------
271
272 u_char* interpretedVFrame::bcp() const {
273 return fr().interpreter_frame_bcp();
274 }
275
276 void interpretedVFrame::set_bcp(u_char* bcp) {
277 fr().interpreter_frame_set_bcp(bcp);
278 }
279
280 intptr_t* interpretedVFrame::locals_addr_at(int offset) const {
281 assert(fr().is_interpreted_frame(), "frame should be an interpreted frame");
282 return fr().interpreter_frame_local_at(offset);
|
238 // This is not the first frame so we either own this monitor
239 // or we owned the monitor before and called wait(). Because
240 // wait() could have been called on any monitor in a lower
241 // numbered frame on the stack, we have to check all the
242 // monitors on the list for this frame.
243 mark = monitor->owner()->mark();
244 if (mark->has_monitor() &&
245 ( // we have marked ourself as pending on this monitor
246 mark->monitor() == thread()->current_pending_monitor() ||
247 // we are not the owner of this monitor
248 !mark->monitor()->is_entered(thread())
249 )) {
250 lock_state = "waiting to re-lock in wait()";
251 } else {
252 // We own the monitor which is not as interesting so
253 // disable the extra printing below.
254 mark = NULL;
255 }
256 }
257 print_locked_object_class_name(st, Handle(THREAD, monitor->owner()), lock_state);
258
259 found_first_monitor = true;
260 }
261 }
262 }
263 }
264
265 // ------------- interpretedVFrame --------------
266
267 u_char* interpretedVFrame::bcp() const {
268 return fr().interpreter_frame_bcp();
269 }
270
271 void interpretedVFrame::set_bcp(u_char* bcp) {
272 fr().interpreter_frame_set_bcp(bcp);
273 }
274
275 intptr_t* interpretedVFrame::locals_addr_at(int offset) const {
276 assert(fr().is_interpreted_frame(), "frame should be an interpreted frame");
277 return fr().interpreter_frame_local_at(offset);
|