RFR: LRB backport to 8u
Roman Kennke
rkennke at redhat.com
Wed Oct 23 11:16:28 UTC 2019
This backports the load-reference-barrier stuff and related follow-up
bugfixes to shenandoah/jdk8u.
The patch removes/restores a *lot* of shared-code-changes (e.g. all RBs,
WBs, obj-eq) at the expense of inserting a few new ones (the LRB). Most
of the time, those are relatively concentrated already because (I
presume) this abstraction needed to be done for decoding oops already).
Having LRB will enabled elimination of forwarding pointer, which in turn
will remove/restore more shared-code-changes (anything to do with
alloctation, and dealing with the offsets).
The change is significantly different from what went into sh/11u due to
missing GC interfaces. When re-implementing the parts, I tried to keep
the Shenandoah interface stuffs (e.g.
ShenandoahBarrierSet/Assembler/C1/C2) as close to later versions as
possible, without actually introducing the GC interface machinery.
Whenever shared code needs to call into Shenandoah, I am following this
pattern now:
#if INCLUDE_ALL_GCS
if (UseShenandoahGC) {
ShenandoahBarrierSetAssembler::bsasm()->load_reference_barrier(..)
}
#endif
This makes it obvious what's happening, and reliably disables the paths
for non-Shenandoah calls or minimal builds.
Testing: hotspot_gc_shenandoah, specjvm, specjbb
List-of-changes:
http://cr.openjdk.java.net/~rkennke/lrb-sh8/changes.txt
Webrev:
http://cr.openjdk.java.net/~rkennke/lrb-sh8/webrev.00/
Can I please get a review?
Thanks,
Roman
More information about the shenandoah-dev
mailing list