src/share/vm/classfile/classLoader.cpp

changeset 1310
6a93908f268f
parent 1158
3ec1ff9307d6
child 1317
66b0f834a440
     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

mercurial