8284995: G1: Do not mark through Closed Archive regions during concurrent mark

Reviewed-by: iwalulya, ayang
This commit is contained in:
Thomas Schatzl 2022-04-22 09:04:42 +00:00
parent 165f516101
commit 82f0ac02e0
2 changed files with 5 additions and 1 deletions

@ -1898,6 +1898,7 @@ G1ConcurrentMark::claim_region(uint worker_id) {
assert(_finger >= end, "the finger should have moved forward");
if (limit > bottom) {
assert(!curr_region->is_closed_archive(), "CA regions should be skipped");
return curr_region;
} else {
assert(limit == bottom,

@ -242,7 +242,10 @@ inline void HeapRegion::update_bot_for_obj(HeapWord* obj_start, size_t obj_size)
inline void HeapRegion::note_start_of_marking() {
_next_marked_bytes = 0;
_next_top_at_mark_start = top();
if (!is_closed_archive()) {
_next_top_at_mark_start = top();
}
assert(!is_closed_archive() || next_top_at_mark_start() == bottom(), "CA region's nTAMS must always be at bottom");
_gc_efficiency = -1.0;
}