RFR: 8343493: Perform module checks during MetaspaceShared::map_archives()
Calvin Cheung
ccheung at openjdk.org
Tue Nov 5 06:15:29 UTC 2024
On Tue, 5 Nov 2024 01:00:00 GMT, Ioi Lam <iklam at openjdk.org> wrote:
> Currently, `Modules::serialize()` and `Modules::serialize_addmods_names()` store/retrieve the main module name, as well as the set of modules specified by `--add-modules`. These functions are called from `MetaspaceShared::serialize()`, *after* the JVM has decided to use the CDS archive.
>
> However, with JEP 483 ([JDK-8315737](https://bugs.openjdk.org/browse/JDK-8315737)), we need the module information *before* deciding whether to use the CDS archive. For example, if `-XX:+AOTClassLinking` is specified during the CDS archive creation, the archive cannot be used if we specified an incompatible main module at runtime.
>
> This RFE added a new function, `MetaspaceShared::early_serialize()`, which is called from `MetaspaceShared::map_archives()`. `Modules::serialize()` and `Modules::serialize_addmods_names()` are called within this context so that we can use the module information to decide whether to use the CDS archive or not.
>
> I also added some comments about what "serialize" does, since it's rather non-obvious.
Looks good overall. One comment:
src/hotspot/share/cds/filemap.hpp line 197:
> 195: bool _use_secondary_supers_table; // save the flag UseSecondarySupersTable
> 196: size_t _cloned_vtables_offset; // The address of the first cloned vtable
> 197: size_t _early_serialized_data_offset; // Data accessed using {ReadClosure,WriteClosure}::serialize()
Should we print this field in `FileMapHeader::print()`?
-------------
PR Review: https://git.openjdk.org/jdk/pull/21890#pullrequestreview-2414704238
PR Review Comment: https://git.openjdk.org/jdk/pull/21890#discussion_r1828781008
More information about the hotspot-runtime-dev
mailing list