--- a/hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp Mon May 02 14:13:05 2016 +0200
+++ b/hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp Mon May 02 14:14:16 2016 +0200
@@ -265,8 +265,7 @@
_first_all_fine_prts(NULL), _last_all_fine_prts(NULL),
_n_fine_entries(0), _n_coarse_entries(0),
_fine_eviction_start(0),
- _sparse_table(hr),
- _coarse_dirty(false)
+ _sparse_table(hr)
{
typedef PerRegionTable* PerRegionTablePtr;
@@ -505,7 +504,6 @@
size_t max_hrm_index = (size_t) max->hr()->hrm_index();
if (!_coarse_map.at(max_hrm_index)) {
_coarse_map.at_put(max_hrm_index, true);
- _coarse_dirty = true;
_n_coarse_entries++;
}
@@ -521,10 +519,9 @@
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 (_coarse_dirty) {
+ if (_n_coarse_entries > 0) {
live_data->remove_nonlive_regions(&_coarse_map);
_n_coarse_entries = _coarse_map.count_one_bits();
- _coarse_dirty = _n_coarse_entries != 0;
}
log_develop_trace(gc, remset, scrub)(" after = " SIZE_FORMAT ".", _n_coarse_entries);
@@ -651,9 +648,8 @@
_first_all_fine_prts = _last_all_fine_prts = NULL;
_sparse_table.clear();
- if (_coarse_dirty) {
+ if (_n_coarse_entries > 0) {
_coarse_map.clear();
- _coarse_dirty = false;
}
_n_fine_entries = 0;
_n_coarse_entries = 0;
--- a/hotspot/src/share/vm/gc/g1/heapRegionRemSet.hpp Mon May 02 14:13:05 2016 +0200
+++ b/hotspot/src/share/vm/gc/g1/heapRegionRemSet.hpp Mon May 02 14:14:16 2016 +0200
@@ -79,7 +79,6 @@
HeapRegion* _hr;
// These are protected by "_m".
- bool _coarse_dirty;
BitMap _coarse_map;
size_t _n_coarse_entries;
static jint _n_coarsenings;