< prev index next >
src/hotspot/share/classfile/classLoaderExt.cpp
Print this page
@@ -28,11 +28,10 @@
#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"
@@ -72,11 +71,10 @@
// 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) {
@@ -210,21 +208,24 @@
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);
- ClassLoader::update_class_path_entry_list(libname, true, false, true /* from_class_path_attr */);
+ } 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() {
- shared_paths_misc_info()->record_app_offset();
ClassLoaderExt::setup_app_search_path();
}
void ClassLoaderExt::record_result(const s2 classpath_index,
InstanceKlass* result,
@@ -246,16 +247,10 @@
}
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");
< prev index next >