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