[lworld] Integrated: 8357474: [lworld] Consolidate load/store flat inline types

Quan Anh Mai qamai at openjdk.org
Tue Jun 3 11:50:11 UTC 2025


On Wed, 21 May 2025 16:07:15 GMT, Quan Anh Mai <qamai at openjdk.org> wrote:

> Hi,
> 
> This patch consolidates loading and storing of flat inline types. This makes it so that `make_from_flat` and `store_flat` will take a pointer to the target location. `make_from_flat_array` and `store_flat_array` are split out into their own methods which receive an `idx` parameter. This also fixes some issues I theorycrafted:
> 
> - Improper loading/storing of atomic elements in a non-atomic container. This is not supported at the moment but it would be great to prepare for it.
> - `is_naturally_atomic` checks `nof_declared_nonstatic_fields`, which is incorrect if the sole field has multiple fields. I refactored it into `ciInlineKlass`, the decision to do atomic loads/stores is also delegated to the callee, the caller only needs to know whether the operations act as if they are atomic, not whether they are actually executed atomically.
> - `null_free` of an oop can only be trusted if the container itself is null-free. For example this case:
> 
>         value class StringHolder {
>             @NullRestricted
>             String s;
>         }
> 
>         value class StringHolderHolder {
>             // flatten
>             StringHolder v;
>         }
> 
> Then `v.s` cannot be trusted to be non-null because `v` can be null.
> 
> This also allows straightforward implementation of https://bugs.openjdk.org/browse/JDK-8349110.
> 
> Please let me know what you think. Thanks very much.

This pull request has now been integrated.

Changeset: 64ee2e2b
Author:    Quan Anh Mai <qamai at openjdk.org>
Committer: Tobias Hartmann <thartmann at openjdk.org>
URL:       https://git.openjdk.org/valhalla/commit/64ee2e2bf038681ac12769eb6f5edad60896a221
Stats:     819 lines in 14 files changed: 360 ins; 288 del; 171 mod

8357474: [lworld] Consolidate load/store flat inline types

Reviewed-by: thartmann

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

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


More information about the valhalla-dev mailing list