< prev index next >

src/share/vm/gc/g1/g1CollectedHeap.cpp

Print this page

        

@@ -2325,16 +2325,21 @@
   _cmThread->set_gc_id(GCId::current());
 }
 
 void G1CollectedHeap::register_concurrent_cycle_end() {
   if (collector_state()->concurrent_cycle_started()) {
+    Ticks end_tick = Ticks::now();
     GCIdMarkAndRestore conc_gc_id_mark(_cmThread->gc_id());
     if (_cm->has_aborted()) {
       _gc_tracer_cm->report_concurrent_mode_failure();
+
+      if (_cm->concurrent_marking_from_roots()) {
+        _gc_timer_cm->register_gc_concurrent_end(end_tick);
+      }
     }
 
-    _gc_timer_cm->register_gc_end();
+    _gc_timer_cm->register_gc_end(end_tick);
     _gc_tracer_cm->report_gc_end(_gc_timer_cm->gc_end(), _gc_timer_cm->time_partitions());
 
     // Clear state variables to prepare for the next concurrent cycle.
      collector_state()->set_concurrent_cycle_started(false);
     _heap_summary_sent = false;
< prev index next >