diff src/share/vm/memory/genMarkSweep.cpp @ 12033:bd902affe102

8023021: Unnecessary clearing of the card table introduced by the fix for JDK-8023013 Reviewed-by: stefank, ehelin
author brutisso
date Thu, 15 Aug 2013 10:05:50 +0200
parents 330dfb0476f4
children 870aedf4ba4f 0982ec23da03
line wrap: on
line diff
--- a/src/share/vm/memory/genMarkSweep.cpp	Wed Aug 14 13:49:36 2013 +0200
+++ b/src/share/vm/memory/genMarkSweep.cpp	Thu Aug 15 10:05:50 2013 +0200
@@ -121,17 +121,15 @@
     all_empty = all_empty && gch->get_gen(i)->used() == 0;
   }
   GenRemSet* rs = gch->rem_set();
+  Generation* old_gen = gch->get_gen(level);
   // Clear/invalidate below make use of the "prev_used_regions" saved earlier.
   if (all_empty) {
     // We've evacuated all generations below us.
-    Generation* g = gch->get_gen(level);
-    rs->clear_into_younger(g);
+    rs->clear_into_younger(old_gen);
   } else {
     // Invalidate the cards corresponding to the currently used
-    // region and clear those corresponding to the evacuated region
-    // of all generations just collected.
-    rs->invalidate_or_clear(gch->get_gen(1));
-    rs->invalidate_or_clear(gch->get_gen(0));
+    // region and clear those corresponding to the evacuated region.
+    rs->invalidate_or_clear(old_gen);
   }
 
   Threads::gc_epilogue();