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