src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Mon Feb 10 13:42:26 2014
--- new/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Mon Feb 10 13:42:26 2014

*** 193,213 **** --- 193,215 ---- class G1PrepareCompactClosure: public HeapRegionClosure { G1CollectedHeap* _g1h; ModRefBarrierSet* _mrbs; CompactPoint _cp; ! HumongousRegionSet _humongous_proxy_set; ! HeapRegionSetCount _humongous_regions_removed; void free_humongous_region(HeapRegion* hr) { HeapWord* end = hr->end(); ! size_t dummy_pre_used; FreeRegionList dummy_free_list("Dummy Free List for G1MarkSweep"); ! FreeRegionList dummy_free_list("Dummy Free List for G1MarkSweep", NULL); assert(hr->startsHumongous(), "Only the start of a humongous region should be freed."); _g1h->free_humongous_region(hr, &dummy_pre_used, &dummy_free_list, ! &_humongous_proxy_set, false /* par */); + ! hr->set_containing_set(NULL); + _humongous_regions_removed.increment(1u, hr->capacity()); + + _g1h->free_humongous_region(hr, &dummy_free_list, false /* par */); hr->prepare_for_compaction(&_cp); // Also clear the part of the card table that will be unused after // compaction. _mrbs->clear(MemRegion(hr->compaction_top(), end)); dummy_free_list.remove_all();
*** 216,235 **** --- 218,234 ---- public: G1PrepareCompactClosure(CompactibleSpace* cs) : _g1h(G1CollectedHeap::heap()), _mrbs(_g1h->g1_barrier_set()), _cp(NULL, cs, cs->initialize_threshold()), ! _humongous_proxy_set("G1MarkSweep Humongous Proxy Set") { } ! _humongous_regions_removed() { } void update_sets() { // We'll recalculate total used bytes and recreate the free list // at the end of the GC, so no point in updating those values here. _g1h->update_sets_after_freeing_regions(0, /* pre_used */ NULL, /* free_list */ NULL, /* old_proxy_set */ &_humongous_proxy_set, false /* par */); + HeapRegionSetCount empty_set; + _g1h->remove_from_sets(empty_set, _humongous_regions_removed); } bool doHeapRegion(HeapRegion* hr) { if (hr->isHumongous()) { if (hr->startsHumongous()) {

src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File