[lworld] RFR: 8376791: [lworld] C2 compilation hits assert(!not_flat || !is_flat()) failed: inconsistency
Quan Anh Mai
qamai at openjdk.org
Wed Feb 4 12:49:25 UTC 2026
Hi,
The issue is that we blindly assume that the vararg argument is a not flat and not null-free array. This misses 2 factors:
- With the introduction of nullable flat layouts, it is possible to flatten a default array allocation (e.g. `new Integer[4]`)
- The node may have its own speculative type already, we need to make sure our optimistic guess does not contradict the existing speculation.
As a result, I changed the implementation to assume that the exact type is the default refined type of the declared parameter type.
Testing:
- [ ] tier1-4,valhalla-comp-stress, Linux-x64
Please kindly review, thanks a lot.
-------------
Commit messages:
- conflicting types when speculate on vararg arguments
Changes: https://git.openjdk.org/valhalla/pull/2030/files
Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2030&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8376791
Stats: 37 lines in 2 files changed: 26 ins; 0 del; 11 mod
Patch: https://git.openjdk.org/valhalla/pull/2030.diff
Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2030/head:pull/2030
PR: https://git.openjdk.org/valhalla/pull/2030
More information about the valhalla-dev
mailing list