src/share/vm/classfile/classLoader.cpp

Print this page




 861     if ((packages = NEW_RESOURCE_ARRAY(const char*, nof_entries)) == NULL) {
 862       return NULL;
 863     }
 864     _package_hash_table->copy_pkgnames(packages);
 865   }
 866   // Allocate objArray and fill with java.lang.String
 867   objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
 868                                            nof_entries, CHECK_0);
 869   objArrayHandle result(THREAD, r);
 870   for (int i = 0; i < nof_entries; i++) {
 871     Handle str = java_lang_String::create_from_str(packages[i], CHECK_0);
 872     result->obj_at_put(i, str());
 873   }
 874 
 875   return result();
 876 }
 877 
 878 
 879 instanceKlassHandle ClassLoader::load_classfile(Symbol* h_name, TRAPS) {
 880   ResourceMark rm(THREAD);
 881   EventMark m("loading class " INTPTR_FORMAT, (address)h_name);
 882   ThreadProfilerMark tpm(ThreadProfilerMark::classLoaderRegion);
 883 
 884   stringStream st;
 885   // st.print() uses too much stack space while handling a StackOverflowError
 886   // st.print("%s.class", h_name->as_utf8());
 887   st.print_raw(h_name->as_utf8());
 888   st.print_raw(".class");
 889   char* name = st.as_string();
 890 
 891   // Lookup stream for parsing .class file
 892   ClassFileStream* stream = NULL;
 893   int classpath_index = 0;
 894   {
 895     PerfClassTraceTime vmtimer(perf_sys_class_lookup_time(),
 896                                ((JavaThread*) THREAD)->get_thread_stat()->perf_timers_addr(),
 897                                PerfClassTraceTime::CLASS_LOAD);
 898     ClassPathEntry* e = _first_entry;
 899     while (e != NULL) {
 900       stream = e->open_stream(name);
 901       if (stream != NULL) {




 861     if ((packages = NEW_RESOURCE_ARRAY(const char*, nof_entries)) == NULL) {
 862       return NULL;
 863     }
 864     _package_hash_table->copy_pkgnames(packages);
 865   }
 866   // Allocate objArray and fill with java.lang.String
 867   objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
 868                                            nof_entries, CHECK_0);
 869   objArrayHandle result(THREAD, r);
 870   for (int i = 0; i < nof_entries; i++) {
 871     Handle str = java_lang_String::create_from_str(packages[i], CHECK_0);
 872     result->obj_at_put(i, str());
 873   }
 874 
 875   return result();
 876 }
 877 
 878 
 879 instanceKlassHandle ClassLoader::load_classfile(Symbol* h_name, TRAPS) {
 880   ResourceMark rm(THREAD);
 881   EventMark m("loading class %s", h_name->as_C_string());
 882   ThreadProfilerMark tpm(ThreadProfilerMark::classLoaderRegion);
 883 
 884   stringStream st;
 885   // st.print() uses too much stack space while handling a StackOverflowError
 886   // st.print("%s.class", h_name->as_utf8());
 887   st.print_raw(h_name->as_utf8());
 888   st.print_raw(".class");
 889   char* name = st.as_string();
 890 
 891   // Lookup stream for parsing .class file
 892   ClassFileStream* stream = NULL;
 893   int classpath_index = 0;
 894   {
 895     PerfClassTraceTime vmtimer(perf_sys_class_lookup_time(),
 896                                ((JavaThread*) THREAD)->get_thread_stat()->perf_timers_addr(),
 897                                PerfClassTraceTime::CLASS_LOAD);
 898     ClassPathEntry* e = _first_entry;
 899     while (e != NULL) {
 900       stream = e->open_stream(name);
 901       if (stream != NULL) {