< prev index next >

src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp

Print this page
rev 49680 : imported patch 6672778-partial-queue-trimming
rev 49681 : [mq]: 6672778-refactoring

@@ -164,13 +164,16 @@
   _gc_start_counter = os::elapsed_counter();
   reset();
 }
 
 #define ASSERT_PHASE_UNINITIALIZED(phase) \
-    assert(_gc_par_phases[phase]->get(i) == uninitialized, "Phase " #phase " reported for thread that was not started");
+    assert(_gc_par_phases[phase] == NULL || _gc_par_phases[phase]->get(i) == uninitialized, "Phase " #phase " reported for thread that was not started");
 
 double G1GCPhaseTimes::worker_time(GCParPhases phase, uint worker) {
+  if (_gc_par_phases[phase] == NULL) {
+    return 0.0;
+  }
   double value = _gc_par_phases[phase]->get(worker);
   if (value != WorkerDataArray<double>::uninitialized()) {
     return value;
   }
   return 0.0;

@@ -189,10 +192,11 @@
       record_time_secs(GCWorkerTotal, i , total_worker_time);
 
       double worker_known_time =
           worker_time(ExtRootScan, i)
           + worker_time(SATBFiltering, i)
+          + worker_time(ScanHCC, i)
           + worker_time(UpdateRS, i)
           + worker_time(ScanRS, i)
           + worker_time(CodeRoots, i)
           + worker_time(ObjCopy, i)
           + worker_time(Termination, i);

@@ -201,10 +205,11 @@
     } else {
       // Make sure all slots are uninitialized since this thread did not seem to have been started
       ASSERT_PHASE_UNINITIALIZED(GCWorkerEnd);
       ASSERT_PHASE_UNINITIALIZED(ExtRootScan);
       ASSERT_PHASE_UNINITIALIZED(SATBFiltering);
+      ASSERT_PHASE_UNINITIALIZED(ScanHCC);
       ASSERT_PHASE_UNINITIALIZED(UpdateRS);
       ASSERT_PHASE_UNINITIALIZED(ScanRS);
       ASSERT_PHASE_UNINITIALIZED(CodeRoots);
       ASSERT_PHASE_UNINITIALIZED(ObjCopy);
       ASSERT_PHASE_UNINITIALIZED(Termination);
< prev index next >