[jdk16] RFR: 8255120: C2: assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
Vladimir Ivanov
vlivanov at openjdk.java.net
Wed Jan 13 08:25:01 UTC 2021
On Wed, 13 Jan 2021 08:00:59 GMT, Tobias Hartmann <thartmann 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/
>
> Looks good to me. Can JDK-8255705 be closed as duplicate or are there other performance issues left?
Thanks, Tobias.
> Can JDK-8255705 be closed as duplicate or are there other performance issues left?
I don't have a conclusive answer yet. The fix does improve MPEG score a bit, but it is still slower than jdk-16+20.
jdk-16.latest 150.391 +- 0.361 ops/min
jdk-16.fix 151.212 +- 0.356 ops/min
jdk-16+20 152.267 +- 0.378 ops/min
jdk-16+21 150.343 +- 0.294 ops/min
Will conduct additional performance experiments before deciding what to do with JDK-8255705.
-------------
PR: https://git.openjdk.java.net/jdk16/pull/113
More information about the hotspot-compiler-dev
mailing list