< prev index next >
src/hotspot/share/runtime/unhandledOops.cpp
Print this page
@@ -53,19 +53,19 @@
tty->cr();
}
// For debugging unhandled oop detector _in the debugger_
// You don't want to turn it on in compiled code here.
-static bool unhandled_oop_print=0;
+static Thread* unhandled_oop_print = NULL;
void UnhandledOops::register_unhandled_oop(oop* op, address pc) {
if (!_thread->is_in_stack((address)op))
return;
- _level ++;
- if (unhandled_oop_print) {
- for (int i=0; i<_level; i++) tty->print(" ");
+ _level++;
+ if (unhandled_oop_print == _thread) {
+ for (int i=0; i < _level; i++) tty->print(" ");
tty->print_cr("r " INTPTR_FORMAT, p2i(op));
}
UnhandledOopEntry entry(op, pc);
_oop_list->push(entry);
}
@@ -96,15 +96,15 @@
// oop list. All oops given are assumed to be on the list. If not,
// there's a bug in the unhandled oop detector.
void UnhandledOops::unregister_unhandled_oop(oop* op) {
if (!_thread->is_in_stack((address)op)) return;
- _level --;
- if (unhandled_oop_print) {
- for (int i=0; i<_level; i++) tty->print(" ");
+ if (unhandled_oop_print == _thread) {
+ for (int i=0; i < _level; i++) tty->print(" ");
tty->print_cr("u " INTPTR_FORMAT, p2i(op));
}
+ _level--;
int i = _oop_list->find_from_end(op, match_oop_entry);
assert(i!=-1, "oop not in unhandled_oop_list");
_oop_list->remove_at(i);
}
< prev index next >