RFR: 8261090: Store old classfiles in static CDS archive
Jiangli Zhou
jiangli at openjdk.java.net
Wed Apr 14 01:07:59 UTC 2021
On Wed, 14 Apr 2021 00:14:46 GMT, Calvin Cheung <ccheung at openjdk.org> wrote:
> Please review this RFE for storing old classfiles with major version < 50 in static CDS archive.
> During static CDS dump time, old classes won't be verified/rewritten. They will be verified/rewritten during runtime.
> Therefore, the `_constMethod`, `_constants`, and `_cache` of old classes must be stored in the RW region of the archive for runtime rewriting. The `ConstantPool::remove_unshareable_info` will be skipped during dump time and the `ConstantPool::restore_unshareable_info` will be skipped during runtime for old classes.
>
> Passed tiers 1,2,3,4 tests on mach5.
src/hotspot/share/memory/metaspaceShared.cpp line 759:
> 757: Thread* THREAD = current; // For exception macros.
> 758: Arguments::assert_is_dumping_archive();
> 759: if (ik->is_loaded() && !ik->is_linked() && !MetaspaceShared::is_old_class(ik) &&
It would be desirable to support the case when verification is not enabled, which are not rare. For old classes, bytecode rewriting and class linking can still be done at dump time in those cases, with your current proposed change that includes old classes in the archive image. Otherwise, runtime would have to spend CPU cycles to do rewriting/linking for old classes when not truly necessary.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3479
More information about the hotspot-runtime-dev
mailing list