RFR: Improve inlining of the update-refs closure. Implement update-refs verification.
Roman Kennke
rkennke at redhat.com
Thu Mar 30 12:48:20 UTC 2017
Am 30.03.2017 um 13:48 schrieb Roman Kennke:
> This makes the update-refs closure inline better.
>
> It's done by adding a templated marked_object_oop_iterate() method that
> uses a templated object->oop closure and call marked_object_iterate()
> with that. The effect is that the call to obj->oop_iterate() can use a
> non-virtual inlined call to the actual OopClosure.
>
> I've also added a little verification routine that checks that no marked
> object points to any to-space object after updating references.
>
> http://cr.openjdk.java.net/~rkennke/update-refs-inlining/webrev.01/
> <http://cr.openjdk.java.net/%7Erkennke/update-refs-inlining/webrev.01/>
>
> (Notice the marked_object_oop_iterate() will also come handy for partial
> collections: currently we're iterating all objects there, but only need
> to actually see marked objects. Plus the inlining of course.)
>
> Tested using specjvm and hotspot_gc_shenandoah.
>
> Roman
>
>
I should probably also note a slight performance improvement when
running specjvm compiler:
baseline:
[189,449s][info][gc,stats] Concurrent Update References = 17,74 s (a
= 286206 us) (n = 62) (lvls, us = 96484, 228516, 265625,
345703, 425766)
patched:
[194,266s][info][gc,stats] Concurrent Update References = 15,04 s (a
= 246623 us) (n = 61) (lvls, us = 60352, 201172, 251953,
296875, 434468)
Roman
More information about the shenandoah-dev
mailing list