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