RFR: Handle missing ShenandoahWriteBarrierRB case

Roman Kennke rkennke at redhat.com
Thu Jul 26 10:00:42 UTC 2018


Am 26.07.2018 um 11:45 schrieb Aleksey Shipilev:
> Performance experiments with WB slowpath need this missing case:
> 
> diff -r db10dfda040d src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
> --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp  Wed Jul 25 09:53:22 2018 -0400
> +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp  Thu Jul 26 11:38:20 2018 +0200
> @@ -2820,12 +2820,18 @@
>                                                          Node* raw_mem_phi, Node* unc_region, int
> alias, Unique_Node_List& uses,
>                                                          PhaseIdealLoop* phase) {
>    evacuation_in_progress_null_check(c, val, evacuation_iff, unc, unc_ctrl, unc_region, uses, phase);
> 
>    IdealLoopTree *loop = phase->get_loop(c);
> -  Node* rbtrue = new ShenandoahReadBarrierNode(c, wb_mem, val);
> -  phase->register_new_node(rbtrue, c);
> +
> +  Node* rbtrue;
> +  if (ShenandoahWriteBarrierRB) {
> +    rbtrue = new ShenandoahReadBarrierNode(c, wb_mem, val);
> +    phase->register_new_node(rbtrue, c);
> +  } else {
> +    rbtrue = val;
> +  }
> 
>    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; tier3_gc_shenandoah
> 
> Thanks,
> -Aleksey
> 

Yes, good. (If it passes tests... C2 can be funny)

Roman



More information about the shenandoah-dev mailing list