< prev index next >

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

Print this page

        

*** 368,392 **** _g1h->remove_from_old_sets(empty_set, _humongous_regions_removed); } bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) { if (hr->is_humongous()) { ! oop obj; ! if (hr->is_starts_humongous()) { ! 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."); - obj = oop(hr->humongous_start_region()->bottom()); if (!obj->is_gc_marked()) { free_humongous_region(hr); } - } } else if (!hr->is_pinned()) { prepare_for_compaction(hr, hr->end()); } return false; } --- 368,384 ---- _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 >