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 1112:

> 1110: // must be checked against the resolved runtime class before the shared 
> class can be used.
> 1111: bool 
> SystemDictionary::preload_from_required_inline_field(InstanceKlass* ik, 
> Handle class_loader, Symbol* sig, int field_index, TRAPS) {
> 1112:   TempNewSymbol name = Signature::strip_envelope(sig);

This symbol is only used in logging, could it be possible to create it only 
when a message is logged?

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

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

Reply via email to