< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
Print this page
rev 51816 : imported patch 8210557-more-logging
*** 714,745 ****
void G1ConcurrentMark::clear_prev_bitmap(WorkGang* workers) {
assert_at_safepoint_on_vm_thread();
clear_bitmap(_prev_mark_bitmap, workers, false);
}
- class CheckBitmapClearHRClosure : public HeapRegionClosure {
- G1CMBitMap* _bitmap;
- public:
- CheckBitmapClearHRClosure(G1CMBitMap* bitmap) : _bitmap(bitmap) {
- }
-
- virtual bool do_heap_region(HeapRegion* r) {
- // This closure can be called concurrently to the mutator, so we must make sure
- // that the result of the getNextMarkedWordAddress() call is compared to the
- // value passed to it as limit to detect any found bits.
- // end never changes in G1.
- HeapWord* end = r->end();
- return _bitmap->get_next_marked_addr(r->bottom(), end) != end;
- }
- };
-
- bool G1ConcurrentMark::next_mark_bitmap_is_clear() {
- CheckBitmapClearHRClosure cl(_next_mark_bitmap);
- _g1h->heap_region_iterate(&cl);
- return cl.is_complete();
- }
-
class NoteStartOfMarkHRClosure : public HeapRegionClosure {
public:
bool do_heap_region(HeapRegion* r) {
r->note_start_of_marking();
return false;
--- 714,723 ----
< prev index next >