RFR: JDK-8312617: SIGSEGV in ConnectionGraph::verify_ram_nodes
Vladimir Kozlov
kvn at openjdk.org
Wed Jul 26 23:49:51 UTC 2023
On Wed, 26 Jul 2023 22:26:05 GMT, Cesar Soares Lucas <cslucas at openjdk.org> wrote:
> - Return early from `verify_ram_nodes` if compilation is already failing.
> - Add back check for `failing()` after `eliminate_macro_nodes()`.
> - Print additional diagnostic information when an unexpected user of RAM is encountered.
>
> Tested with tier1-3 on Linux x64.
Use `_compile->do_reduce_allocation_merges()` instead of `ReduceAllocationMerges` in all places in `escape.cpp`. You removed one in `adjust_scalar_replaceable_state()`. I see an other at line 51 (`_nodes` field allocation) and at line 401 (where you don't need it - `reducible_merges.size() > 0` check is enough)
src/hotspot/share/opto/escape.cpp line 508:
> 506: // disabled.
> 507: // If EliminateAllocations is False, there is no point in reducing merges.
> 508: if (!ReduceAllocationMerges || !EliminateAllocations || !_compile->do_reduce_allocation_merges()) {
1. You don't need to check `ReduceAllocationMerges` because `do_reduce_allocation_merges` is set by its value.
2. Setting `do_reduce_allocation_merges` in `C2Compiler::compile_method()` should also check `EliminateAllocations` flag. Then you don't need to check this flag here.
src/hotspot/share/opto/escape.cpp line 742:
> 740:
> 741: // If already failing or RAM is disabled, just return.
> 742: if (C->failing() || !ReduceAllocationMerges) return;
1. move call to this `verify_ram_nodes()` method after `failed()` check in `compile.cpp` so you don need to check it here.
2. Check `_compile->do_reduce_allocation_merges()` instead of flag and move the check at the first line of this method.
-------------
PR Review: https://git.openjdk.org/jdk/pull/15048#pullrequestreview-1548757745
PR Review Comment: https://git.openjdk.org/jdk/pull/15048#discussion_r1275573945
PR Review Comment: https://git.openjdk.org/jdk/pull/15048#discussion_r1275576613
More information about the hotspot-compiler-dev
mailing list