RFR: 8296344: Remove dependency on G1 for writing the CDS archive heap

Ioi Lam iklam at openjdk.org
Tue Jan 31 05:49:35 UTC 2023


Goals

- Simplify the writing of the CDS archive heap
    - We no longer need to allocate special "archive regions" during CDS dump time. See all the removed G1 code. 
- Make it possible to (in a future RFE) write the CDS archive heap using any garbage collector

Implementation - the following runs inside a safepoint so heap objects aren't moving

- Find all the objects that should be archived
- Allocate buffer using a GrowableArray
    - Copy all "open" objects into the buffer
    - Copy all "closed" objects into the buffer
- Make sure the heap image can be mapped with all possible G1 region sizes: 
    - While copying, add fillers to make sure no object spans across 1MB boundary (minimal G1 region size)
    - Align the bottom of the "open" and "closed" objects at 1MB boundary
- Write the buffer to disk as the image for the archive heap

Testing: tiers 1 ~ 5

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

Commit messages:
 - clean up
 - 8296344: Remove dependency on G1 for writing the CDS archive heap (step 2: no intermediate buffer)
 - 8296344: Remove dependency on G1 for writing the CDS archive heap (step 1: with buffer copying)

Changes: https://git.openjdk.org/jdk/pull/12304/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12304&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8296344
  Stats: 1925 lines in 26 files changed: 912 ins; 860 del; 153 mod
  Patch: https://git.openjdk.org/jdk/pull/12304.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12304/head:pull/12304

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


More information about the hotspot-dev mailing list