[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
Tue Jan 12 23:17:07 UTC 2021
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/
-------------
Commit messages:
- 8255120: C2: assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
Changes: https://git.openjdk.java.net/jdk16/pull/113/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk16&pr=113&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8255120
Stats: 40 lines in 5 files changed: 14 ins; 15 del; 11 mod
Patch: https://git.openjdk.java.net/jdk16/pull/113.diff
Fetch: git fetch https://git.openjdk.java.net/jdk16 pull/113/head:pull/113
PR: https://git.openjdk.java.net/jdk16/pull/113
More information about the hotspot-compiler-dev
mailing list