RFR: 8364111: InstanceMirrorKlass iterators should handle CDS and hidden classes consistently [v3]
Thomas Stuefe
stuefe at openjdk.org
Tue Jul 29 06:41:54 UTC 2025
On Mon, 28 Jul 2025 10:51:11 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> See the bug for more investigation. I think the root cause is already fixed in one of the `InstanceMirrorKlass` iterators, but not in the other one. Additionally, only one iterator handles the hidden classes. Also, there is a stale comment about CMS that apparently prevents us from asserting `is_primitive`, which is not relevant anymore.
>>
>> So this PR commons out the metadata handling on both iterators, which fixes the GenShen+CDS bug, likely fixes hidden classes bug somewhere, and prevents the omission like this from happening again.
>>
>> Additional testing:
>> - [x] Linux x86_64 server fastdebug, Generational Shenandoah + CDS bugs are not reproducing now
>> - [x] Linux x86_64 server fastdebug, `tier1`
>> - [x] Linux x86_64 server fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
>
> Better comment
src/hotspot/share/oops/instanceMirrorKlass.inline.hpp line 126:
> 124:
> 125: if (Devirtualizer::do_metadata(closure)) {
> 126: if (mr.contains(obj)) {
Unrelated, we could probably move mr.contains up to include `InstanceKlass::oop_oop_iterate_bounded<T>(obj, closure, mr);` to prevent the double check.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26477#discussion_r2238687566
More information about the hotspot-dev
mailing list