[lworld] RFR: 8332406: [lworld] C2: Turn flat in array property into proper lattice in type system to address remaining issues [v4]
Frederic Parain
fparain at openjdk.org
Mon Dec 8 19:03:05 UTC 2025
On Mon, 8 Dec 2025 09:57:12 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:
>> 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
>
> Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision:
>
> review Tobias
src/hotspot/share/oops/inlineKlass.cpp line 310:
> 308: }
> 309:
> 310: // An instance is always flat in an array if we have all layouts.
This is true in the current implementation, but this could change in the future if the flattening policies are modified or new APIs to create reference arrays are added.
-------------
PR Review Comment: https://git.openjdk.org/valhalla/pull/1774#discussion_r2599780041
More information about the valhalla-dev
mailing list