RFR: 8315916: assert(C->live_nodes() <= C->max_node_limit()) failed: Live Node limit exceeded [v4]
Christian Hagedorn
chagedorn at openjdk.org
Mon Nov 4 13:37:35 UTC 2024
On Thu, 24 Oct 2024 04:07:33 GMT, Dhamoder Nalla <dhanalla at openjdk.org> wrote:
>> src/hotspot/share/opto/macro.cpp line 821:
>>
>>> 819: // If scalarize operation is adding too many nodes, bail out
>>> 820: if (C->check_node_count(300, "out of nodes while scalarizing object")) {
>>> 821: return nullptr;
>>
>> Would a bailout from this scalarization be enough or do we really require to record the method as non-compilable (which is done with `check_node_count()`? In the latter case, we could also try something like "recompilation without EA" as done, for example, here (i.e. `retry_no_escape_analysis`):
>>
>> https://github.com/openjdk/jdk/blob/37cfaa8deb4cc15864bb6dc2c8a87fc97cff2f0d/src/hotspot/share/opto/escape.cpp#L3858-L3866
>>
>> I also suggest to use the `NodeLimitFudgeFactor` instead of `300` to have it controllable.
>
> Thank you for your suggestion @chhagedorn. I agree that 'recompilation without EA' makes more sense, and I have made the necessary changes.
Okay thanks for investigating again. A bailout makes sense for this edge case.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20504#discussion_r1827742596
More information about the hotspot-compiler-dev
mailing list