--- old/src/share/vm/classfile/modules.cpp 2017-03-23 14:05:08.622147793 -0400 +++ new/src/share/vm/classfile/modules.cpp 2017-03-23 14:05:08.114147772 -0400 @@ -244,9 +244,11 @@ pkg_list->length()); // packages defined to java.base - 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()); + 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()); + } } } @@ -264,7 +266,7 @@ } } -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); @@ -404,7 +406,8 @@ // 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) { @@ -514,8 +517,8 @@ "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) {