@@ -472,6 +472,8 @@ void SafepointSynchronize::disarm_safepoint() {
472
472
// operation has been carried out
473
473
void SafepointSynchronize::end () {
474
474
assert (Threads_lock->owned_by_self (), " must hold Threads_lock" );
475
+ SafepointTracing::leave ();
476
+
475
477
EventSafepointEnd event;
476
478
assert (Thread::current ()->is_VM_thread (), " Only VM thread can execute a safepoint" );
477
479
@@ -866,6 +868,7 @@ void ThreadSafepointState::handle_polling_page_exception() {
866
868
867
869
jlong SafepointTracing::_last_safepoint_begin_time_ns = 0 ;
868
870
jlong SafepointTracing::_last_safepoint_sync_time_ns = 0 ;
871
+ jlong SafepointTracing::_last_safepoint_leave_time_ns = 0 ;
869
872
jlong SafepointTracing::_last_safepoint_end_time_ns = 0 ;
870
873
jlong SafepointTracing::_last_app_time_ns = 0 ;
871
874
int SafepointTracing::_nof_threads = 0 ;
@@ -967,6 +970,10 @@ void SafepointTracing::synchronized(int nof_threads, int nof_running, int traps)
967
970
RuntimeService::record_safepoint_synchronized (_last_safepoint_sync_time_ns - _last_safepoint_begin_time_ns);
968
971
}
969
972
973
+ void SafepointTracing::leave () {
974
+ _last_safepoint_leave_time_ns = os::javaTimeNanos ();
975
+ }
976
+
970
977
void SafepointTracing::end () {
971
978
_last_safepoint_end_time_ns = os::javaTimeNanos ();
972
979
@@ -985,12 +992,14 @@ void SafepointTracing::end() {
985
992
" Time since last: " JLONG_FORMAT " ns, "
986
993
" Reaching safepoint: " JLONG_FORMAT " ns, "
987
994
" At safepoint: " JLONG_FORMAT " ns, "
995
+ " Leaving safepoint: " JLONG_FORMAT " ns, "
988
996
" Total: " JLONG_FORMAT " ns" ,
989
997
VM_Operation::name (_current_type),
990
998
_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
994
1003
);
995
1004
996
1005
RuntimeService::record_safepoint_end (_last_safepoint_end_time_ns - _last_safepoint_sync_time_ns);
0 commit comments