diff src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp @ 20293:7df07d855c8e

8048085: Aborting marking just before remark results in useless additional clearing of the next mark bitmap Summary: Skip clearing the next bitmap if we just recently aborted since the full GC already clears this bitmap. Reviewed-by: brutisso
author tschatzl
date Mon, 21 Jul 2014 09:59:46 +0200
parents 581e70386ec9
children
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Mon Jul 21 09:59:37 2014 +0200
+++ b/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp	Mon Jul 21 09:59:46 2014 +0200
@@ -275,9 +275,13 @@
 
       // We now want to allow clearing of the marking bitmap to be
       // suspended by a collection pause.
-      {
+      // We may have aborted just before the remark. Do not bother clearing the
+      // bitmap then, as it has been done during mark abort.
+      if (!cm()->has_aborted()) {
         SuspendibleThreadSetJoiner sts;
         _cm->clearNextBitmap();
+      } else {
+        assert(!G1VerifyBitmaps || _cm->nextMarkBitmapIsClear(), "Next mark bitmap must be clear");
       }
     }