RFR: 8349094: GenShen: Race between control and regulator threads may violate assertions [v2]

William Kemper wkemper at openjdk.org
Thu Feb 6 17:20:52 UTC 2025


> There are several changes to the operation of Shenandoah's control threads here.
> * The reason for cancellation is now recorded in `ShenandoahHeap::_cancelled_gc` as a `GCCause`, instead of various member variables in the control thread.
>   *  The cancellation handling is driven entirely by the cancellation cause
>   * The graceful shutdown, alloc failure, humongous alloc failure and preemption requested flags are all removed
>   * The shutdown sequence is simpler
> * The generational control thread uses a lock to coordinate updates to the requested cause and generation
>   * APIs have been simplified to avoid converting between the generation `type` and the actual generation instance
>   * The old heuristic, rather than the control thread itself, is now responsible for resuming old generation cycles
>   *  The control thread doesn't loop on its own (unless the pacer is enabled).

William Kemper has updated the pull request incrementally with one additional commit since the last revision:

  Remove invalid assert, alloc waiters wait until allocation failure is clear

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/23475/files
  - new: https://git.openjdk.org/jdk/pull/23475/files/f97f257b..a7a6eea1

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=23475&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=23475&range=00-01

  Stats: 5 lines in 2 files changed: 2 ins; 1 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/23475.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23475/head:pull/23475

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


More information about the shenandoah-dev mailing list