RFR: JDK-8231087: Shenandoah: Self-fixing references

Roman Kennke rkennke at redhat.com
Tue Sep 17 17:31:58 UTC 2019


One significant contributor to Shenandoah's barrier performance is the
LRB-midpath performance: when heap is unstable *and* the loaded
reference is in cset, we then check if the object is forwarded and if
not, call out into the slow-path. A way to avoid this is to update
references right in the slow-path. This avoids triggering the cset-check
on next access of the same field.

Depending on the workload, this provides throughput speedup of up to
15%. On the other hand, the additional work of updating the field
doesn't seem to impact noticably, presumably because it's on the
slow-path. An additional advantage is faster update-refs phase, because
fewer references are remaining that point to from-space.

Jira issue:
https://bugs.openjdk.java.net/browse/JDK-8231087
Webrev:
http://cr.openjdk.java.net/~rkennke/JDK-8231087/webrev.00/

Testing: This has baked for several weeks in sh/jdk and undergone deep
CI testing for a while, including several related bugfixes. The rebased
patch has been tested with hotspot_gc_shenandoah locally

Can I please get a review?

Thanks,
Roman



More information about the shenandoah-dev mailing list