RFR: Load reference barriers

Aleksey Shipilev shade at redhat.com
Thu Feb 14 22:11:53 UTC 2019


On 2/14/19 5:45 PM, Roman Kennke wrote:
> Webrev:
> http://cr.openjdk.java.net/~rkennke/load-ref-barriers/webrev.00/

Whoa, impressive stuff!

What's the plan with this? I say push it to sh/jdk, let it pass testing, stabilization, cleanups,
and then proposed it upstream week(s) later? This would give us automatic webrevs against upstream,
the clear binaries for comparison (basically, jdk/jdk vs sh/jdk) and the patch would not bitrot as much.

I have eyeballed generated code on some interesting benchmarks and it looks clean. It also seems to
pass hotspot_gc_shenandoah for me.

Comments:

 *) Does this mean we execute LRB before SATB enqueue? That means, SATB drainers in
concurrent/traversal may skip the LRB resolution?

 *) There is new include in .ad, why?
     26 #include "gc/shenandoah/c2/shenandoahSupport.hpp"

 *) Why _claim_strong here?

   class ShenandoahEvacuateUpdateRootsTask : public AbstractGangTask {
     ...
      CLDToOopClosure clds(&cl, ClassLoaderData::_claim_strong);

 *) Looking at ShenandoahRootEvacuator::process_evacuate_roots: we are now pre-evacuating most roots
now? Is this to avoid putting LRB when accessing those roots from VM code? I thought this would be
handled by barrier set.

 *) Debugging leftover in node.cpp?

  86     if (Compile::current()->method() != NULL) {
  87       os::message_box("xxx", "yyy");
  88     }

 *) phasetype.hpp: we would need better name for PHASE_CUSTOM...

There are minor corrections from my side, here:
  http://cr.openjdk.java.net/~shade/shenandoah/lrb-shade-fixes.patch

-Aleksey




More information about the shenandoah-dev mailing list