RFR: 8255936: "parsing found no loops but there are some" assertion failure with Shenandoah
Roland Westrelin
roland at openjdk.java.net
Thu Nov 5 08:50:00 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.
-------------
Commit messages:
- fix & test
Changes: https://git.openjdk.java.net/jdk/pull/1073/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1073&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8255936
Stats: 13 lines in 2 files changed: 6 ins; 5 del; 2 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