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
