RFR: 8309240: Array classes should be stored in dynamic CDS archive

Calvin Cheung ccheung at openjdk.org
Thu Jul 20 16:56:58 UTC 2023


Please review this RFE for adding array classes in the dynamic CDS archive.

During dynamic dump, only the array classes with the `element_klass` already in the static archive will be stored in the dynamic archive. See `ArchiveBuilder::gather_array_klasses()`. It is because the array classes which are in the same archive (either static or dynamic) are already "connected" together. Higher dimension primitive array classes are also stored in the dynamic archive. Note that one-dimensional primitive array classes are store in the static archive.

During runtime, the `DynamicArchive::setup_array_klasses()` is for setting up the array classes. If only the `bottom_klass` is in the static archive, the function will point the `array_klasses` to the stored array classes in the dynamic archive. If a lower dimension array class is already in the static archive, its `higher_dimension` will be set to refer to the stored array classes in the dynamic archive.

Some logging is added to `ObjArrayKlass::array_klass(int n, TRAPS)` to indicate an array class is being loaded from the archive.

Passed tiers 1 - 4 testing.

-------------

Commit messages:
 - 8309240: Array classes should be stored in dynamic CDS archive

Changes: https://git.openjdk.org/jdk/pull/14959/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14959&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8309240
  Stats: 420 lines in 11 files changed: 397 ins; 5 del; 18 mod
  Patch: https://git.openjdk.org/jdk/pull/14959.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14959/head:pull/14959

PR: https://git.openjdk.org/jdk/pull/14959


More information about the hotspot-runtime-dev mailing list