RFR: 8324067: GenShen: Isolate regulator thread to generational mode [v6]
William Kemper
wkemper at openjdk.org
Fri Feb 16 19:24:33 UTC 2024
> Shenandoah's generational mode uses a second thread to evaluate heuristics. This is necessary so that the heuristics may interrupt a control thread which is running an old cycle in order to run a young cycle.
>
> The changes here move the regulator thread into `ShenandoahGenerationalHeap`. The generational version of the control thread is also now instantiated only by the generational heap. The upstream version of the control thread has more or less been restored. To summarize:
> * An abstract base class called `ShenandoahController` has been introduced as the base class for the original and generational control threads. It has just one virtual method and it is not on a fast path. Much of the common code has been pulled up into this class.
> * The respective control threads no longer need to check what mode they are in. They also no longer need to select which global generation they need to use. The regulator thread is now only used by the generational mode so it no longer supports running only global cycles.
William Kemper has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 26 commits:
- Merge remote-tracking branch 'shenandoah/master' into isolate-regulator-thread
- Fix zero build some more
- Fix Mac and Zero builds
- Remove unused code (design changed in upstream patch)
- Merge branch 'shenandoah-master' into isolate-regulator-thread
- Merge remote-tracking branch 'shenandoah/master' into isolate-regulator-thread
- Clean up includes
- Remove unnecessary mode checks
- Remove non-generational functionality from regulator thread
- Move heap changed tracking from control thread to heap
- ... and 16 more: https://git.openjdk.org/shenandoah/compare/c7bcd74c...358d48d1
-------------
Changes: https://git.openjdk.org/shenandoah/pull/391/files
Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=391&range=05
Stats: 2127 lines in 15 files changed: 1282 ins; 728 del; 117 mod
Patch: https://git.openjdk.org/shenandoah/pull/391.diff
Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/391/head:pull/391
PR: https://git.openjdk.org/shenandoah/pull/391
More information about the shenandoah-dev
mailing list