RFR: Various fixes and improvements for partial GC
rkennke at redhat.com
Wed Mar 15 10:10:22 UTC 2017
This fixes a number of issues and implements some improvements. In
- Most important: when evacuating an oop, we need to not only fix up and
update the matrix for pointers into the cset (as we already do), but we
also need to update the matrix for pointers outside the cset!
- Make sure we don't get overlap between the collection set and the root
set. Regions already in the cset don't need to be in the root set.
- We're iterating over all root regions: we can just as well cleanup and
update the outgoing matrix for them. Makes the matrix more precise.
- Make building the root set a bit more efficient: instead of iterating
over all regions and picking only cset regions, we can iterate over the
cset regions to begin with. Also, instead of using
root_regions->contains() for determining whether or not a region is a
root (which is a linear search), I added set/is_root() to SHR, and use that.
- ShenandoahPartialInboundThreshold doesn't need to be bounded by 0..100
(it's not a percentage)
- Added a number of asserts and TODOs
More information about the shenandoah-dev