< prev index next >
src/hotspot/share/classfile/modules.cpp
Print this page
*** 82,112 ****
return NULL;
}
return java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(version));
}
! static ModuleEntryTable* get_module_entry_table(Handle h_loader, TRAPS) {
// This code can be called during start-up, before the classLoader's classLoader data got
// created. So, call register_loader() to make sure the classLoader data gets created.
! ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
return loader_cld->modules();
}
! static PackageEntryTable* get_package_entry_table(Handle h_loader, TRAPS) {
// This code can be called during start-up, before the classLoader's classLoader data got
// created. So, call register_loader() to make sure the classLoader data gets created.
! ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
return loader_cld->packages();
}
static ModuleEntry* get_module_entry(jobject module, TRAPS) {
! Handle module_h(THREAD, JNIHandles::resolve(module));
! if (!java_lang_Module::is_instance(module_h())) {
THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(),
"module is not an instance of type java.lang.Module");
}
! return java_lang_Module::module_entry(module_h(), CHECK_NULL);
}
static PackageEntry* get_package_entry(ModuleEntry* module_entry, const char* package_name, TRAPS) {
ResourceMark rm(THREAD);
if (package_name == NULL) return NULL;
--- 82,112 ----
return NULL;
}
return java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(version));
}
! static ModuleEntryTable* get_module_entry_table(Handle h_loader) {
// This code can be called during start-up, before the classLoader's classLoader data got
// created. So, call register_loader() to make sure the classLoader data gets created.
! ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader);
return loader_cld->modules();
}
! static PackageEntryTable* get_package_entry_table(Handle h_loader) {
// This code can be called during start-up, before the classLoader's classLoader data got
// created. So, call register_loader() to make sure the classLoader data gets created.
! ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader);
return loader_cld->packages();
}
static ModuleEntry* get_module_entry(jobject module, TRAPS) {
! oop m = JNIHandles::resolve(module);
! if (!java_lang_Module::is_instance(m)) {
THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(),
"module is not an instance of type java.lang.Module");
}
! return java_lang_Module::module_entry(m);
}
static PackageEntry* get_package_entry(ModuleEntry* module_entry, const char* package_name, TRAPS) {
ResourceMark rm(THREAD);
if (package_name == NULL) return NULL;
*** 121,131 ****
TRAPS) {
if (package != NULL) {
ResourceMark rm(THREAD);
if (Modules::verify_package_name(package->as_C_string())) {
PackageEntryTable* const package_entry_table =
! get_package_entry_table(h_loader, CHECK_NULL);
assert(package_entry_table != NULL, "Unexpected null package entry table");
return package_entry_table->lookup_only(package);
}
}
return NULL;
--- 121,131 ----
TRAPS) {
if (package != NULL) {
ResourceMark rm(THREAD);
if (Modules::verify_package_name(package->as_C_string())) {
PackageEntryTable* const package_entry_table =
! get_package_entry_table(h_loader);
assert(package_entry_table != NULL, "Unexpected null package entry table");
return package_entry_table->lookup_only(package);
}
}
return NULL;
*** 183,193 ****
"Class loader must be the boot class loader");
}
Handle h_loader(THREAD, loader);
// Ensure the boot loader's PackageEntryTable has been created
! PackageEntryTable* package_table = get_package_entry_table(h_loader, CHECK);
assert(pkg_list->length() == 0 || package_table != NULL, "Bad package_table");
// Ensure java.base's ModuleEntry has been created
assert(ModuleEntryTable::javabase_moduleEntry() != NULL, "No ModuleEntry for " JAVA_BASE_NAME);
--- 183,193 ----
"Class loader must be the boot class loader");
}
Handle h_loader(THREAD, loader);
// Ensure the boot loader's PackageEntryTable has been created
! PackageEntryTable* package_table = get_package_entry_table(h_loader);
assert(pkg_list->length() == 0 || package_table != NULL, "Bad package_table");
// Ensure java.base's ModuleEntry has been created
assert(ModuleEntryTable::javabase_moduleEntry() != NULL, "No ModuleEntry for " JAVA_BASE_NAME);
*** 343,353 ****
Symbol* pkg_symbol = SymbolTable::new_symbol(package_name, CHECK);
pkg_list->append(pkg_symbol);
}
! ModuleEntryTable* module_table = get_module_entry_table(h_loader, CHECK);
assert(module_table != NULL, "module entry table shouldn't be null");
// Create symbol* entry for module name.
TempNewSymbol module_symbol = SymbolTable::new_symbol(module_name, CHECK);
--- 343,353 ----
Symbol* pkg_symbol = SymbolTable::new_symbol(package_name, CHECK);
pkg_list->append(pkg_symbol);
}
! ModuleEntryTable* module_table = get_module_entry_table(h_loader);
assert(module_table != NULL, "module entry table shouldn't be null");
// Create symbol* entry for module name.
TempNewSymbol module_symbol = SymbolTable::new_symbol(module_name, CHECK);
*** 379,389 ****
PackageEntry* existing_pkg = NULL;
{
MutexLocker ml(Module_lock, THREAD);
if (num_packages > 0) {
! package_table = get_package_entry_table(h_loader, CHECK);
assert(package_table != NULL, "Missing package_table");
// Check that none of the packages exist in the class loader's package table.
for (int x = 0; x < pkg_list->length(); x++) {
existing_pkg = package_table->lookup_only(pkg_list->at(x));
--- 379,389 ----
PackageEntry* existing_pkg = NULL;
{
MutexLocker ml(Module_lock, THREAD);
if (num_packages > 0) {
! package_table = get_package_entry_table(h_loader);
assert(package_table != NULL, "Missing package_table");
// Check that none of the packages exist in the class loader's package table.
for (int x = 0; x < pkg_list->length(); x++) {
existing_pkg = package_table->lookup_only(pkg_list->at(x));
< prev index next >