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

src/share/vm/gc_implementation/g1/g1MarkSweep.cpp

Print this page

        

*** 193,213 **** class G1PrepareCompactClosure: public HeapRegionClosure { G1CollectedHeap* _g1h; ModRefBarrierSet* _mrbs; CompactPoint _cp; ! HumongousRegionSet _humongous_proxy_set; void free_humongous_region(HeapRegion* hr) { HeapWord* end = hr->end(); ! size_t dummy_pre_used; ! FreeRegionList dummy_free_list("Dummy Free List for G1MarkSweep"); 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->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(); --- 193,215 ---- class G1PrepareCompactClosure: public HeapRegionClosure { G1CollectedHeap* _g1h; ModRefBarrierSet* _mrbs; CompactPoint _cp; ! HeapRegionSetCount _humongous_regions_removed; void free_humongous_region(HeapRegion* hr) { HeapWord* end = hr->end(); ! FreeRegionList dummy_free_list("Dummy Free List for G1MarkSweep", NULL); assert(hr->startsHumongous(), "Only the start of a humongous region should be freed."); ! ! 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 **** 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") { } 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 */); } bool doHeapRegion(HeapRegion* hr) { if (hr->isHumongous()) { if (hr->startsHumongous()) { --- 218,234 ---- public: G1PrepareCompactClosure(CompactibleSpace* cs) : _g1h(G1CollectedHeap::heap()), _mrbs(_g1h->g1_barrier_set()), _cp(NULL, cs, cs->initialize_threshold()), ! _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. ! 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