< prev index next >
src/share/vm/gc/g1/concurrentMarkThread.cpp
Print this page
*** 187,208 ****
if (!cm()->has_aborted()) {
G1ConcPhaseTimer t(_cm, "Concurrent Create Live Data");
cm()->create_live_data();
}
! double end_time = os::elapsedVTime();
! // Update the total virtual time before doing this, since it will try
! // to measure it to get the vtime for this marking. We purposely
! // neglect the presumably-short "completeCleanup" phase here.
! _vtime_accum = (end_time - _vtime_start);
if (!cm()->has_aborted()) {
delay_to_keep_mmu(g1_policy, false /* cleanup */);
CMCleanUp cl_cl(_cm);
VM_CGC_Operation op(&cl_cl, "Pause Cleanup", false /* needs_pll */);
VMThread::execute(&op);
} else {
// We don't want to update the marking status if a GC pause
// is already underway.
SuspendibleThreadSetJoiner sts_join;
g1h->collector_state()->set_mark_in_progress(false);
--- 187,209 ----
if (!cm()->has_aborted()) {
G1ConcPhaseTimer t(_cm, "Concurrent Create Live Data");
cm()->create_live_data();
}
! double remark_end_time = os::elapsedVTime();
! _vtime_accum = (remark_end_time - _vtime_start);
if (!cm()->has_aborted()) {
delay_to_keep_mmu(g1_policy, false /* cleanup */);
CMCleanUp cl_cl(_cm);
VM_CGC_Operation op(&cl_cl, "Pause Cleanup", false /* needs_pll */);
VMThread::execute(&op);
+
+ double cleanup_end_time = os::elapsedVTime();
+ // Update the total virtual time for 'Pause Cleanup'.
+ _vtime_accum += (cleanup_end_time - remark_end_time);
} else {
// We don't want to update the marking status if a GC pause
// is already underway.
SuspendibleThreadSetJoiner sts_join;
g1h->collector_state()->set_mark_in_progress(false);
< prev index next >