On Fri, 22 May 2026 13:03:00 GMT, Casper Norrbin <[email protected]> wrote:

>> Hi everyone,
>> 
>> This change removes the remaining mandatory preloading path for 
>> null-restricted instance fields when loading classes from CDS. 
>> [JDK-8380053](https://bugs.openjdk.org/browse/JDK-8380053) already changed 
>> normal class loading so null-restricted field types are no longer loaded 
>> just because the field is null-restriced. Instead, the preloading is 
>> speculative and driven by the `LoadableDescriptor` attribute. The CDS path 
>> still had the older special case in 
>> `SystemDictionary::preload_from_null_free_field`, which could force loading 
>> of null-restricted field types.
>> 
>> This fix removes that CDS-only preload helper and routes non-static field 
>> signatures through the existing `LoadableDescriptor` path instead. This 
>> makes loading follow the same model as in 
>> `ClassFileParser::fetch_field_classes()` with speculative loading.
>> 
>> Testing:
>> - Tier 1-3
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Casper Norrbin has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Validate archived inline field dependencies without LoadableDescriptors

src/hotspot/share/classfile/systemDictionary.cpp line 1214:

> 1212:         }
> 1213:       } else {
> 1214:         // Pending exceptions are cleared so we can fail silently.

Do we need this branch to attempt to preload?  As long as we have the classes 
for the flattened fields, we should be OK.  I would expect the other classes to 
be optional at this point

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2409#discussion_r3291349663

Reply via email to