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

Print this page
rev 6671 : imported patch bengt-fixes
rev 6672 : imported patch bengt-fixes2

*** 889,898 **** --- 889,902 ---- // Repeat the asserts from above. guarantee(cmThread()->during_cycle(), "invariant"); guarantee(!g1h->mark_in_progress(), "invariant"); } + bool ConcurrentMark::nextMarkBitmapIsClear() { + return _nextMarkBitMap->getNextMarkedWordAddress(_heap_start, _heap_end) == _heap_end; + } + class NoteStartOfMarkHRClosure: public HeapRegionClosure { public: bool doHeapRegion(HeapRegion* r) { if (!r->continuesHumongous()) { r->note_start_of_marking();
*** 3356,3366 **** } } // abandon current marking iteration due to a Full GC void ConcurrentMark::abort() { ! // Clear all marks to force marking thread to do nothing _nextMarkBitMap->clearAll(); // Note we cannot clear the previous marking bitmap here // since VerifyDuringGC verifies the objects marked during // a full GC against the previous bitmap. --- 3360,3371 ---- } } // abandon current marking iteration due to a Full GC void ConcurrentMark::abort() { ! // Clear all marks in the next bitmap for the next marking cycle. This will allow us to skip the next ! // concurrent bitmap clearing. _nextMarkBitMap->clearAll(); // Note we cannot clear the previous marking bitmap here // since VerifyDuringGC verifies the objects marked during // a full GC against the previous bitmap.