< prev index next >

src/hotspot/share/gc/g1/collectionSetChooser.cpp

Print this page
rev 51652 : Added support for eager mixed collection of evacuation failure regions
rev 52017 : All changes for G1 GC moved from 'combined' repo folder

@@ -47,10 +47,18 @@
     }
   } else if (hr2 == NULL) {
     return -1;
   }
 
+  if (hr1->is_premature_old() && !hr2->is_premature_old()) {
+    return -1;
+  }
+
+  if (hr2->is_premature_old() && !hr1->is_premature_old()) {
+    return 1;
+  }
+
   double gc_eff1 = hr1->gc_efficiency();
   double gc_eff2 = hr2->gc_efficiency();
   if (gc_eff1 > gc_eff2) {
     return -1;
   } if (gc_eff1 < gc_eff2) {

@@ -281,11 +289,11 @@
 }
 
 bool CollectionSetChooser::should_add(HeapRegion* hr) const {
   return !hr->is_young() &&
          !hr->is_pinned() &&
-         region_occupancy_low_enough_for_evac(hr->live_bytes()) &&
+         (hr->is_premature_old() || region_occupancy_low_enough_for_evac(hr->live_bytes())) &&
          hr->rem_set()->is_complete();
 }
 
 void CollectionSetChooser::rebuild(WorkGang* workers, uint n_regions) {
   clear();
< prev index next >