mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8177530: Module system implementation refresh (4/2017)
Co-authored-by: Harold Seigel <harold.seigel@oracle.com> Co-authored-by: Mandy Chung <mandy.chung@oracle.com> Reviewed-by: lfoltan, sspitsyn
This commit is contained in:
parent
4ffa7d7bfc
commit
a3ab143c64
90 changed files with 477 additions and 464 deletions
|
@ -62,7 +62,7 @@ bool Modules::verify_package_name(const char* package_name) {
|
|||
}
|
||||
|
||||
static char* get_module_name(oop module, TRAPS) {
|
||||
oop name_oop = java_lang_reflect_Module::name(module);
|
||||
oop name_oop = java_lang_Module::name(module);
|
||||
if (name_oop == NULL) {
|
||||
THROW_MSG_NULL(vmSymbols::java_lang_NullPointerException(), "Null module name");
|
||||
}
|
||||
|
@ -98,11 +98,11 @@ static PackageEntryTable* get_package_entry_table(Handle h_loader, TRAPS) {
|
|||
|
||||
static ModuleEntry* get_module_entry(jobject module, TRAPS) {
|
||||
Handle module_h(THREAD, JNIHandles::resolve(module));
|
||||
if (!java_lang_reflect_Module::is_instance(module_h())) {
|
||||
if (!java_lang_Module::is_instance(module_h())) {
|
||||
THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
"module is not an instance of type java.lang.reflect.Module");
|
||||
"module is not an instance of type java.lang.Module");
|
||||
}
|
||||
return java_lang_reflect_Module::module_entry(module_h(), CHECK_NULL);
|
||||
return java_lang_Module::module_entry(module_h(), CHECK_NULL);
|
||||
}
|
||||
|
||||
static PackageEntry* get_package_entry(ModuleEntry* module_entry, const char* package_name, TRAPS) {
|
||||
|
@ -181,7 +181,7 @@ static void define_javabase_module(jobject module, jstring version,
|
|||
}
|
||||
|
||||
// Validate java_base's loader is the boot loader.
|
||||
oop loader = java_lang_reflect_Module::loader(module_handle());
|
||||
oop loader = java_lang_Module::loader(module_handle());
|
||||
if (loader != NULL) {
|
||||
THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
"Class loader must be the boot class loader");
|
||||
|
@ -234,7 +234,7 @@ static void define_javabase_module(jobject module, jstring version,
|
|||
// Only the thread that actually defined the base module will get here,
|
||||
// so no locking is needed.
|
||||
|
||||
// Patch any previously loaded class's module field with java.base's java.lang.reflect.Module.
|
||||
// Patch any previously loaded class's module field with java.base's java.lang.Module.
|
||||
ModuleEntryTable::patch_javabase_entries(module_handle);
|
||||
|
||||
log_debug(modules)("define_javabase_module(): Definition of module: "
|
||||
|
@ -284,9 +284,9 @@ void Modules::define_module(jobject module, jstring version,
|
|||
}
|
||||
|
||||
Handle module_handle(THREAD, JNIHandles::resolve(module));
|
||||
if (!java_lang_reflect_Module::is_instance(module_handle())) {
|
||||
if (!java_lang_Module::is_instance(module_handle())) {
|
||||
THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
"module is not an instance of type java.lang.reflect.Module");
|
||||
"module is not an instance of type java.lang.Module");
|
||||
}
|
||||
|
||||
char* module_name = get_module_name(module_handle(), CHECK);
|
||||
|
@ -303,7 +303,7 @@ void Modules::define_module(jobject module, jstring version,
|
|||
|
||||
const char* module_version = get_module_version(version);
|
||||
|
||||
oop loader = java_lang_reflect_Module::loader(module_handle());
|
||||
oop loader = java_lang_Module::loader(module_handle());
|
||||
// Make sure loader is not the jdk.internal.reflect.DelegatingClassLoader.
|
||||
if (loader != java_lang_ClassLoader::non_reflection_class_loader(loader)) {
|
||||
THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
|
@ -424,8 +424,8 @@ void Modules::define_module(jobject module, jstring version,
|
|||
pkg_list->at(y)->decrement_refcount();
|
||||
}
|
||||
|
||||
// Store pointer to ModuleEntry record in java.lang.reflect.Module object.
|
||||
java_lang_reflect_Module::set_module_entry(module_handle(), module_entry);
|
||||
// Store pointer to ModuleEntry record in java.lang.Module object.
|
||||
java_lang_Module::set_module_entry(module_handle(), module_entry);
|
||||
}
|
||||
}
|
||||
} // Release the lock
|
||||
|
@ -467,20 +467,20 @@ void Modules::set_bootloader_unnamed_module(jobject module, TRAPS) {
|
|||
THROW_MSG(vmSymbols::java_lang_NullPointerException(), "Null module object");
|
||||
}
|
||||
Handle module_handle(THREAD, JNIHandles::resolve(module));
|
||||
if (!java_lang_reflect_Module::is_instance(module_handle())) {
|
||||
if (!java_lang_Module::is_instance(module_handle())) {
|
||||
THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
"module is not an instance of type java.lang.reflect.Module");
|
||||
"module is not an instance of type java.lang.Module");
|
||||
}
|
||||
|
||||
// Ensure that this is an unnamed module
|
||||
oop name = java_lang_reflect_Module::name(module_handle());
|
||||
oop name = java_lang_Module::name(module_handle());
|
||||
if (name != NULL) {
|
||||
THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
"boot loader's unnamed module's java.lang.reflect.Module has a name");
|
||||
"boot loader's unnamed module's java.lang.Module has a name");
|
||||
}
|
||||
|
||||
// Validate java_base's loader is the boot loader.
|
||||
oop loader = java_lang_reflect_Module::loader(module_handle());
|
||||
oop loader = java_lang_Module::loader(module_handle());
|
||||
if (loader != NULL) {
|
||||
THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
|
||||
"Class loader must be the boot class loader");
|
||||
|
@ -492,12 +492,12 @@ void Modules::set_bootloader_unnamed_module(jobject module, TRAPS) {
|
|||
// Ensure the boot loader's PackageEntryTable has been created
|
||||
ModuleEntryTable* module_table = get_module_entry_table(h_loader, CHECK);
|
||||
|
||||
// Set java.lang.reflect.Module for the boot loader's unnamed module
|
||||
// Set java.lang.Module for the boot loader's unnamed module
|
||||
ModuleEntry* unnamed_module = module_table->unnamed_module();
|
||||
assert(unnamed_module != NULL, "boot loader's unnamed ModuleEntry not defined");
|
||||
unnamed_module->set_module(ClassLoaderData::the_null_class_loader_data()->add_handle(module_handle));
|
||||
// Store pointer to the ModuleEntry in the unnamed module's java.lang.reflect.Module object.
|
||||
java_lang_reflect_Module::set_module_entry(module_handle(), unnamed_module);
|
||||
// Store pointer to the ModuleEntry in the unnamed module's java.lang.Module object.
|
||||
java_lang_Module::set_module_entry(module_handle(), unnamed_module);
|
||||
}
|
||||
|
||||
void Modules::add_module_exports(jobject from_module, const char* package_name, jobject to_module, TRAPS) {
|
||||
|
@ -627,13 +627,13 @@ jobject Modules::get_module(jclass clazz, TRAPS) {
|
|||
oop module = java_lang_Class::module(mirror);
|
||||
|
||||
assert(module != NULL, "java.lang.Class module field not set");
|
||||
assert(java_lang_reflect_Module::is_instance(module), "module is not an instance of type java.lang.reflect.Module");
|
||||
assert(java_lang_Module::is_instance(module), "module is not an instance of type java.lang.Module");
|
||||
|
||||
if (log_is_enabled(Debug, modules)) {
|
||||
ResourceMark rm(THREAD);
|
||||
outputStream* logst = Log(modules)::debug_stream();
|
||||
Klass* klass = java_lang_Class::as_Klass(mirror);
|
||||
oop module_name = java_lang_reflect_Module::name(module);
|
||||
oop module_name = java_lang_Module::name(module);
|
||||
if (module_name != NULL) {
|
||||
logst->print("get_module(): module ");
|
||||
java_lang_String::print(module_name, tty);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue