Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/hotspot/share/oops/oopsHierarchy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ void oop::register_oop() {
// This gets expensive, which is why checking unhandled oops is on a switch.
Thread* t = Thread::current_or_null();
if (t != NULL && t->is_Java_thread()) {
frame fr = os::current_frame();
t->unhandled_oops()->register_unhandled_oop(this, fr.pc());
t->unhandled_oops()->register_unhandled_oop(this);
}
}

Expand Down
7 changes: 3 additions & 4 deletions src/hotspot/share/runtime/unhandledOops.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ void UnhandledOops::dump_oops(UnhandledOops *list) {
// You don't want to turn it on in compiled code here.
static bool unhandled_oop_print=0;

void UnhandledOops::register_unhandled_oop(oop* op, address pc) {
void UnhandledOops::register_unhandled_oop(oop* op) {
if (!_thread->is_in_stack((address)op))
return;

Expand All @@ -67,7 +67,7 @@ void UnhandledOops::register_unhandled_oop(oop* op, address pc) {
for (int i=0; i<_level; i++) tty->print(" ");
tty->print_cr("r " INTPTR_FORMAT, p2i(op));
}
UnhandledOopEntry entry(op, pc);
UnhandledOopEntry entry(op);
_oop_list->push(entry);
}

Expand Down Expand Up @@ -120,8 +120,7 @@ void UnhandledOops::clear_unhandled_oops() {
// in the unhandled oop generator.
if(!_thread->is_in_stack((address)entry._oop_ptr)) {
tty->print_cr("oop_ptr is " INTPTR_FORMAT, p2i(entry._oop_ptr));
tty->print_cr("thread is " INTPTR_FORMAT " from pc " INTPTR_FORMAT,
p2i(_thread), p2i(entry._pc));
tty->print_cr("thread is " INTPTR_FORMAT, p2i(_thread));
assert(false, "heap is corrupted by the unhandled oop detector");
}
// Set unhandled oops to a pattern that will crash distinctively
Expand Down
9 changes: 4 additions & 5 deletions src/hotspot/share/runtime/unhandledOops.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,11 @@ class UnhandledOopEntry : public CHeapObj<mtThread> {
private:
oop* _oop_ptr;
bool _ok_for_gc;
address _pc;
public:
oop* oop_ptr() { return _oop_ptr; }
UnhandledOopEntry() : _oop_ptr(NULL), _ok_for_gc(false), _pc(NULL) {}
UnhandledOopEntry(oop* op, address pc) :
_oop_ptr(op), _ok_for_gc(false), _pc(pc) {}
UnhandledOopEntry() : _oop_ptr(NULL), _ok_for_gc(false) {}
UnhandledOopEntry(oop* op) :
_oop_ptr(op), _ok_for_gc(false) {}
};


Expand All @@ -75,7 +74,7 @@ class UnhandledOops : public CHeapObj<mtThread> {

public:
static void dump_oops(UnhandledOops* list);
void register_unhandled_oop(oop* op, address pc);
void register_unhandled_oop(oop* op);
void unregister_unhandled_oop(oop* op);
};

Expand Down