--- old/src/hotspot/share/classfile/modules.cpp 2020-08-12 15:04:46.273165155 -0700 +++ new/src/hotspot/share/classfile/modules.cpp 2020-08-12 15:04:46.049156723 -0700 @@ -27,6 +27,7 @@ #include "classfile/classFileParser.hpp" #include "classfile/classLoader.hpp" #include "classfile/classLoaderData.inline.hpp" +#include "classfile/classLoaderDataShared.hpp" #include "classfile/javaAssertions.hpp" #include "classfile/javaClasses.hpp" #include "classfile/javaClasses.inline.hpp" @@ -39,6 +40,7 @@ #include "classfile/vmSymbols.hpp" #include "logging/log.hpp" #include "logging/logStream.hpp" +#include "memory/metaspaceShared.hpp" #include "memory/resourceArea.hpp" #include "runtime/handles.inline.hpp" #include "runtime/javaCalls.hpp" @@ -450,6 +452,28 @@ } } +#if INCLUDE_CDS_JAVA_HEAP +void Modules::define_archived_modules(jobject platform_loader, jobject system_loader, TRAPS) { + if (platform_loader == NULL) { + THROW_MSG(vmSymbols::java_lang_NullPointerException(), "Null platform loader object"); + } + + if (system_loader == NULL) { + THROW_MSG(vmSymbols::java_lang_NullPointerException(), "Null system loader object"); + } + + if (UseSharedSpaces && MetaspaceShared::use_full_module_graph()) { + Handle h_platform_loader(THREAD, JNIHandles::resolve_non_null(platform_loader)); + ClassLoaderData* platform_loader_data = SystemDictionary::register_loader(h_platform_loader); + ClassLoaderDataShared::restore_java_platform_loader_from_archive(platform_loader_data); + + Handle h_system_loader(THREAD, JNIHandles::resolve_non_null(system_loader)); + ClassLoaderData* system_loader_data = SystemDictionary::register_loader(h_system_loader); + ClassLoaderDataShared::restore_java_system_loader_from_archive(system_loader_data); + } +} +#endif + void Modules::set_bootloader_unnamed_module(jobject module, TRAPS) { ResourceMark rm(THREAD);