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

Reply via email to