RFR: Backport reshaped write barrier expansion to JDK11

Roman Kennke rkennke at redhat.com
Thu Dec 13 10:31:45 UTC 2018


Ah right, thanks for pointing out. I'll 'backport' the ideal fluff later
in a separate patch.

I'll hold this back until we tagged the tree for RPMs.

Roman


> 
>> http://cr.openjdk.java.net/~rkennke/shjdk11-wb-expansion/webrev.00/
> 
> Code you remove from ifnode.cpp is now done in
> ShenandoahBarrierSetC2::ideal_node():
> 
>   } else if (can_reshape &&
>              n->Opcode() == Op_If &&
>              ShenandoahWriteBarrierNode::is_heap_stable_test(n) &&
>              n->in(0) != NULL) {
>     Node* dom = n->in(0);
>     Node* prev_dom = n;
>     int op = n->Opcode();
>     int dist = 16;
>     // Search up the dominator tree for another heap stable test
>     while (dom->Opcode() != op    ||  // Not same opcode?
>            !ShenandoahWriteBarrierNode::is_heap_stable_test(dom) ||  // Not same input 1?
>            prev_dom->in(0) != dom) {  // One path of test does not dominate?
>       if (dist < 0) return NULL;
> 
>       dist--;
>       prev_dom = dom;
>       dom = IfNode::up_one_dom(dom);
>       if (!dom) return NULL;
>     }
> 
>     // Check that we did not follow a loop back to ourselves
>     if (n == dom) {
>       return NULL;
>     }
> 
>     return n->as_If()->dominated_by(prev_dom, phase->is_IterGVN());
>   }
> 
> The rest looks ok AFAICT.
> 
> Roland.
> 



More information about the shenandoah-dev mailing list