1.1 --- a/src/share/vm/classfile/classLoader.cpp Fri Jun 19 07:33:25 2009 -0700 1.2 +++ b/src/share/vm/classfile/classLoader.cpp Fri Jul 10 11:10:00 2009 -0700 1.3 @@ -48,9 +48,26 @@ 1.4 PerfCounter* ClassLoader::_perf_accumulated_time = NULL; 1.5 PerfCounter* ClassLoader::_perf_classes_inited = NULL; 1.6 PerfCounter* ClassLoader::_perf_class_init_time = NULL; 1.7 +PerfCounter* ClassLoader::_perf_class_init_selftime = NULL; 1.8 +PerfCounter* ClassLoader::_perf_classes_verified = NULL; 1.9 PerfCounter* ClassLoader::_perf_class_verify_time = NULL; 1.10 +PerfCounter* ClassLoader::_perf_class_verify_selftime = NULL; 1.11 PerfCounter* ClassLoader::_perf_classes_linked = NULL; 1.12 PerfCounter* ClassLoader::_perf_class_link_time = NULL; 1.13 +PerfCounter* ClassLoader::_perf_class_link_selftime = NULL; 1.14 +PerfCounter* ClassLoader::_perf_class_parse_time = NULL; 1.15 +PerfCounter* ClassLoader::_perf_class_parse_selftime = NULL; 1.16 +PerfCounter* ClassLoader::_perf_sys_class_lookup_time = NULL; 1.17 +PerfCounter* ClassLoader::_perf_shared_classload_time = NULL; 1.18 +PerfCounter* ClassLoader::_perf_sys_classload_time = NULL; 1.19 +PerfCounter* ClassLoader::_perf_app_classload_time = NULL; 1.20 +PerfCounter* ClassLoader::_perf_app_classload_selftime = NULL; 1.21 +PerfCounter* ClassLoader::_perf_app_classload_count = NULL; 1.22 +PerfCounter* ClassLoader::_perf_define_appclasses = NULL; 1.23 +PerfCounter* ClassLoader::_perf_define_appclass_time = NULL; 1.24 +PerfCounter* ClassLoader::_perf_define_appclass_selftime = NULL; 1.25 +PerfCounter* ClassLoader::_perf_app_classfile_bytes_read = NULL; 1.26 +PerfCounter* ClassLoader::_perf_sys_classfile_bytes_read = NULL; 1.27 PerfCounter* ClassLoader::_sync_systemLoaderLockContentionRate = NULL; 1.28 PerfCounter* ClassLoader::_sync_nonSystemLoaderLockContentionRate = NULL; 1.29 PerfCounter* ClassLoader::_sync_JVMFindLoadedClassLockFreeCounter = NULL; 1.30 @@ -152,6 +169,9 @@ 1.31 hpi::close(file_handle); 1.32 // construct ClassFileStream 1.33 if (num_read == (size_t)st.st_size) { 1.34 + if (UsePerfData) { 1.35 + ClassLoader::perf_sys_classfile_bytes_read()->inc(num_read); 1.36 + } 1.37 return new ClassFileStream(buffer, st.st_size, _dir); // Resource allocated 1.38 } 1.39 } 1.40 @@ -198,6 +218,9 @@ 1.41 buffer = NEW_RESOURCE_ARRAY(u1, filesize); 1.42 if (!(*ReadEntry)(_zip, entry, buffer, filename)) return NULL; 1.43 } 1.44 + if (UsePerfData) { 1.45 + ClassLoader::perf_sys_classfile_bytes_read()->inc(filesize); 1.46 + } 1.47 // return result 1.48 return new ClassFileStream(buffer, filesize, _zip_name); // Resource allocated 1.49 } 1.50 @@ -825,7 +848,9 @@ 1.51 ClassFileStream* stream = NULL; 1.52 int classpath_index = 0; 1.53 { 1.54 - PerfTraceTime vmtimer(perf_accumulated_time()); 1.55 + PerfClassTraceTime vmtimer(perf_sys_class_lookup_time(), 1.56 + ((JavaThread*) THREAD)->get_thread_stat()->perf_timers_addr(), 1.57 + PerfClassTraceTime::CLASS_LOAD); 1.58 ClassPathEntry* e = _first_entry; 1.59 while (e != NULL) { 1.60 stream = e->open_stream(name); 1.61 @@ -890,11 +915,29 @@ 1.62 // jvmstat performance counters 1.63 NEWPERFTICKCOUNTER(_perf_accumulated_time, SUN_CLS, "time"); 1.64 NEWPERFTICKCOUNTER(_perf_class_init_time, SUN_CLS, "classInitTime"); 1.65 + NEWPERFTICKCOUNTER(_perf_class_init_selftime, SUN_CLS, "classInitTime.self"); 1.66 NEWPERFTICKCOUNTER(_perf_class_verify_time, SUN_CLS, "classVerifyTime"); 1.67 + NEWPERFTICKCOUNTER(_perf_class_verify_selftime, SUN_CLS, "classVerifyTime.self"); 1.68 NEWPERFTICKCOUNTER(_perf_class_link_time, SUN_CLS, "classLinkedTime"); 1.69 - 1.70 + NEWPERFTICKCOUNTER(_perf_class_link_selftime, SUN_CLS, "classLinkedTime.self"); 1.71 NEWPERFEVENTCOUNTER(_perf_classes_inited, SUN_CLS, "initializedClasses"); 1.72 NEWPERFEVENTCOUNTER(_perf_classes_linked, SUN_CLS, "linkedClasses"); 1.73 + NEWPERFEVENTCOUNTER(_perf_classes_verified, SUN_CLS, "verifiedClasses"); 1.74 + 1.75 + NEWPERFTICKCOUNTER(_perf_class_parse_time, SUN_CLS, "parseClassTime"); 1.76 + NEWPERFTICKCOUNTER(_perf_class_parse_selftime, SUN_CLS, "parseClassTime.self"); 1.77 + NEWPERFTICKCOUNTER(_perf_sys_class_lookup_time, SUN_CLS, "lookupSysClassTime"); 1.78 + NEWPERFTICKCOUNTER(_perf_shared_classload_time, SUN_CLS, "sharedClassLoadTime"); 1.79 + NEWPERFTICKCOUNTER(_perf_sys_classload_time, SUN_CLS, "sysClassLoadTime"); 1.80 + NEWPERFTICKCOUNTER(_perf_app_classload_time, SUN_CLS, "appClassLoadTime"); 1.81 + NEWPERFTICKCOUNTER(_perf_app_classload_selftime, SUN_CLS, "appClassLoadTime.self"); 1.82 + NEWPERFEVENTCOUNTER(_perf_app_classload_count, SUN_CLS, "appClassLoadCount"); 1.83 + NEWPERFTICKCOUNTER(_perf_define_appclasses, SUN_CLS, "defineAppClasses"); 1.84 + NEWPERFTICKCOUNTER(_perf_define_appclass_time, SUN_CLS, "defineAppClassTime"); 1.85 + NEWPERFTICKCOUNTER(_perf_define_appclass_selftime, SUN_CLS, "defineAppClassTime.self"); 1.86 + NEWPERFBYTECOUNTER(_perf_app_classfile_bytes_read, SUN_CLS, "appClassBytes"); 1.87 + NEWPERFBYTECOUNTER(_perf_sys_classfile_bytes_read, SUN_CLS, "sysClassBytes"); 1.88 + 1.89 1.90 // The following performance counters are added for measuring the impact 1.91 // of the bug fix of 6365597. They are mainly focused on finding out