RFR: 8263399: CDS should archive only classes allowed by module system

Ioi Lam iklam at openjdk.java.net
Thu Mar 11 01:23:17 UTC 2021


`ClassListParser::load_current_class()` tries to archive a boot class from `-Xbootclasspath/a` into the unnamed package, even if the module system forbids this class from being defined in the unnamed package.

Such classes, even if archived, won't be usable at runtime anyway. The only test case affected by this code is test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/BootAppendTests.java, which asserts that such class must be archived, but also asserts that such archived classes cannot be used at runtime. So the first assert seems unnecessary and should be removed.

The main change is in classListParser.cpp.

The change in metaspaceShared.cpp is necessary because the `Preload Warning: Cannot find %s"` message was sometimes printed only in the code path that I've deleted.

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

Commit messages:
 - 8263399: CDS should archive only classes allowed by module system

Changes: https://git.openjdk.java.net/jdk/pull/2929/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2929&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8263399
  Stats: 45 lines in 3 files changed: 14 ins; 19 del; 12 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2929.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2929/head:pull/2929

PR: https://git.openjdk.java.net/jdk/pull/2929


More information about the hotspot-runtime-dev mailing list