RFR: 8255670: Improve C2's detection of modified nodes [v2]
Roland Westrelin
roland at openjdk.org
Wed Sep 21 07:19:54 UTC 2022
On Tue, 20 Sep 2022 06:44:42 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> Added `record_modified_node` to:
>>
>> Node::clone
>> Node::add_req
>> Node::add_req_batch
>> Node::ins_req
>> Node::add_prec
>> Node::rm_prec
>> Node::set_prec
>>
>>
>> Added `igvn->_worklist.push(node)` in various places that modified a `node` but did not add it to the igvn worklist.
>>
>> 7 times I had to push `Root`, 5 of these it was because of the creation of a `HaltNode`, which means we have a `root->add_req(halt)`.
>>
>> In one case we have a MergeMemStream node, which gets two MergeMem nodes as input, and streams over them.
>> Unfortunately, it modifies one of the two, which then can trigger our assertion code. I now push this node to the igvn worklist, but a better fix would be to make MergeMemStream leave the MergeMem nodes unmodified. I think that should be possible, filed an RFE [JDK-8293358](https://bugs.openjdk.org/browse/JDK-8293358)
>>
>> Other small refactorings (review suggestions):
>> - Refactored a few cases of `igvn.worklist.push` and `set_req` with `set_req_X`.
>> - Removed unecessary `igvn.worklist.push` before `replace_input_of`.
>> - Refactored some code with `delete_precedence_of`, `add_input_to` and `replace_input_of`.
>>
>> FYI:
>> What I am NOT doing here, and leave to a future RFE/independent change: investigate / implement these assertions for late/incremental inlining [JDK-8293362](https://bugs.openjdk.org/browse/JDK-8293362).
>>
>> Ran larger regression tests, and 7-9h of fuzzing on 3 platforms.
>
> Emanuel Peter has updated the pull request incrementally with three additional commits since the last revision:
>
> - cleanup of refactoring, one more small case refactored
> - expand refactoring a bit
> - refactoring: where I already had to add igvn.worklist.push
Looks good to me. Thanks for making the changes.
-------------
Marked as reviewed by roland (Reviewer).
PR: https://git.openjdk.org/jdk/pull/9439
More information about the hotspot-compiler-dev
mailing list