[lworld] RFR: 8332406: [lworld] C2: Turn flat in array property into proper lattice in type system to address remaining issues

Christian Hagedorn chagedorn at openjdk.org
Mon Dec 8 08:48:12 UTC 2025


This patch turns the boolean flag `_flat_in_array` into a new `FlatInArray` enum to properly define a (Boolean) lattice. This mainly allows us to cleanly represent "maybe flat in array" and "not flat in array". The dedicated top element is the dual of "maybe flat in array".

To simplify the review and to better understand what the changes are, I added code comments directly in the PR.

Here is a high-level overview of the changes:
- `FlatInArray` enum to define a lattice for `flat_in_array`:
https://github.com/openjdk/valhalla/blob/6b1930c7b9a359223a998d0086a1326a9d7905e7/src/hotspot/share/opto/type.hpp#L1182-L1199
- Updated `meet` operations accordingly. Needed to be careful when doing the meet above the centerline.
- Added single `compute_flat_in_array()` method to properly compute the `flat_in_array` property from the information we have when we need to set flat in array newly (this was no properly done before).
- In `flatten_alias_type()`, we flatten to "maybe flat in array".

#### Testing:
- t1-4 + valhalla-comp-stress

Thanks for your feedback,
Christian

-------------

Commit messages:
 - add comment
 - 8332406: [lworld] C2: Turn flat in array property into proper lattice in type system to address remaining issues

Changes: https://git.openjdk.org/valhalla/pull/1774/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1774&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8332406
  Stats: 528 lines in 11 files changed: 286 ins; 145 del; 97 mod
  Patch: https://git.openjdk.org/valhalla/pull/1774.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1774/head:pull/1774

PR: https://git.openjdk.org/valhalla/pull/1774


More information about the valhalla-dev mailing list