< prev index next >

src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp

Print this page

        

@@ -2906,10 +2906,11 @@
   //        "inconsistent argument?");
   // However that wouldn't be right, because it's possible that
   // a safepoint is indeed in progress as a young generation
   // stop-the-world GC happens even as we mark in this generation.
   assert(_collectorState == Marking, "inconsistent state?");
+  _gc_timer_cm->register_gc_concurrent_start("Concurrent Mark");
   check_correct_thread_executing();
   verify_overflow_empty();
 
   // Weak ref discovery note: We may be discovering weak
   // refs in this generation concurrent (but interleaved) with

@@ -2925,10 +2926,11 @@
     assert(_foregroundGCIsActive, "internal state inconsistency");
     assert(_restart_addr == NULL,  "foreground will restart from scratch");
     log_debug(gc)("bailing out to foreground collection");
   }
   verify_overflow_empty();
+  _gc_timer_cm->register_gc_concurrent_end();
   return res;
 }
 
 bool CMSCollector::markFromRootsWork() {
   // iterate over marked bits in bit map, doing a full scan and mark

@@ -5291,10 +5293,11 @@
 }
 #endif
 
 void CMSCollector::sweep() {
   assert(_collectorState == Sweeping, "just checking");
+  _gc_timer_cm->register_gc_concurrent_start("Concurrent Sweep");
   check_correct_thread_executing();
   verify_work_stacks_empty();
   verify_overflow_empty();
   increment_sweep_count();
   TraceCMSMemoryManagerStats tms(_collectorState,GenCollectedHeap::heap()->gc_cause());

@@ -5371,10 +5374,11 @@
   // the flag will be set again when a young collection is
   // attempted.
   GenCollectedHeap* gch = GenCollectedHeap::heap();
   gch->clear_incremental_collection_failed();  // Worth retrying as fresh space may have been freed up
   gch->update_full_collections_completed(_collection_count_start);
+  _gc_timer_cm->register_gc_concurrent_end();
 }
 
 // FIX ME!!! Looks like this belongs in CFLSpace, with
 // CMSGen merely delegating to it.
 void ConcurrentMarkSweepGeneration::setNearLargestChunk() {
< prev index next >