src/share/vm/classfile/classFileParser.cpp

changeset 1310
6a93908f268f
parent 1145
e5b0439ef4ae
child 1314
494244ae0171
     1.1 --- a/src/share/vm/classfile/classFileParser.cpp	Fri Jun 19 07:33:25 2009 -0700
     1.2 +++ b/src/share/vm/classfile/classFileParser.cpp	Fri Jul 10 11:10:00 2009 -0700
     1.3 @@ -547,7 +547,6 @@
     1.4                                                   int length,
     1.5                                                   Handle class_loader,
     1.6                                                   Handle protection_domain,
     1.7 -                                                 PerfTraceTime* vmtimer,
     1.8                                                   symbolHandle class_name,
     1.9                                                   TRAPS) {
    1.10    ClassFileStream* cfs = stream();
    1.11 @@ -575,13 +574,11 @@
    1.12        guarantee_property(unresolved_klass->byte_at(0) != JVM_SIGNATURE_ARRAY,
    1.13                           "Bad interface name in class file %s", CHECK_(nullHandle));
    1.14  
    1.15 -      vmtimer->suspend();  // do not count recursive loading twice
    1.16        // Call resolve_super so classcircularity is checked
    1.17        klassOop k = SystemDictionary::resolve_super_or_fail(class_name,
    1.18                      unresolved_klass, class_loader, protection_domain,
    1.19                      false, CHECK_(nullHandle));
    1.20        interf = KlassHandle(THREAD, k);
    1.21 -      vmtimer->resume();
    1.22  
    1.23        if (LinkWellKnownClasses)  // my super type is well known to me
    1.24          cp->klass_at_put(interface_index, interf()); // eagerly resolve
    1.25 @@ -2558,7 +2555,15 @@
    1.26  
    1.27    ClassFileStream* cfs = stream();
    1.28    // Timing
    1.29 -  PerfTraceTime vmtimer(ClassLoader::perf_accumulated_time());
    1.30 +  assert(THREAD->is_Java_thread(), "must be a JavaThread");
    1.31 +  JavaThread* jt = (JavaThread*) THREAD;
    1.32 +
    1.33 +  PerfClassTraceTime ctimer(ClassLoader::perf_class_parse_time(),
    1.34 +                            ClassLoader::perf_class_parse_selftime(),
    1.35 +                            NULL,
    1.36 +                            jt->get_thread_stat()->perf_recursion_counts_addr(),
    1.37 +                            jt->get_thread_stat()->perf_timers_addr(),
    1.38 +                            PerfClassTraceTime::PARSE_CLASS);
    1.39  
    1.40    _has_finalizer = _has_empty_finalizer = _has_vanilla_constructor = false;
    1.41  
    1.42 @@ -2738,7 +2743,7 @@
    1.43      if (itfs_len == 0) {
    1.44        local_interfaces = objArrayHandle(THREAD, Universe::the_empty_system_obj_array());
    1.45      } else {
    1.46 -      local_interfaces = parse_interfaces(cp, itfs_len, class_loader, protection_domain, &vmtimer, _class_name, CHECK_(nullHandle));
    1.47 +      local_interfaces = parse_interfaces(cp, itfs_len, class_loader, protection_domain, _class_name, CHECK_(nullHandle));
    1.48      }
    1.49  
    1.50      // Fields (offsets are filled in later)
    1.51 @@ -2782,6 +2787,7 @@
    1.52                                                             protection_domain,
    1.53                                                             true,
    1.54                                                             CHECK_(nullHandle));
    1.55 +
    1.56        KlassHandle kh (THREAD, k);
    1.57        super_klass = instanceKlassHandle(THREAD, kh());
    1.58        if (LinkWellKnownClasses)  // my super class is well known to me

mercurial