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