RFR: 8282590: C2: assert(addp->is_AddP() && addp->outcnt() > 0) failed: Don't process dead nodes
Emanuel Peter
duke at openjdk.java.net
Mon Mar 7 15:13:31 UTC 2022
Problem:
Sometimes nodes are generated, and then not properly added to any other node, nor added to the worklist, so that it could be deleted. In some cases, a node can thus survive after IGVN and enter into `ConnectionGraph::compute_escape`, where no dead nodes are expected (except constants).
In `ArrayCopyNode::prepare_array_copy`:
In one, I now add the new ConvI2LNode to the worklist if we are aborting.
In the other case, I could safely reorder the code, such new ConvI2LNode would only be generated once we know we are not going to abort.
In `SubTypeCheckNode::Ideal`:
Replaced `set_req` with `set_req_X`, such that the input-node that is replaced (which is now potentially a dead node) is put on the worklist.
Running running...
-------------
Commit messages:
- removing zombie catcher
- Revert "another assert, probably want to fix it or remove it eventually"
- Revert "adding another sanity check"
- adding another sanity check
- another assert, probably want to fix it or remove it eventually
- fix another case where we may have left dead nodes behind
- 8282590: C2: assert(addp->is_AddP() && addp->outcnt() > 0) failed: Don't process dead nodes
Changes: https://git.openjdk.java.net/jdk/pull/7728/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7728&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8282590
Stats: 20 lines in 2 files changed: 15 ins; 3 del; 2 mod
Patch: https://git.openjdk.java.net/jdk/pull/7728.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7728/head:pull/7728
PR: https://git.openjdk.java.net/jdk/pull/7728
More information about the hotspot-compiler-dev
mailing list