8246019: PerfClassTraceTime slows down VM start-up

Reviewed-by: dholmes, redestad, minqi, ccheung
This commit is contained in:
Ioi Lam 2020-07-06 15:14:44 -07:00
parent 6d137a3616
commit 2e09a58f64

View file

@ -1157,15 +1157,21 @@ void InstanceKlass::initialize_impl(TRAPS) {
// Step 8 // Step 8
{ {
DTRACE_CLASSINIT_PROBE_WAIT(clinit, -1, wait); DTRACE_CLASSINIT_PROBE_WAIT(clinit, -1, wait);
// Timer includes any side effects of class initialization (resolution, if (class_initializer() != NULL) {
// etc), but not recursive entry into call_class_initializer(). // Timer includes any side effects of class initialization (resolution,
PerfClassTraceTime timer(ClassLoader::perf_class_init_time(), // etc), but not recursive entry into call_class_initializer().
ClassLoader::perf_class_init_selftime(), PerfClassTraceTime timer(ClassLoader::perf_class_init_time(),
ClassLoader::perf_classes_inited(), ClassLoader::perf_class_init_selftime(),
jt->get_thread_stat()->perf_recursion_counts_addr(), ClassLoader::perf_classes_inited(),
jt->get_thread_stat()->perf_timers_addr(), jt->get_thread_stat()->perf_recursion_counts_addr(),
PerfClassTraceTime::CLASS_CLINIT); jt->get_thread_stat()->perf_timers_addr(),
call_class_initializer(THREAD); 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 // Step 9