Integrated: 8260637: Shenandoah: assert(_base == Tuple) failure during C2 compilation

Roland Westrelin roland at openjdk.java.net
Tue Feb 23 16:37:41 UTC 2021


On Thu, 4 Feb 2021 08:34:04 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> Another shenandoah bug with a fix in shared code.
> 
> LRBRightAfterMemBar.test2() has 2 allocations that are non escaping
> but non scalarizable. As a result, the null check for a3.f is
> optimized out but the CastPP is left in the graph. That CastPP becomes
> control dependent on the o2 == null check which is later hoisted out
> of the loop. The CastPP is then right after the membar of the barrier = 0x42
> volatile access but with an out of loop control. Because the node is
> considered pinned by loopopts, it is assigned the membar as
> control. The input of the CastPP is a shenandoah barrier that's
> sandwiched between the membar and the CastPP and so expanded right
> after the membar (that is between the membar and its control
> projection). That causes the crash. I don't think cast nodes need to
> be pinned so I propose that as a fix.

This pull request has now been integrated.

Changeset: 8a2f5890
Author:    Roland Westrelin <roland at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/8a2f5890
Stats:     33 lines in 2 files changed: 27 ins; 0 del; 6 mod

8260637: Shenandoah: assert(_base == Tuple) failure during C2 compilation

Reviewed-by: chagedorn, kvn

-------------

PR: https://git.openjdk.java.net/jdk/pull/2400


More information about the hotspot-compiler-dev mailing list