< prev index next >

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

Print this page

        

*** 277,288 **** if (obj->is_gc_marked()) { obj->init_mark(); } else { assert(hr->is_empty(), "Should have been cleared in phase 2."); } - hr->reset_during_compaction(); } } else if (!hr->is_pinned()) { hr->compact(); } return false; } --- 277,288 ---- if (obj->is_gc_marked()) { obj->init_mark(); } else { assert(hr->is_empty(), "Should have been cleared in phase 2."); } } + hr->reset_during_compaction(); } else if (!hr->is_pinned()) { hr->compact(); } return false; }
*** 332,344 **** void G1PrepareCompactClosure::free_humongous_region(HeapRegion* hr) { HeapWord* end = hr->end(); FreeRegionList dummy_free_list("Dummy Free List for G1MarkSweep"); - assert(hr->is_starts_humongous(), - "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 */); prepare_for_compaction(hr, end); --- 332,341 ----
*** 371,389 **** _g1h->remove_from_old_sets(empty_set, _humongous_regions_removed); } bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) { if (hr->is_humongous()) { ! if (hr->is_starts_humongous()) { ! oop obj = oop(hr->bottom()); ! if (obj->is_gc_marked()) { obj->forward_to(obj); - } else { - free_humongous_region(hr); } ! } else { ! assert(hr->is_continues_humongous(), "Invalid humongous."); } } else if (!hr->is_pinned()) { prepare_for_compaction(hr, hr->end()); } return false; --- 368,383 ---- _g1h->remove_from_old_sets(empty_set, _humongous_regions_removed); } bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) { if (hr->is_humongous()) { ! oop obj = oop(hr->humongous_start_region()->bottom()); ! if (hr->is_starts_humongous() && obj->is_gc_marked()) { obj->forward_to(obj); } ! if (!obj->is_gc_marked()) { ! free_humongous_region(hr); } } else if (!hr->is_pinned()) { prepare_for_compaction(hr, hr->end()); } return false;
< prev index next >