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

Thanks Tobias for your review!

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

PR Comment: https://git.openjdk.org/valhalla/pull/2245#issuecomment-4096275422

Reply via email to