< prev index next >

src/hotspot/share/gc/g1/g1ConcurrentMark.cpp

Print this page
rev 49502 : imported patch 8199742-collectorstate-fixes
rev 49504 : imported patch 8151171-renamings
rev 49505 : [mq]: 8151171-stefanj-review
rev 49506 : imported patch 8200234-g1concurrentmark-refactorings
rev 49507 : imported patch 8200234-stefanj-review
rev 49510 : 8200255: Remove G1CMTask::_concurrent
Reviewed-by: sangheki, sjohanss
rev 49511 : 8200074: Remove G1ConcurrentMark::_concurrent_marking_in_progress
Reviewed-by: sjohanss, sangheki
rev 49512 : imported patch 8200305-gc,liveness-output
rev 49513 : [mq]: 8200385-prev-bitmap-marks-left

*** 527,546 **** } else { clear_statistics_in_region(region_idx); } } void G1ConcurrentMark::humongous_object_eagerly_reclaimed(HeapRegion* r) { assert_at_safepoint_on_vm_thread(); ! // Need to clear mark bit of the humongous object. ! if (_next_mark_bitmap->is_marked(r->bottom())) { ! _next_mark_bitmap->clear(r->bottom()); ! } ! if (!_g1h->collector_state()->mark_or_rebuild_in_progress()) { ! return; } // Clear any statistics about the region gathered so far. clear_statistics(r); } --- 527,552 ---- } else { clear_statistics_in_region(region_idx); } } + static void maybe_clear_bitmap_if_set(G1CMBitMap* bitmap, HeapWord* addr) { + if (bitmap->is_marked(addr)) { + bitmap->clear(addr); + } + } + void G1ConcurrentMark::humongous_object_eagerly_reclaimed(HeapRegion* r) { assert_at_safepoint_on_vm_thread(); ! // Need to clear all mark bits of the humongous object. ! maybe_clear_bitmap_if_set(_prev_mark_bitmap, r->bottom()); ! G1CollectorState* collector_state = _g1h->collector_state(); ! if (collector_state->mark_or_rebuild_in_progress() || ! collector_state->clearing_next_bitmap()) { ! maybe_clear_bitmap_if_set(_next_mark_bitmap, r->bottom()); } // Clear any statistics about the region gathered so far. clear_statistics(r); }
< prev index next >