OpenJDK / jdk / jdk
changeset 60065:d90de88ba4d0
8246019: PerfClassTraceTime slows down VM start-up
Reviewed-by: dholmes, redestad, minqi, ccheung
author | iklam |
---|---|
date | Mon, 06 Jul 2020 15:14:44 -0700 |
parents | 00a964b6ab71 |
children | 25551ba96f75 |
files | src/hotspot/share/oops/instanceKlass.cpp |
diffstat | 1 files changed, 15 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/hotspot/share/oops/instanceKlass.cpp Mon Jul 06 04:44:25 2020 -0400 +++ b/src/hotspot/share/oops/instanceKlass.cpp Mon Jul 06 15:14:44 2020 -0700 @@ -1157,15 +1157,21 @@ // Step 8 { DTRACE_CLASSINIT_PROBE_WAIT(clinit, -1, wait); - // Timer includes any side effects of class initialization (resolution, - // etc), but not recursive entry into call_class_initializer(). - PerfClassTraceTime timer(ClassLoader::perf_class_init_time(), - ClassLoader::perf_class_init_selftime(), - ClassLoader::perf_classes_inited(), - jt->get_thread_stat()->perf_recursion_counts_addr(), - jt->get_thread_stat()->perf_timers_addr(), - PerfClassTraceTime::CLASS_CLINIT); - call_class_initializer(THREAD); + if (class_initializer() != NULL) { + // Timer includes any side effects of class initialization (resolution, + // etc), but not recursive entry into call_class_initializer(). + PerfClassTraceTime timer(ClassLoader::perf_class_init_time(), + ClassLoader::perf_class_init_selftime(), + ClassLoader::perf_classes_inited(), + jt->get_thread_stat()->perf_recursion_counts_addr(), + jt->get_thread_stat()->perf_timers_addr(), + PerfClassTraceTime::CLASS_CLINIT); + call_class_initializer(THREAD); + } else { + // The elapsed time is so small it's not worth counting. + ClassLoader::perf_classes_inited()->inc(); + call_class_initializer(THREAD); + } } // Step 9