src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp

Print this page
rev 6666 : 8048085: Aborting marking just before remark results in useless additional clearing of the next mark bitmap
Summary: After concurrent mark abort due to Full GC G1 unnecessarily clears the next mark bitmap a second time concurrently. The Full GC mark abort procedure already did that. Before clearing the next mark bitmap, check whether mark abort occurred to avoid this work.
Reviewed-by: tbd

@@ -275,11 +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();
       }
     }