RFR: Revert "Handle missing ShenandoahWriteBarrierRB case"

Aleksey Shipilev shade at redhat.com
Thu Aug 2 13:43:46 UTC 2018


This reverts recent change:
  http://hg.openjdk.java.net/shenandoah/jdk/rev/1440d2adbc8f

It does not violate correctness, but has impact on Traversal performance. Traversal runs with
-ShenandoahWriteBarrierRB to avoid resolves on evacuation_not_in_progress path. Doing the same on
evacuation_in_progress path makes us go to evacuation stub unnecessarily, because we never discover
the forwarded object and in-cset test always succeeds.

diff -r 75a644780460 src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp  Wed Aug 01 16:05:54 2018 +0200
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp  Thu Aug 02 15:39:06 2018 +0200
@@ -2820,18 +2820,12 @@

   IdealLoopTree *loop = phase->get_loop(c);
-
-  Node* rbtrue;
-  if (ShenandoahWriteBarrierRB) {
-    rbtrue = new ShenandoahReadBarrierNode(c, wb_mem, val);
-    phase->register_new_node(rbtrue, c);
-  } else {
-    rbtrue = val;
-  }
+  Node* rbtrue = new ShenandoahReadBarrierNode(c, wb_mem, val);
+  phase->register_new_node(rbtrue, c);

   Node* in_cset_fast_test_failure = NULL;
   in_cset_fast_test(c, rbtrue, raw_mem, wb_mem, region, val_phi, mem_phi, raw_mem_phi, phase);

   // The slow path stub consumes and produces raw memory in addition


Testing: tier1_gc_shenandoah

-Aleksey



More information about the shenandoah-dev mailing list