< prev index next >

src/share/vm/services/threadService.cpp

Print this page

        

@@ -164,10 +164,11 @@
       obj = (oop) enter_obj->object();
     }
     // If obj == NULL, then ObjectMonitor is raw which doesn't count.
   }
 
+  obj = oopDesc::bs()->write_barrier(obj);
   Handle h(obj);
   return h;
 }
 
 bool ThreadService::set_thread_monitoring_contention(bool flag) {

@@ -587,18 +588,21 @@
 
 
 bool ThreadStackTrace::is_owned_monitor_on_stack(oop object) {
   assert(SafepointSynchronize::is_at_safepoint(), "all threads are stopped");
 
+  object = oopDesc::bs()->write_barrier(object);
+
   bool found = false;
   int num_frames = get_stack_depth();
   for (int depth = 0; depth < num_frames; depth++) {
     StackFrameInfo* frame = stack_frame_at(depth);
     int len = frame->num_locked_monitors();
     GrowableArray<oop>* locked_monitors = frame->locked_monitors();
     for (int j = 0; j < len; j++) {
       oop monitor = locked_monitors->at(j);
+      monitor = oopDesc::bs()->write_barrier(monitor);
       assert(monitor != NULL, "must be a Java object");
       if (monitor == object) {
         found = true;
         break;
       }
< prev index next >