RFR(S): 8237007: Shenandoah: assert(_base == Tuple) failure during C2 compilation

Roland Westrelin rwestrel at redhat.com
Mon Jan 13 10:20:30 UTC 2020


http://cr.openjdk.java.net/~roland/8237007/webrev.00/

The assert fails because C2 expands a barrier between a membar and its
control projection. That happens because the gc barrier is assigned the
membar as control by loop optimizations (and not its control
projection). The gc barrier has a load as input which itself depends on
the memory state produced by the membar so the barrier has to be below
the membar. The gc barrier has a CMove as use. That CMove has a control
input that's above the membar and because it's considered pinned by loop
opts, it's assigned earliest possible control: the membar. Considering
the CMove as pinned is overly conservative AFAICT. My fix consists in
excluding CMove nodes from being pinned.

Roland.



More information about the hotspot-compiler-dev mailing list