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) {
|