[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