src/share/vm/memory/genMarkSweep.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/memory/genMarkSweep.cpp Wed Aug 14 08:58:55 2013
--- new/src/share/vm/memory/genMarkSweep.cpp Wed Aug 14 08:58:54 2013
*** 50,61 ****
--- 50,61 ----
#include "runtime/thread.inline.hpp"
#include "runtime/vmThread.hpp"
#include "utilities/copy.hpp"
#include "utilities/events.hpp"
! void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp, bool clear_all_softrefs) {
bool clear_all_softrefs) {
+ guarantee(level == 1, "We always collect both old and young.");
assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
GenCollectedHeap* gch = GenCollectedHeap::heap();
#ifdef ASSERT
if (gch->collector_policy()->should_clear_all_soft_refs()) {
*** 82,96 ****
--- 82,91 ----
_total_invocations++;
// Capture heap size before collection for printing.
size_t gch_prev_used = gch->used();
// Some of the card table updates below assume that the perm gen is
// also being collected.
assert(level == gch->n_gens() - 1,
"All generations are being collected, ergo perm gen too.");
// Capture used regions for each generation that will be
// subject to collection, so that card table adjustments can
// be made intelligently (see clear / invalidate further below).
gch->save_used_regions(level);
*** 132,144 ****
--- 127,139 ----
Generation* g = gch->get_gen(level);
rs->clear_into_younger(g);
} else {
// Invalidate the cards corresponding to the currently used
// region and clear those corresponding to the evacuated region
- // of all generations just collected (i.e. level and younger).
! rs->invalidate_or_clear(gch->get_gen(level),
! true /* younger */);
! rs->invalidate_or_clear(gch->get_gen(1));
! rs->invalidate_or_clear(gch->get_gen(0));
}
Threads::gc_epilogue();
CodeCache::gc_epilogue();
JvmtiExport::gc_epilogue();
src/share/vm/memory/genMarkSweep.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File