RFR: Improve inlining of the update-refs closure. Implement update-refs verification.

Roman Kennke rkennke at redhat.com
Thu Mar 30 11:48:49 UTC 2017


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




More information about the shenandoah-dev mailing list