< prev index next >
src/hotspot/share/gc/g1/g1CollectionSet.cpp
Print this page
rev 55280 : [mq]: 8225418-region-attr-incorrectly-cleared
@@ -517,21 +517,29 @@
move_candidates_to_collection_set(num_selected_regions);
_num_optional_regions -= num_selected_regions;
stop_incremental_building();
+
+ _g1h->verify_region_attr_remset_update();
+
return num_selected_regions > 0;
}
void G1CollectionSet::abandon_optional_collection_set(G1ParScanThreadStateSet* pss) {
for (uint i = 0; i < _num_optional_regions; i++) {
HeapRegion* r = candidates()->at(candidates()->cur_idx() + i);
pss->record_unused_optional_region(r);
+ // Clear collection set marker and make sure that the remembered set information
+ // is correct as we still need it later.
_g1h->clear_region_attr(r);
+ _g1h->register_region_with_region_attr(r);
r->clear_index_in_opt_cset();
}
free_optional_regions();
+
+ _g1h->verify_region_attr_remset_update();
}
#ifdef ASSERT
class G1VerifyYoungCSetIndicesClosure : public HeapRegionClosure {
private:
< prev index next >