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