# HG changeset patch # User rkennke # Date 1535744132 -7200 # Fri Aug 31 21:35:32 2018 +0200 # Node ID 084797df87610fa89e9ccacaa5fa12b6c220d7d2 # Parent 83b0f4662e36b7f813410cdfa45a534e29638110 Add flag to switch between WB and RB-based acmp diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp @@ -773,7 +773,7 @@ } Node* ShenandoahBarrierSetC2::cmpoop_cmp(GraphKit* kit, Node* a, Node* b) const { - if (ShenandoahAcmpBarrier && ShenandoahVerifyOptoBarriers) { + if (ShenandoahAcmpBarrier && (ShenandoahVerifyOptoBarriers || ShenandoahWBAcmpBarrier)) { a = kit->access_resolve_for_write(a); b = kit->access_resolve_for_write(b); } @@ -801,7 +801,7 @@ untaken_branch = kit->gvn().transform(untaken_branch); assert(taken_memory == NULL && untaken_memory == NULL, "unexpected memory inputs"); - if (!UseShenandoahGC || !ShenandoahAcmpBarrier || ShenandoahVerifyOptoBarriers) { + if (!ShenandoahAcmpBarrier || ShenandoahVerifyOptoBarriers || ShenandoahWBAcmpBarrier) { return; } if (taken_branch->is_top() || untaken_branch->is_top()) { diff --git a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp @@ -328,6 +328,9 @@ diagnostic(bool, ShenandoahAcmpBarrier, true, \ "Turn on/off acmp barriers in Shenandoah") \ \ + diagnostic(bool, ShenandoahWBAcmpBarrier, false, \ + "Emit WB based acmp barrier, otherwise RB based acmp barrier") \ + \ diagnostic(bool, ShenandoahCloneBarrier, true, \ "Turn on/off clone barriers in Shenandoah") \ \