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