Integrated: 8253404: C2: assert(C->live_nodes() <= C->max_node_limit()) failed: Live Node limit exceeded limit

Roberto Castañeda Lozano github.com+8792647+robcasloz at openjdk.java.net
Thu Oct 8 12:34:47 UTC 2020


On Wed, 7 Oct 2020 11:41:20 GMT, Roberto Castañeda Lozano <github.com+8792647+robcasloz at openjdk.org> wrote:

> Record nodes as dead in `Node::destruct()` if their index cannot be directly reclaimed. This prevents the "Live Node
> limit exceeded limit" assertion failure by improving the accuracy of `Compile::live_nodes()` when "hook" nodes in
> `ConvI2LNode::Ideal()` are created and deleted non-consecutively.  This addition might result in multiple calls to
> `compile::record_dead_node()` for the same node (e.g. from `PhaseIdealLoop::spinup()`), but this is safe, as
> `compile::record_dead_node()` is idempotent.

This pull request has now been integrated.

Changeset: a191c586
Author:    Roberto Castañeda Lozano <roberto.castaneda.lozano at oracle.com>
Committer: Tobias Hartmann <thartmann at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/a191c586
Stats:     58 lines in 2 files changed: 57 ins; 1 del; 0 mod

8253404: C2: assert(C->live_nodes() <= C->max_node_limit()) failed: Live Node limit exceeded limit

Record nodes as dead in Node::destruct() if their index cannot be directly
reclaimed. This prevents the "Live Node limit exceeded limit" assertion failure
by improving the accuracy of Compile::live_nodes() when "hook" nodes in
ConvI2LNode::Ideal() are created and deleted non-consecutively.

This addition might result in multiple calls to compile::record_dead_node() for
the same node (e.g. from PhaseIdealLoop::spinup()), but this is safe, as
compile::record_dead_node() is idempotent.

Reviewed-by: neliasso, thartmann

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

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


More information about the hotspot-compiler-dev mailing list