RFR: 8250989: Consolidate buffer allocation code for CDS static/dynamic dumping

Ioi Lam iklam at openjdk.java.net
Thu Jan 28 18:33:49 UTC 2021


Before this PR, when a static CDS archive is dumped, we would unconditionally allocate a 4GB ReservedSpace and use that as the buffer for writing the archive content. We usually don't need such a big ReservedSpace. this also unnecessarily complicates Metaspace::global_initialize().

After this PR, both we first load all the classes and then allocate a buffer with an appropriate size.

I also simplified the pointer relocation code that prepares the archive to be mapped at the "requested location" (usually 0x800000000), and improved the comments.

We used to have lots of special cases for adjusting pointers during dynamic dump. All of those are removed.

Reviewers, please start with
- Header comments in archiveBuilder.hpp that describe the overall process of archive dumping
- `MetaspaceShared::initialize_for_static_dump()`
- `ArchiveBuilder::reserve_buffer()`
- Comments around `RelocateBufferToRequested` in archiveBuilder.cpp

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

Commit messages:
 - fixed whitespace
 - clean up and comments
 - move remaining functions to archiveBuilder.cpp
 - renamed "default" to "requested"
 - started

Changes: https://git.openjdk.java.net/jdk/pull/2296/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2296&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8250989
  Stats: 1356 lines in 41 files changed: 447 ins; 693 del; 216 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2296.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2296/head:pull/2296

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


More information about the hotspot-runtime-dev mailing list