Integrated: 8347997: assert(false) failed: EA: missing memory path

Vladimir Kozlov kvn at openjdk.org
Wed Jan 29 17:26:54 UTC 2025


On Fri, 24 Jan 2025 00:07:43 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

> C2's Escape Analysis does not recognize pattern where one input of memory `Phi` node is `MergeMem` node and an other is RAW store. This pattern is created by Continuation pinning intrinsic. As result EA complains about strange memory graph.
> 
> I suggest to add second `MergeMem` between Store and Phi nodes by calling `reset_memory()`. EA recognize such patter and removes allocations.
> 
> I checked generated assembler pinning code and it is the same as before. The only difference in the test is eliminated allocations.
> 
> I moved Uncommon code up to avoid resetting memory - it is already done at the beginning of this intrinsic code.
> 
> We should not use `uncommon_trap_exact()` for `Deoptimization::Action_none` - It is used for other actions to prevent changing them to `Action_none`.
> 
> Tested tier1-5, hs-xcomp, hs-comp-stress
> Added new regression test based on reproducer from bug report.

This pull request has now been integrated.

Changeset: 6b581d22
Author:    Vladimir Kozlov <kvn at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/6b581d22e13599b16b38aff1ca5a795c6a910d30
Stats:     106 lines in 2 files changed: 91 ins; 13 del; 2 mod

8347997: assert(false) failed: EA: missing memory path

Reviewed-by: thartmann, chagedorn

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

PR: https://git.openjdk.org/jdk/pull/23284


More information about the hotspot-compiler-dev mailing list