RFR: Refactor to differentiate young generation marking.

Bernd Mathiske bmathiske at openjdk.java.net
Wed Nov 18 12:36:55 UTC 2020


This change is large to achieve uninterrupted functionality for single-generational Shenandoah while planting code that differentiates two distinct generations and concurrent marking for the young generation.

One main part of the change is redistributing existing code from the heap class to generation-specific classes for further modifications. 

The other is a pervasive case distinction throughout marking code that differentiates between young and global collections. Where necessary we use templates to not impose runtime overhead. In code sections that are not runtime-critical we use conditions and switches over an enum that indicates which generational collection mode we are in (young or global).

We temporarily make all collections in generational mode young collections. Global and old collections will come later.

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

Commit messages:
 - Refactor to differentiate young generation marking.

Changes: https://git.openjdk.java.net/shenandoah/pull/8/files
 Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=8&range=00
  Stats: 1400 lines in 21 files changed: 935 ins; 329 del; 136 mod
  Patch: https://git.openjdk.java.net/shenandoah/pull/8.diff
  Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/8/head:pull/8

PR: https://git.openjdk.java.net/shenandoah/pull/8


More information about the shenandoah-dev mailing list