RFR: Handle preemption of old cycle between filling and bootstrap phases [v2]

William Kemper wkemper at openjdk.org
Thu Apr 20 16:38:41 UTC 2023


> In the case when a request to run a young cycle arrives _after_ making the old generation parseable but _before_ disallowing preemption, the preemption request would cause the young bootstrap cycle to be preempted (not cancelled). This is not expected and would result in the old marking phase beginning with stale oops in the young mark queues after the mark bitmaps were cleared. This ultimately triggers assertions that such objects should be marked.
> 
> With this change if we detect a cancellation between filling and bootstrapping we make a distinction between:
> * A cancellation due to allocation failure. In this case the old cycle is interrupted to run a degenerated cycle.
> * A cancellation due to a young cycle request. In this case, the old cycle is allowed to continue with the boostrap cycle, which is itself a concurrent young cycle.

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

  Re-enable TestArrayCopyStress

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

Changes:
  - all: https://git.openjdk.org/shenandoah/pull/262/files
  - new: https://git.openjdk.org/shenandoah/pull/262/files/af725b57..6b7a0939

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

  Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod
  Patch: https://git.openjdk.org/shenandoah/pull/262.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/262/head:pull/262

PR: https://git.openjdk.org/shenandoah/pull/262


More information about the shenandoah-dev mailing list