RFR: 8317269: Store old classes in linked state in AOT cache [v5]
Coleen Phillimore
coleenp at openjdk.org
Thu Sep 4 18:28:43 UTC 2025
On Mon, 1 Sep 2025 00:57:29 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> src/hotspot/share/classfile/systemDictionaryShared.cpp line 469:
>>
>>> 467:
>>> 468: // Returns true if the DumpTimeClassInfo::is_excluded() is true for at least one of k's exclusion dependencies.
>>> 469: bool SystemDictionaryShared::check_dependencies_exclusion(InstanceKlass* k, DumpTimeClassInfo* info) {
>>
>> So this checks one level of InstanceKlass* k's dependencies, and the table above collects one level of k or k's subclass's dependencies and calls this for those.
>>
>> class K : extends B implements I, J verifies C {} - the above hashtable has B, I and J and C.
>>
>> This function takes B - so checks B class.
>>
>> class B : extends A implements intf verifies C again, why not {}
>>
>> So it'd check A and intf and C again. But when do we check A's super?
>>
>> It seems like the hashtable should be created for all levels of the hierarchy, so only one bit of code should walk the hierarchy, not two.
>
> The ExclusionCheckCandidates table contains all (recursive) supertypes -- E.g., its `add_candidate(k)` method calls `add_candidate(k->java_super())`.
But what about k->java_super()->java_super() ? Where is that added?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26754#discussion_r2323086990
More information about the hotspot-dev
mailing list