RFR: 8255936: "parsing found no loops but there are some" assertion failure with Shenandoah [v4]

Roland Westrelin roland at openjdk.java.net
Tue Nov 17 12:38:23 UTC 2020


> This is a Shenandoah bug but the proposed fix is in shared code.
> 
> In an infinite loop, a barrier is located right after the loop head
> and above the never branch. When the barrier is expanded, control flow
> is added between the loop and the never branch. During loop
> verification the assert fires because it doesn't expect any control
> flow between the never branch and the loop head.
> 
> While it would have been nice to fix this Shenandoah issue in
> Shenandoah code, I think the cleaner fix is to preserve the invariant
> that the never branch is always right after the loop head in an
> infinite loop. In the proposed patch, this is achieved by moving all
> uses of the loop head to the never branch when it's constructed.

Roland Westrelin has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:

 - fix
 - test

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/1073/files
  - new: https://git.openjdk.java.net/jdk/pull/1073/files/bd85cdfc..15fbccd8

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1073&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1073&range=02-03

  Stats: 13157 lines in 238 files changed: 8705 ins; 2419 del; 2033 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1073.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1073/head:pull/1073

PR: https://git.openjdk.java.net/jdk/pull/1073


More information about the shenandoah-dev mailing list