[jdk16] Integrated: 8255120: C2: assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
Vladimir Ivanov
vlivanov at openjdk.java.net
Thu Jan 14 17:22:11 UTC 2021
On Tue, 12 Jan 2021 22:16:54 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:
> JDK-8255000 made post-loopopts IGVN processing predictable, but also reordered it with macro node expansion.
>
> It turned out that macro node expansion is sensitive to narrower types post-loopopts IGVN generates and it either triggers the aforementioned assert or produces less efficient code (some runtime checks aren't eliminated anymore and it adds up some overhead, see JDK-8255705 for details).
>
> I'll file a separate RFE to make macro node expansion more robust (and relax the problematic assert), but for now (jdk16) I propose to restore the original order of transformations.
>
> Testing:
> - [x] failing test
> - [x] hs-tier1 - hs-tier6
> - [x] SPECjvm2008 MPEG
> - [x] gc/shenandoah/
This pull request has now been integrated.
Changeset: 0148adf2
Author: Vladimir Ivanov <vlivanov at openjdk.org>
URL: https://git.openjdk.java.net/jdk16/commit/0148adf2
Stats: 40 lines in 5 files changed: 14 ins; 15 del; 11 mod
8255120: C2: assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
Reviewed-by: thartmann
-------------
PR: https://git.openjdk.java.net/jdk16/pull/113
More information about the shenandoah-dev
mailing list