< 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 >