src/share/vm/code/nmethod.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/code/nmethod.cpp Fri Nov 8 14:10:12 2013
--- new/src/share/vm/code/nmethod.cpp Fri Nov 8 14:10:12 2013
*** 1260,1270 ****
--- 1260,1270 ----
// The Method* is gone at this point
assert(_method == NULL, "Tautology");
set_osr_link(NULL);
//set_scavenge_root_link(NULL); // done by prune_scavenge_root_nmethods
! NMethodSweeper::notify();
! NMethodSweeper::report_state_change(this);
}
void nmethod::invalidate_osr_method() {
assert(_entry_bci != InvocationEntryBci, "wrong kind of nmethod");
// Remove from list of active nmethods
*** 1294,1304 ****
--- 1294,1306 ----
if (PrintCompilation && _state != unloaded) {
print_on(tty, _state == zombie ? "made zombie" : "made not entrant");
}
}
// Common functionality for both make_not_entrant and make_zombie
+ /**
+ * Common functionality for both make_not_entrant and make_zombie
+ */
bool nmethod::make_not_entrant_or_zombie(unsigned int state) {
assert(state == zombie || state == not_entrant, "must be zombie or not_entrant");
assert(!is_zombie(), "should not already be a zombie");
// Make sure neither the nmethod nor the method is flushed in case of a safepoint in code below.
*** 1418,1430 ****
--- 1420,1430 ----
if (TraceCreateZombies) {
tty->print_cr("nmethod <" INTPTR_FORMAT "> code made %s", this, (state == not_entrant) ? "not entrant" : "zombie");
}
// Make sweeper aware that there is a zombie method that needs to be removed
NMethodSweeper::notify();
+ NMethodSweeper::report_state_change(this);
return true;
}
void nmethod::flush() {
// Note that there are no valid oops in the nmethod anymore.
src/share/vm/code/nmethod.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File