RFR: 8298048: Combine CDS archive heap into a single block

Ioi Lam iklam at openjdk.org
Tue Apr 4 21:15:00 UTC 2023


This PR combines the "open" and "closed" regions of the CDS archive heap into a single region. This significantly simplifies the implementation, making it more compatible with non-G1 collectors. There's a net removal of ~1000 lines in src code and another ~1200 lines of tests.

**Notes for reviewers:**
- Most of the code changes in CDS are removing the handling of "open" vs "closed" objects.
  - Reviewers can start with ArchiveHeapWriter::copy_source_objs_to_buffer().
  - It might be easier to see the diff with whitespaces off.
- There are two major changes in the G1 code
  - The archived objects are now stored in the "old" region (see g1CollectedHeap.cpp in [58d720e](https://github.com/openjdk/jdk/pull/13284/commits/58d720e294bb36f21cb88cddde724ed2b9e93770))
  - The majority of the other changes are removal of the "archive" region type (see heapRegionType.hpp). For ease of review, such code is isolated in [a852dfb](https://github.com/openjdk/jdk/pull/13284/commits/a852dfbbf5ff56e035399f7cc3704f29e76697f6)
- Testing changes:
  - Now the archived java objects can move, along with the "old" regions that contain them. It's no longer possible to test whether a heap object came from CDS. As a result, the `WhiteBox.isShared(Object o)` API has been removed.
  - Many tests that uses this API are removed. Most of them were written during early development of CDS archived objects and are no longer relevant.

**Testing:**
- Mach5 tiers 1 ~ 7

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

Commit messages:
 - Remove archive region types from G1
 - clean up (1)
 - 8298048: Combine CDS archive heap into a single block

Changes: https://git.openjdk.org/jdk/pull/13284/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13284&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8298048
  Stats: 2995 lines in 75 files changed: 110 ins; 2271 del; 614 mod
  Patch: https://git.openjdk.org/jdk/pull/13284.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13284/head:pull/13284

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


More information about the serviceability-dev mailing list