8254695: G1: Next mark bitmap clear not cancelled after marking abort

Reviewed-by: iwalulya, sjohanss
This commit is contained in:
Thomas Schatzl 2020-10-16 09:19:22 +00:00
parent 34583ebdfc
commit 1742c44ac9

View File

@ -594,15 +594,19 @@ private:
HeapWord* const end = r->end();
while (cur < end) {
// Abort iteration if necessary.
if (_cm != NULL) {
_cm->do_yield_check();
if (_cm->has_aborted()) {
return true;
}
}
MemRegion mr(cur, MIN2(cur + chunk_size_in_words, end));
_bitmap->clear_range(mr);
cur += chunk_size_in_words;
// Abort iteration if after yielding the marking has been aborted.
if (_cm != NULL && _cm->do_yield_check() && _cm->has_aborted()) {
return true;
}
// Repeat the asserts from before the start of the closure. We will do them
// as asserts here to minimize their overhead on the product. However, we
// will have them as guarantees at the beginning / end of the bitmap