< prev index next >
src/hotspot/share/classfile/classLoaderExt.cpp
Print this page
*** 28,38 ****
#include "classfile/classLoader.inline.hpp"
#include "classfile/classLoaderExt.hpp"
#include "classfile/classLoaderData.inline.hpp"
#include "classfile/klassFactory.hpp"
#include "classfile/modules.hpp"
- #include "classfile/sharedPathsMiscInfo.hpp"
#include "classfile/systemDictionaryShared.hpp"
#include "classfile/vmSymbols.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/filemap.hpp"
#include "memory/resourceArea.hpp"
--- 28,37 ----
*** 72,82 ****
// don't want to throw an error here because -cp "." is usually assigned
// by the launcher when classpath is not specified.
trace_class_path("app loader class path (skipped)=", app_class_path);
} else {
trace_class_path("app loader class path=", app_class_path);
- shared_paths_misc_info()->add_app_classpath(app_class_path);
ClassLoader::setup_app_search_path(app_class_path);
}
}
void ClassLoaderExt::process_module_table(ModuleEntryTable* met, TRAPS) {
--- 71,80 ----
*** 210,230 ****
ResourceMark rm(THREAD);
size_t libname_len = dir_len + name_len;
char* libname = NEW_RESOURCE_ARRAY(char, libname_len + 1);
int n = os::snprintf(libname, libname_len + 1, "%.*s%s", dir_len, dir_name, file_start);
assert((size_t)n == libname_len, "Unexpected number of characters in string");
trace_class_path("library = ", libname);
! ClassLoader::update_class_path_entry_list(libname, true, false, true /* from_class_path_attr */);
}
file_start = file_end;
}
}
}
void ClassLoaderExt::setup_search_paths() {
- shared_paths_misc_info()->record_app_offset();
ClassLoaderExt::setup_app_search_path();
}
void ClassLoaderExt::record_result(const s2 classpath_index,
InstanceKlass* result,
--- 208,231 ----
ResourceMark rm(THREAD);
size_t libname_len = dir_len + name_len;
char* libname = NEW_RESOURCE_ARRAY(char, libname_len + 1);
int n = os::snprintf(libname, libname_len + 1, "%.*s%s", dir_len, dir_name, file_start);
assert((size_t)n == libname_len, "Unexpected number of characters in string");
+ if (ClassLoader::update_class_path_entry_list(libname, true, false, true /* from_class_path_attr */)) {
trace_class_path("library = ", libname);
! } else {
! trace_class_path("library (non-existent) = ", libname);
! FileMapInfo::record_non_existent_class_path_entry(libname);
! }
}
file_start = file_end;
}
}
}
void ClassLoaderExt::setup_search_paths() {
ClassLoaderExt::setup_app_search_path();
}
void ClassLoaderExt::record_result(const s2 classpath_index,
InstanceKlass* result,
*** 246,261 ****
}
result->set_shared_classpath_index(classpath_index);
result->set_class_loader_type(classloader_type);
}
- void ClassLoaderExt::finalize_shared_paths_misc_info() {
- if (!_has_app_classes) {
- shared_paths_misc_info()->pop_app();
- }
- }
-
// Load the class of the given name from the location given by path. The path is specified by
// the "source:" in the class list file (see classListParser.cpp), and can be a directory or
// a JAR file.
InstanceKlass* ClassLoaderExt::load_class(Symbol* name, const char* path, TRAPS) {
assert(name != NULL, "invariant");
--- 247,256 ----
< prev index next >