RFR: 8293182: Improve testing of CDS archive heap

Ioi Lam iklam at openjdk.org
Wed Aug 31 23:00:15 UTC 2022


Currently, the CDS archive heap supports a fixed set of built-in classes, specified by hard-coded lists in heapShared.cpp:

https://github.com/openjdk/jdk/blob/372fc58e897d25713db0dfe289ed25c40d9a3985/src/hotspot/share/cds/heapShared.cpp#L104-L107

As we plan to improve the archive heap, it becomes critical to be able to write specific test cases for different scenarios.

For example, supporting LambdaForms in the CDS archive heap would require archiving enums of the type [sun.invoke.util.Wrapper](https://github.com/openjdk/jdk/blob/607612899678234c093dc644d3a40cb831c7e43b/src/java.base/share/classes/sun/invoke/util/Wrapper.java), which doesn't work yet (see [JDK-8293187](https://bugs.openjdk.org/browse/JDK-8293187)). This RFE makes it possible to develop support for sun.invoke.util.Wrapper separately, without implementing the full support of LambdaForms in a single colossal step.

- Added `-XX:ArchiveHeapTestClass` to inject extra classes into the archive heap. See the test case ArchiveHeapTestClass.java for examples. For paranoia, This flag is available only in debug builds.
- I also tighten the requirement for the type of classes that can be stored into the archive heap. E.g., we no longer allow classes outside of the `java.base` module.

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

Commit messages:
 - 8293182: Improve testing of CDS archive heap

Changes: https://git.openjdk.org/jdk/pull/10110/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10110&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8293182
  Stats: 582 lines in 9 files changed: 512 ins; 31 del; 39 mod
  Patch: https://git.openjdk.org/jdk/pull/10110.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10110/head:pull/10110

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


More information about the hotspot-runtime-dev mailing list