8386676: [lworld] Infinite loop when pushing inline types down though phis during IGVN#2600
8386676: [lworld] Infinite loop when pushing inline types down though phis during IGVN#2600rwestrel wants to merge 7 commits into
Conversation
|
👋 Welcome back roland! A progress list of the required criteria for merging this PR into |
|
@rwestrel This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been no new commits pushed to the ➡️ To integrate this PR with the above commit message to the |
|
@rwestrel this pull request can not be integrated into git checkout JDK-8386676
git fetch https://git.openjdk.org/valhalla.git lworld
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge lworld"
git push |
|
/template append |
|
@rwestrel The pull request template has been appended to the pull request body |
Webrevs
|
| * @enablePreview | ||
| * @modules java.base/jdk.internal.value | ||
| * java.base/jdk.internal.vm.annotation | ||
| * @run main/othervm -XX:+StressIGVN -XX:CompileCommand=compileonly,${test.main.class}::test -Xbatch |
There was a problem hiding this comment.
I think this requires -XX:+UnlockDiagnosticVMOptions, right?
| * @run main/othervm -XX:+StressIGVN -XX:CompileCommand=compileonly,${test.main.class}::test -Xbatch | ||
| * -XX:-UseOnStackReplacement -XX:StressSeed=3696073068 -XX:CompileTaskTimeout=8000 ${test.main.class} | ||
| * @run main/othervm -XX:+StressIGVN -XX:CompileCommand=compileonly,${test.main.class}::test -Xbatch | ||
| * -XX:-UseOnStackReplacement -XX:CompileTaskTimeout=8000 ${test.main.class} |
There was a problem hiding this comment.
And CompileTaskTimeout is debug only.
|
@TobiHartmann thanks for having a look. Both should be fixed now. |
TobiHartmann
left a comment
There was a problem hiding this comment.
The fix looks good to me. I'll run testing and report back once it finished.
|
/contributor add @chhagedorn |
|
Thanks for the test case @chhagedorn |
|
@rwestrel |
|
Testing all passed. Ship it! |
|
@TobiHartmann thanks for the reviews and testing |
|
/integrate |
|
Going to push as commit dc8b7c5.
Your commit was automatically rebased without conflicts. |
We have the following subgraph
Phi61248 is transformed andPushInlineTypeDown::do_transformruns.A new value type is created:
First input of
Phi61248 is processed:The second input of the
Phi61248,Phi61253, is processed whichcauses a recursive call to
PushInlineTypeDown::do_transform. A valuetype is created:
In the uses of
Phi61253,Phi61253 is replaced byInlineType61263.
One such as use is
Phi61259. As a consequence, the value type of thecaller of this
PushInlineTypeDown::do_transformis modified:PushInlineTypeDown::do_transformforPhi61253 runs to completion:PushInlineTypeDown::do_transformforPhi61248 runs to completion:Which is a shape identical to what
PushInlineTypeDown::do_transformstarted from. Transformation then happens with
Phi61259 whichproduces the same shape etc.
Things go wrong, I think, because of this code in
PushInlineTypeDown::do_transform:because it changes an already processed input of a
Phiand adds anInlineTypewhere there was none. From the comment, the goal is tohandle cases where we run into that same
PhiwhenPushInlineTypeDown::do_transformcontinues execution and not createa new
InlineTypenode. To do that, I propose recording thatvtiscreated for
phirather than changing the graph.Progress
Issue
Reviewers
Contributors
<chagedorn@openjdk.org>Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/valhalla.git pull/2600/head:pull/2600$ git checkout pull/2600Update a local copy of the PR:
$ git checkout pull/2600$ git pull https://git.openjdk.org/valhalla.git pull/2600/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 2600View PR using the GUI difftool:
$ git pr show -t 2600Using diff file
Download this PR as a diff file:
https://git.openjdk.org/valhalla/pull/2600.diff
Using Webrev
Link to Webrev Comment