< prev index next > src/hotspot/share/classfile/packageEntry.cpp
Print this page
#include "cds/archiveBuilder.hpp"
#include "cds/archiveUtils.hpp"
#include "cds/cdsConfig.hpp"
#include "classfile/classLoaderData.hpp"
#include "classfile/moduleEntry.hpp"
+ #include "classfile/modules.hpp"
#include "classfile/packageEntry.hpp"
#include "classfile/vmSymbols.hpp"
#include "logging/log.hpp"
#include "logging/logStream.hpp"
#include "memory/metadataFactory.hpp"
}
void PackageEntry::metaspace_pointers_do(MetaspaceClosure* it) {
it->push(&_name);
it->push(&_module);
- it->push(&_qualified_exports);
+
+ ModuleEntry* module_entry = module();
+ if (!(module_entry->is_named() && Modules::is_dynamic_proxy_module(module_entry))) {
+ // This is a dynamically generated module. Its _qualified_exports will be
+ // restored at runtime in the Java code. See comments in ArchivedData::restore().
+ it->push(&_qualified_exports);
+ }
}
PackageEntryTable::PackageEntryTable() { }
PackageEntryTable::~PackageEntryTable() {
bool PackageEntry::should_be_archived() const {
return module()->should_be_archived();
}
void PackageEntry::remove_unshareable_info() {
+ ModuleEntry* module_entry = ArchiveBuilder::current()->get_source_addr(module());
+ if (module_entry->is_named() && Modules::is_dynamic_proxy_module(module_entry)) {
+ // See comments in PackageEntry::metaspace_pointers_do()
+ _qualified_exports = nullptr;
+ }
if (_qualified_exports != nullptr) {
_qualified_exports->set_in_aot_cache();
}
_defined_by_cds_in_class_path = 0;
JFR_ONLY(set_trace_id(0);) // re-init at runtime
< prev index next >