@@ -472,6 +472,8 @@ void SafepointSynchronize::disarm_safepoint() {
472472// operation has been carried out
473473void SafepointSynchronize::end () {
474474 assert (Threads_lock->owned_by_self (), " must hold Threads_lock" );
475+ SafepointTracing::leave ();
476+
475477 EventSafepointEnd event;
476478 assert (Thread::current ()->is_VM_thread (), " Only VM thread can execute a safepoint" );
477479
@@ -866,6 +868,7 @@ void ThreadSafepointState::handle_polling_page_exception() {
866868
867869jlong SafepointTracing::_last_safepoint_begin_time_ns = 0 ;
868870jlong SafepointTracing::_last_safepoint_sync_time_ns = 0 ;
871+ jlong SafepointTracing::_last_safepoint_leave_time_ns = 0 ;
869872jlong SafepointTracing::_last_safepoint_end_time_ns = 0 ;
870873jlong SafepointTracing::_last_app_time_ns = 0 ;
871874int SafepointTracing::_nof_threads = 0 ;
@@ -967,6 +970,10 @@ void SafepointTracing::synchronized(int nof_threads, int nof_running, int traps)
967970 RuntimeService::record_safepoint_synchronized (_last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns);
968971}
969972
973+ void SafepointTracing::leave () {
974+ _last_safepoint_leave_time_ns = os::javaTimeNanos ();
975+ }
976+
970977void SafepointTracing::end () {
971978 _last_safepoint_end_time_ns = os::javaTimeNanos ();
972979
@@ -985,12 +992,14 @@ void SafepointTracing::end() {
985992 " Time since last: " JLONG_FORMAT " ns, "
986993 " Reaching safepoint: " JLONG_FORMAT " ns, "
987994 " At safepoint: " JLONG_FORMAT " ns, "
995+ " Leaving safepoint: " JLONG_FORMAT " ns, "
988996 " Total: " JLONG_FORMAT " ns" ,
989997 VM_Operation::name (_current_type),
990998 _last_app_time_ns,
991- _last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns,
992- _last_safepoint_end_time_ns - _last_safepoint_sync_time_ns,
993- _last_safepoint_end_time_ns - _last_safepoint_begin_time_ns
999+ _last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns,
1000+ _last_safepoint_leave_time_ns - _last_safepoint_sync_time_ns,
1001+ _last_safepoint_end_time_ns - _last_safepoint_leave_time_ns,
1002+ _last_safepoint_end_time_ns - _last_safepoint_begin_time_ns
9941003 );
9951004
9961005 RuntimeService::record_safepoint_end (_last_safepoint_end_time_ns - _last_safepoint_sync_time_ns);
0 commit comments