On Mon, 8 Dec 2025 09:43:54 GMT, Tobias Hartmann <[email protected]> wrote:

>> Quan Anh Mai has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Should not clone MergeMem
>
> src/hotspot/share/prims/jvm.cpp line 493:
> 
>> 491:   } else {
>> 492:     props = ArrayKlass::ArrayProperties::NULL_RESTRICTED;
>> 493:   }
> 
> Suggestion:
> 
>   ArrayKlass::ArrayProperties props = 
> ArrayKlass::ArrayProperties::NULL_RESTRICTED;
>   if (vk->has_non_atomic_layout()) {
>     props |= ArrayKlass::ArrayProperties::NON_ATOMIC;
>   }
> 
> 
> Maybe double-check, if my suggestion even compiles :slightly_smiling_face: 
> 
> Regarding:
> 
>> When creating a refined ObjArrayKlass, we fall back to ref array if the 
>> corresponding flat layout is not present, which means that if the element 
>> type is not a LooselyConsistentValue, 
>> ValueClass::newNullRestrictedNonAtomicArray will make a ref array. This 
>> seems counter-intuitive, it should have fallen back to a null-restricted 
>> atomic array instead.
> 
> I tend to agree but this is still debatable. @fparain Thoughts?

First of all, any logic deciding the layout of an array should be in 
ObjArrayKlass::array_layout_selection().
We had layout logics in multiple places in the past, and they were getting out 
of sync very quickly.
So let's try to keep the decision logic in a single place.
The fall back to the atomic layout makes sense in this case where the array 
creator asked for non-atomicity but the value class author didn't opt in 
non-atomicity.
So the code in ObjArrayKlass::Array_layout_selection() would become:


if (is_null_restricted(properties)) {
    if (is_non_atomic(properties)) {
      // Null-restricted + non-atomic
      if (vk->maybe_flat_in_array()) {
        if (vk->has_non_atomic_layout()) {
          return ArrayDescription(FlatArrayKlassKind, properties, 
LayoutKind::NON_ATOMIC_FLAT);
        } else if (vk->has_atomic_layout()) {
          return ArrayDescription(FlatArrayKlassKind, properties, 
LayoutKind::ATOMIC_FLAT);
        }
      }
      return ArrayDescription(RefArrayKlassKind, properties, 
LayoutKind::REFERENCE);
    } else {

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/1755#discussion_r2611625502

Reply via email to