< prev index next >

src/share/vm/gc/g1/heapRegionRemSet.cpp

Print this page
rev 11047 : [mq]: 8155233-jon-review

@@ -263,12 +263,11 @@
               false /* in-resource-area */),
   _fine_grain_regions(NULL),
   _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;
 
   if (_max_fine_entries == 0) {
     assert(_mod_max_fine_entries_mask == 0, "Both or none.");

@@ -503,11 +502,10 @@
 
   // Set the corresponding coarse bit.
   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++;
   }
 
   // Unsplice.
   *max_prev = max->collision_list_next();

@@ -519,14 +517,13 @@
 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 (_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);
 
   // Now do the fine-grained maps.
   for (size_t i = 0; i < _max_fine_entries; i++) {

@@ -649,13 +646,12 @@
     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 (_coarse_dirty) {
+  if (_n_coarse_entries > 0) {
     _coarse_map.clear();
-    _coarse_dirty = false;
   }
   _n_fine_entries = 0;
   _n_coarse_entries = 0;
 
   clear_fcc();
< prev index next >