RFR: 8325671: Shenandoah: Introduce a ShenandoahGenerationType and templatize certain marking closures with it [v2]
Y. Srinivas Ramakrishna
ysr at openjdk.org
Tue Feb 13 00:04:06 UTC 2024
On Mon, 12 Feb 2024 22:25:27 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:
>> 8325671: Shenandoah: Introduce a ShenandoahGenerationType and templatize certain marking closures with it
>
> Y. Srinivas Ramakrishna has updated the pull request incrementally with one additional commit since the last revision:
>
> Missing #include of ShenandoahGenerationType (albeit satisfied transitively via other include).
Did some spot checks and overll sanity checks to compare the libjvm.so contents before and after the change, and don't see any great difference (although the libjvm.so size did increase a tad). Here's one example of the new tempaltized vs old non-templatized versions (second column is the size from nm):
* Before templating:
0000000015044416 0000000000000947 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceMirrorKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015037600 0000000000000930 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceMirrorKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015029888 0000000000000883 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceClassLoaderKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015033552 0000000000000882 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceClassLoaderKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015029040 0000000000000836 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015032704 0000000000000835 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015038544 0000000000000564 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceRefKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015045376 0000000000000564 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceRefKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015037104 0000000000000489 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceStackChunkKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015043920 0000000000000489 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<InstanceStackChunkKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015036912 0000000000000182 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<ObjArrayKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015043728 0000000000000182 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<ObjArrayKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000022615392 0000000000000056 b OopOopIterateDispatch<ShenandoahMarkRefsClosure>::_table
0000000015028784 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<InstanceClassLoaderKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015028832 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<InstanceStackChunkKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015028736 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<InstanceMirrorKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015028688 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<InstanceRefKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015028928 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<TypeArrayKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015028880 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<ObjArrayKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015028640 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::init<InstanceKlass>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000022615368 0000000000000008 b guard variable for OopOopIterateDispatch<ShenandoahMarkRefsClosure>::_table
0000000015029024 0000000000000001 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<TypeArrayKlass, oopDesc*>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
0000000015029008 0000000000000001 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure>::Table::oop_oop_iterate<TypeArrayKlass, narrowOop>(ShenandoahMarkRefsClosure*, oopDesc*, Klass*)
* After templating:
0000000015038032 0000000000000947 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceMirrorKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015044480 0000000000000930 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceMirrorKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015029696 0000000000000883 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceClassLoaderKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015033360 0000000000000882 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceClassLoaderKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028848 0000000000000836 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015032512 0000000000000835 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015058048 0000000000000564 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceRefKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015038992 0000000000000564 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceRefKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015043984 0000000000000489 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceStackChunkKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015037536 0000000000000489 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<InstanceStackChunkKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015043792 0000000000000182 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<ObjArrayKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015037344 0000000000000182 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<ObjArrayKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000022615392 0000000000000056 b OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::_table
0000000015028592 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<InstanceClassLoaderKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028640 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<InstanceStackChunkKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028544 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<InstanceMirrorKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028496 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<InstanceRefKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028736 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<TypeArrayKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028688 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<ObjArrayKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028448 0000000000000037 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::init<InstanceKlass>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000022615368 0000000000000008 b guard variable for OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::_table
0000000015028832 0000000000000001 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<TypeArrayKlass, oopDesc*>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
0000000015028816 0000000000000001 t void OopOopIterateDispatch<ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0> >::Table::oop_oop_iterate<TypeArrayKlass, narrowOop>(ShenandoahMarkRefsClosure<(ShenandoahGenerationType)0>*, oopDesc*, Klass*)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17815#issuecomment-1939816220
More information about the shenandoah-dev
mailing list