RFR: Fix wb-assist for Traversal

Roman Kennke rkennke at redhat.com
Wed Oct 24 15:11:22 UTC 2018


WB-assist is currently not working for Traversal. It is watching out for
marked objects close to the one just evacuated, but that wouldn't work
for traversal GC because it's only ever marking evacuated object,
nothing in cset gets marked.

In order to fix this, we need to actually do a little sub-traversal
starting from the object just evacuated. That's what the patch does:

http://cr.openjdk.java.net/~rkennke/traversal-wb-assist/webrev.00/

It filters objects exceeding the size of a cache-line because both
scanning its fields and copying it may cause unexpected latency (imagine
hitting a large object array there).

It also updates the references that it's traversing because we're there
already so why not do it.

It does *not* do any marking, liveness-counting and all the rest. This
would unnecessarily complicate the code and we better leave that to the
GC threads.

I couldn't do any significant performance testing on my laptop, but I
tried a bunch of wb-heavy benchmarks and it didn't seem to regress.

It passes tier3_gc_shenandoah

WDYT? Ok?

Roman



More information about the shenandoah-dev mailing list