hotspot/src/share/vm/classfile/systemDictionary.cpp
changeset 3575 224791e7ecab
parent 2570 ecc7862946d4
child 3820 0a8fbbe180db
child 3908 24b55ad4c228
equal deleted inserted replaced
3001:9b4390b8c6f7 3575:224791e7ecab
  1304 
  1304 
  1305 
  1305 
  1306 instanceKlassHandle SystemDictionary::load_instance_class(symbolHandle class_name, Handle class_loader, TRAPS) {
  1306 instanceKlassHandle SystemDictionary::load_instance_class(symbolHandle class_name, Handle class_loader, TRAPS) {
  1307   instanceKlassHandle nh = instanceKlassHandle(); // null Handle
  1307   instanceKlassHandle nh = instanceKlassHandle(); // null Handle
  1308   if (class_loader.is_null()) {
  1308   if (class_loader.is_null()) {
       
  1309 
  1309     // Search the shared system dictionary for classes preloaded into the
  1310     // Search the shared system dictionary for classes preloaded into the
  1310     // shared spaces.
  1311     // shared spaces.
  1311     instanceKlassHandle k;
  1312     instanceKlassHandle k;
  1312     k = load_shared_class(class_name, class_loader, THREAD);
  1313     {
       
  1314       PerfTraceTime vmtimer(ClassLoader::perf_shared_classload_time());
       
  1315       k = load_shared_class(class_name, class_loader, THREAD);
       
  1316     }
  1313 
  1317 
  1314     if (k.is_null()) {
  1318     if (k.is_null()) {
  1315       // Use VM class loader
  1319       // Use VM class loader
       
  1320       PerfTraceTime vmtimer(ClassLoader::perf_sys_classload_time());
  1316       k = ClassLoader::load_classfile(class_name, CHECK_(nh));
  1321       k = ClassLoader::load_classfile(class_name, CHECK_(nh));
  1317     }
  1322     }
  1318 
  1323 
  1319 #ifdef KERNEL
  1324 #ifdef KERNEL
  1320     // If the VM class loader has failed to load the class, call the
  1325     // If the VM class loader has failed to load the class, call the
  1331     }
  1336     }
  1332     return k;
  1337     return k;
  1333   } else {
  1338   } else {
  1334     // Use user specified class loader to load class. Call loadClass operation on class_loader.
  1339     // Use user specified class loader to load class. Call loadClass operation on class_loader.
  1335     ResourceMark rm(THREAD);
  1340     ResourceMark rm(THREAD);
       
  1341 
       
  1342     assert(THREAD->is_Java_thread(), "must be a JavaThread");
       
  1343     JavaThread* jt = (JavaThread*) THREAD;
       
  1344 
       
  1345     PerfClassTraceTime vmtimer(ClassLoader::perf_app_classload_time(),
       
  1346                                ClassLoader::perf_app_classload_selftime(),
       
  1347                                ClassLoader::perf_app_classload_count(),
       
  1348                                jt->get_thread_stat()->perf_recursion_counts_addr(),
       
  1349                                jt->get_thread_stat()->perf_timers_addr(),
       
  1350                                PerfClassTraceTime::CLASS_LOAD);
  1336 
  1351 
  1337     Handle s = java_lang_String::create_from_symbol(class_name, CHECK_(nh));
  1352     Handle s = java_lang_String::create_from_symbol(class_name, CHECK_(nh));
  1338     // Translate to external class name format, i.e., convert '/' chars to '.'
  1353     // Translate to external class name format, i.e., convert '/' chars to '.'
  1339     Handle string = java_lang_String::externalize_classname(s, CHECK_(nh));
  1354     Handle string = java_lang_String::externalize_classname(s, CHECK_(nh));
  1340 
  1355