RFR: Degenerate to marking phase if cancellation detected after final mark

William Kemper wkemper at openjdk.java.net
Thu Jan 27 16:58:36 UTC 2022


If an allocation failure occurs between the end of concurrent mark and the start of final mark, then the degenerate cycle resumes from the 'outside of cycle' degenerated point. For other modes, this is merely a performance problem (as described in [JDK-8261093](https://bugs.openjdk.java.net/browse/JDK-8261093)). For the generational mode, this is a correctness problem because the degenerated cycle will swap the remembered set cards again. Because the concurrent marking was incomplete, this could lose information about which cards should be dirty during the degenerated (re) mark.

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

Commit messages:
 - Degenerate to marking phase if cancellation detected after final mark

Changes: https://git.openjdk.java.net/shenandoah/pull/105/files
 Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=105&range=00
  Stats: 2 lines in 1 file changed: 2 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/shenandoah/pull/105.diff
  Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/105/head:pull/105

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


More information about the shenandoah-dev mailing list