equal
deleted
inserted
replaced
887 clear_all_count_data(); |
887 clear_all_count_data(); |
888 |
888 |
889 // Repeat the asserts from above. |
889 // Repeat the asserts from above. |
890 guarantee(cmThread()->during_cycle(), "invariant"); |
890 guarantee(cmThread()->during_cycle(), "invariant"); |
891 guarantee(!g1h->mark_in_progress(), "invariant"); |
891 guarantee(!g1h->mark_in_progress(), "invariant"); |
|
892 } |
|
893 |
|
894 bool ConcurrentMark::nextMarkBitmapIsClear() { |
|
895 return _nextMarkBitMap->getNextMarkedWordAddress(_heap_start, _heap_end) == _heap_end; |
892 } |
896 } |
893 |
897 |
894 class NoteStartOfMarkHRClosure: public HeapRegionClosure { |
898 class NoteStartOfMarkHRClosure: public HeapRegionClosure { |
895 public: |
899 public: |
896 bool doHeapRegion(HeapRegion* r) { |
900 bool doHeapRegion(HeapRegion* r) { |
3356 } |
3360 } |
3357 } |
3361 } |
3358 |
3362 |
3359 // abandon current marking iteration due to a Full GC |
3363 // abandon current marking iteration due to a Full GC |
3360 void ConcurrentMark::abort() { |
3364 void ConcurrentMark::abort() { |
3361 // Clear all marks to force marking thread to do nothing |
3365 // Clear all marks in the next bitmap for the next marking cycle. This will allow us to skip the next |
|
3366 // concurrent bitmap clearing. |
3362 _nextMarkBitMap->clearAll(); |
3367 _nextMarkBitMap->clearAll(); |
3363 |
3368 |
3364 // Note we cannot clear the previous marking bitmap here |
3369 // Note we cannot clear the previous marking bitmap here |
3365 // since VerifyDuringGC verifies the objects marked during |
3370 // since VerifyDuringGC verifies the objects marked during |
3366 // a full GC against the previous bitmap. |
3371 // a full GC against the previous bitmap. |