< prev index next >

src/share/vm/classfile/modules.cpp

Print this page




  72                    err_msg("Invalid module name: %s",
  73                            module_name != NULL ? module_name : "NULL"));
  74   }
  75   return module_name;
  76 }
  77 
  78 static const char* get_module_version(jstring version) {
  79   if (version == NULL) {
  80     return NULL;
  81   }
  82   return java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(version));
  83 }
  84 
  85 static ModuleEntryTable* get_module_entry_table(Handle h_loader, TRAPS) {
  86   // This code can be called during start-up, before the classLoader's classLoader data got
  87   // created.  So, call register_loader() to make sure the classLoader data gets created.
  88   ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
  89   return loader_cld->modules();
  90 }
  91 







  92 static PackageEntryTable* get_package_entry_table(Handle h_loader, TRAPS) {
  93   // This code can be called during start-up, before the classLoader's classLoader data got
  94   // created.  So, call register_loader() to make sure the classLoader data gets created.
  95   ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
  96   return loader_cld->packages();
  97 }
  98 
  99 static ModuleEntry* get_module_entry(jobject module, TRAPS) {
 100   Handle module_h(THREAD, JNIHandles::resolve(module));
 101   if (!java_lang_reflect_Module::is_instance(module_h())) {
 102     THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(),
 103                    "module is not an instance of type java.lang.reflect.Module");
 104   }
 105   return java_lang_reflect_Module::module_entry(module_h(), CHECK_NULL);
 106 }
 107 
 108 static PackageEntry* get_package_entry(ModuleEntry* module_entry, const char* package_name, TRAPS) {
 109   ResourceMark rm(THREAD);
 110   if (package_name == NULL) return NULL;
 111   TempNewSymbol pkg_symbol = SymbolTable::new_symbol(package_name, CHECK_NULL);


 461               "module is not an instance of type java.lang.reflect.Module");
 462   }
 463 
 464   // Ensure that this is an unnamed module
 465   oop name = java_lang_reflect_Module::name(module_handle());
 466   if (name != NULL) {
 467     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 468               "boot loader's unnamed module's java.lang.reflect.Module has a name");
 469   }
 470 
 471   // Validate java_base's loader is the boot loader.
 472   oop loader = java_lang_reflect_Module::loader(module_handle());
 473   if (loader != NULL) {
 474     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 475               "Class loader must be the boot class loader");
 476   }
 477   Handle h_loader(THREAD, loader);
 478 
 479   log_debug(modules)("set_bootloader_unnamed_module(): recording unnamed module for boot loader");
 480 
 481   // Ensure the boot loader's PackageEntryTable has been created
 482   ModuleEntryTable* module_table = get_module_entry_table(h_loader, CHECK);
 483 
 484   // Set java.lang.reflect.Module for the boot loader's unnamed module
 485   ModuleEntry* unnamed_module = module_table->unnamed_module();
 486   assert(unnamed_module != NULL, "boot loader's unnamed ModuleEntry not defined");
 487   unnamed_module->set_module(ClassLoaderData::the_null_class_loader_data()->add_handle(module_handle));
 488   // Store pointer to the ModuleEntry in the unnamed module's java.lang.reflect.Module object.
 489   java_lang_reflect_Module::set_module_entry(module_handle(), unnamed_module);
 490 }
 491 
 492 void Modules::add_module_exports(jobject from_module, const char* package_name, jobject to_module, TRAPS) {
 493   if (package_name == NULL) {
 494     THROW_MSG(vmSymbols::java_lang_NullPointerException(),
 495               "package is null");
 496   }
 497   if (from_module == NULL) {
 498     THROW_MSG(vmSymbols::java_lang_NullPointerException(),
 499               "from_module is null");
 500   }
 501   ModuleEntry* from_module_entry = get_module_entry(from_module, CHECK);
 502   if (from_module_entry == NULL) {
 503     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 504               "from_module cannot be found");
 505   }




  72                    err_msg("Invalid module name: %s",
  73                            module_name != NULL ? module_name : "NULL"));
  74   }
  75   return module_name;
  76 }
  77 
  78 static const char* get_module_version(jstring version) {
  79   if (version == NULL) {
  80     return NULL;
  81   }
  82   return java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(version));
  83 }
  84 
  85 static ModuleEntryTable* get_module_entry_table(Handle h_loader, TRAPS) {
  86   // This code can be called during start-up, before the classLoader's classLoader data got
  87   // created.  So, call register_loader() to make sure the classLoader data gets created.
  88   ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
  89   return loader_cld->modules();
  90 }
  91 
  92 static ModuleEntry* get_unnamed_module(Handle h_loader, TRAPS) {
  93   // This code can be called during start-up, before the classLoader's classLoader data got
  94   // created.  So, call register_loader() to make sure the classLoader data gets created.
  95   ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
  96   return loader_cld->unnamed_module();
  97 }
  98 
  99 static PackageEntryTable* get_package_entry_table(Handle h_loader, TRAPS) {
 100   // This code can be called during start-up, before the classLoader's classLoader data got
 101   // created.  So, call register_loader() to make sure the classLoader data gets created.
 102   ClassLoaderData *loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
 103   return loader_cld->packages();
 104 }
 105 
 106 static ModuleEntry* get_module_entry(jobject module, TRAPS) {
 107   Handle module_h(THREAD, JNIHandles::resolve(module));
 108   if (!java_lang_reflect_Module::is_instance(module_h())) {
 109     THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(),
 110                    "module is not an instance of type java.lang.reflect.Module");
 111   }
 112   return java_lang_reflect_Module::module_entry(module_h(), CHECK_NULL);
 113 }
 114 
 115 static PackageEntry* get_package_entry(ModuleEntry* module_entry, const char* package_name, TRAPS) {
 116   ResourceMark rm(THREAD);
 117   if (package_name == NULL) return NULL;
 118   TempNewSymbol pkg_symbol = SymbolTable::new_symbol(package_name, CHECK_NULL);


 468               "module is not an instance of type java.lang.reflect.Module");
 469   }
 470 
 471   // Ensure that this is an unnamed module
 472   oop name = java_lang_reflect_Module::name(module_handle());
 473   if (name != NULL) {
 474     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 475               "boot loader's unnamed module's java.lang.reflect.Module has a name");
 476   }
 477 
 478   // Validate java_base's loader is the boot loader.
 479   oop loader = java_lang_reflect_Module::loader(module_handle());
 480   if (loader != NULL) {
 481     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 482               "Class loader must be the boot class loader");
 483   }
 484   Handle h_loader(THREAD, loader);
 485 
 486   log_debug(modules)("set_bootloader_unnamed_module(): recording unnamed module for boot loader");
 487 
 488   // Set java.lang.Module for the boot loader's unnamed module
 489   ModuleEntry* unnamed_module = get_unnamed_module(h_loader, CHECK);



 490   assert(unnamed_module != NULL, "boot loader's unnamed ModuleEntry not defined");
 491   unnamed_module->set_module(ClassLoaderData::the_null_class_loader_data()->add_handle(module_handle));
 492   // Store pointer to the ModuleEntry in the unnamed module's java.lang.reflect.Module object.
 493   java_lang_reflect_Module::set_module_entry(module_handle(), unnamed_module);
 494 }
 495 
 496 void Modules::add_module_exports(jobject from_module, const char* package_name, jobject to_module, TRAPS) {
 497   if (package_name == NULL) {
 498     THROW_MSG(vmSymbols::java_lang_NullPointerException(),
 499               "package is null");
 500   }
 501   if (from_module == NULL) {
 502     THROW_MSG(vmSymbols::java_lang_NullPointerException(),
 503               "from_module is null");
 504   }
 505   ModuleEntry* from_module_entry = get_module_entry(from_module, CHECK);
 506   if (from_module_entry == NULL) {
 507     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 508               "from_module cannot be found");
 509   }


< prev index next >