< prev index next >

src/share/vm/classfile/modules.cpp

Print this page

        

@@ -242,14 +242,16 @@
                      module_version != NULL ? module_version : "NULL",
                      module_location != NULL ? module_location : "NULL",
                      pkg_list->length());
 
   // packages defined to java.base
+  if (log_is_enabled(Trace, modules)) {
   for (int x = 0; x < pkg_list->length(); x++) {
     log_trace(modules)("define_javabase_module(): creation of package %s for module " JAVA_BASE_NAME,
                        (pkg_list->at(x))->as_C_string());
   }
+  }
 }
 
 // Caller needs ResourceMark.
 void throw_dup_pkg_exception(const char* module_name, PackageEntry* package, TRAPS) {
   const char* package_name = package->name()->as_C_string();

@@ -262,11 +264,11 @@
       err_msg("Package %s for module %s is already in the unnamed module defined to the class loader",
               package_name, module_name));
   }
 }
 
-void Modules::define_module(jobject module, jstring version,
+void Modules::define_module(jobject module, jboolean is_open, jstring version,
                             jstring location, const char* const* packages,
                             jsize num_packages, TRAPS) {
   ResourceMark rm(THREAD);
 
   if (module == NULL) {

@@ -402,11 +404,12 @@
     }  // if (num_packages > 0)...
 
     // Add the module and its packages.
     if (!dupl_modules && existing_pkg == NULL) {
       // Create the entry for this module in the class loader's module entry table.
-      ModuleEntry* module_entry = module_table->locked_create_entry_or_null(module_handle, module_symbol,
+      ModuleEntry* module_entry = module_table->locked_create_entry_or_null(module_handle,
+                                    (is_open == JNI_TRUE), module_symbol,
                                     version_symbol, location_symbol, loader_data);
 
       if (module_entry == NULL) {
         dupl_modules = true;
       } else {

@@ -512,12 +515,12 @@
   if (from_module_entry == NULL) {
     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
               "from_module cannot be found");
   }
 
-  // All packages in unnamed are exported by default.
-  if (!from_module_entry->is_named()) return;
+  // All packages in unnamed and open modules are exported by default.
+  if (!from_module_entry->is_named() || from_module_entry->is_open()) return;
 
   ModuleEntry* to_module_entry;
   if (to_module == NULL) {
     to_module_entry = NULL;  // It's an unqualified export.
   } else {
< prev index next >