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

changeset 7016
3bf2fc51186b
parent 6996
f3aeae1f9fc5
child 7020
e02e18f40eae
     1.1 --- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Mon Jul 21 09:59:37 2014 +0200
     1.2 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Mon Jul 21 09:59:46 2014 +0200
     1.3 @@ -890,6 +890,10 @@
     1.4    guarantee(!g1h->mark_in_progress(), "invariant");
     1.5  }
     1.6  
     1.7 +bool ConcurrentMark::nextMarkBitmapIsClear() {
     1.8 +  return _nextMarkBitMap->getNextMarkedWordAddress(_heap_start, _heap_end) == _heap_end;
     1.9 +}
    1.10 +
    1.11  class NoteStartOfMarkHRClosure: public HeapRegionClosure {
    1.12  public:
    1.13    bool doHeapRegion(HeapRegion* r) {
    1.14 @@ -3358,7 +3362,8 @@
    1.15  
    1.16  // abandon current marking iteration due to a Full GC
    1.17  void ConcurrentMark::abort() {
    1.18 -  // Clear all marks to force marking thread to do nothing
    1.19 +  // Clear all marks in the next bitmap for the next marking cycle. This will allow us to skip the next
    1.20 +  // concurrent bitmap clearing.
    1.21    _nextMarkBitMap->clearAll();
    1.22    // Clear the liveness counting data
    1.23    clear_all_count_data();

mercurial