RFR: 8259214: MetaspaceClosure support for Arrays of MetaspaceObj [v4]

Frederic Parain fparain at openjdk.java.net
Wed Jan 20 21:11:50 UTC 2021


On Tue, 19 Jan 2021 20:13:10 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> Currently, `MetaspaceClosure::push` supports only the following variants:
>> 
>> MetaspaceClosure* it = ...;
>> Klass* o = ...; it->push(&o);
>> Array<int>* a1 = ...; it->push(&a1);
>> Array<Annotation*>* a2 = ...; it->push(&a2);
>> 
>> In Valhalla, support is needed for the following variant (Annotation is a subtype of MetaspaceObj):
>> 
>> Array<Annotation>* a3 = ...; it->push(&a3);
>> 
>> This change will allow CDS to make a copy of this array, as well as relocating all the pointers embedded in the elements of this array. See a test case in test_metaspaceClosure.cpp.
>> 
>> I also cleaned up the code (with help from @kimbarrett) to use SFINAE to dispatch from `MetaspaceClosure::push` to the different subtypes of `MetaspaceClosure::Ref`.
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove RefMatcher and go back to overloaded template functions for push(...)

Looks good to me.
Thank you for adding this feature.

Fred

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

Marked as reviewed by fparain (Committer).

PR: https://git.openjdk.java.net/jdk/pull/1995


More information about the hotspot-dev mailing list