RFR: 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
Wed Oct 7 13:42:18 UTC 2020


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.

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

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

Changes: https://git.openjdk.java.net/jdk/pull/540/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=540&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8253404
  Stats: 58 lines in 2 files changed: 57 ins; 1 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/540.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/540/head:pull/540

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


More information about the hotspot-compiler-dev mailing list