On Thu, 19 Mar 2026 11:46:32 GMT, Christian Hagedorn <[email protected]> wrote:
> The assert originally fired because we ended up with mismatched array stores > on the same slice: > > <img width="253" height="277" alt="image" > src="https://github.com/user-attachments/assets/91651f3c-c37d-4d97-b3ba-da9c20130056" > /> > > This is fine if these are flat array stores because they are supposed to be > on the same `TypeAryPtr::INLINES` slice initially and are only put on > separate slices later after parsing (done by > `Compile::adjust_flat_array_access_aliases()`) to keep dependencies with > `Object[]` array accesses. This, however, did not correctly work. We could > lose the flat array information in `Compile::flatten_alias_type()` and end up > putting two mismatched stores (i.e. `StoreI` and `StoreD`) on the same slice > that is not `TypeAryPtr::INLINES` as shown by the test case. The assert in > `StoreNode::Ideal()` then fired when detecting this mismatch. > > This was fixed in the meantime by the clean-ups done in > [JDK-8372113](https://bugs.openjdk.org/browse/JDK-8372113) by putting flat > array access properly on `TypeAryPtr::INLINES`: > https://github.com/openjdk/valhalla/blob/04365846345b6675964c4b362f6b3531c95c08f3/src/hotspot/share/opto/compile.cpp#L1445-L1448 > > I've checked with the state before JDK-8372113 with the patch of JDK-8372113 > and it fixes the problem by properly moving the mismatched stores to > `TypeAryPtr::INLINES` first and then later on separate slices in > `Compile::adjust_flat_array_access_aliases()`. > > I'm therefore proposing to remove the special casing in the assert in > `StoreNode::Ideal()` again which was inserted to reduce noise in the CI. I > also re-enabled the disabled testing in `TestLWorld.java` and added the > attached regression test as additional test. > > Thanks, > Christian LGTM, thanks for your investigation. ------------- Marked as reviewed by qamai (Committer). PR Review: https://git.openjdk.org/valhalla/pull/2245#pullrequestreview-3974648693
