RFR: Improve inlining of the update-refs closure. Implement update-refs verification.
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.
> (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.
I should probably also note a slight performance improvement when
running specjvm compiler:
[189,449s][info][gc,stats] Concurrent Update References = 17,74 s (a
= 286206 us) (n = 62) (lvls, us = 96484, 228516, 265625,
[194,266s][info][gc,stats] Concurrent Update References = 15,04 s (a
= 246623 us) (n = 61) (lvls, us = 60352, 201172, 251953,
More information about the shenandoah-dev