< prev index next >
src/share/vm/gc/g1/heapRegionRemSet.cpp
Print this page
rev 11047 : [mq]: 8155233-jon-review
@@ -517,12 +517,14 @@
void OtherRegionsTable::scrub(G1CardLiveData* live_data) {
// First eliminated garbage regions from the coarse map.
log_develop_trace(gc, remset, scrub)("Scrubbing region %u:", _hr->hrm_index());
log_develop_trace(gc, remset, scrub)(" Coarse map: before = " SIZE_FORMAT "...", _n_coarse_entries);
+ if (_n_coarse_entries > 0) {
live_data->remove_nonlive_regions(&_coarse_map);
_n_coarse_entries = _coarse_map.count_one_bits();
+ }
log_develop_trace(gc, remset, scrub)(" after = " SIZE_FORMAT ".", _n_coarse_entries);
// Now do the fine-grained maps.
for (size_t i = 0; i < _max_fine_entries; i++) {
PerRegionTable* cur = _fine_grain_regions[i];
@@ -644,11 +646,13 @@
guarantee(_first_all_fine_prts == NULL && _last_all_fine_prts == NULL, "just checking");
}
_first_all_fine_prts = _last_all_fine_prts = NULL;
_sparse_table.clear();
+ if (_n_coarse_entries > 0) {
_coarse_map.clear();
+ }
_n_fine_entries = 0;
_n_coarse_entries = 0;
clear_fcc();
}
< prev index next >