-
Notifications
You must be signed in to change notification settings - Fork 737
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JProfiling fix to avoid too many internal pointers #21056
Conversation
3b587c8
to
2923d12
Compare
@r30shah your review would be appreciated |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes looks good to me.
Jenkins test sanity.functional,sanity.openjdk xlinux,plinux,zlinux,alinux jdk21 |
i ran this change with a testcase that was hitting the internal pointer limit and found that it resolved the problem. |
Jprofiling adds control flow to the IL as part of the lowering of the calls to profile values. This control flow splits blocks, and in the process creates temps for values commoned across the split point. If there are enough internal pointers commoned in the method, the lower may end up creating more than the max number of internal pointers allowed, thus causing the compile to fail. This commit keeps track of how many internal pointers are created and avoids lowering any more calls once we have reached a certain threshold. Also added an env var to control this threshold for experimenting in the future. Signed-off-by: Vijay Sundaresan <[email protected]>
2923d12
to
17da4d5
Compare
Here is the link of the PR build : https://openj9-jenkins.osuosl.org/job/PullRequest-OpenJ9/6901/ Looking at the failures,
Apart from those, I see As change is making JProfilingValue optimization more conservative in bailing out the lowering the JProfilingValue calls when it hits the limit, it is highly unlikely to cause the above issue. For sanity I am going to launch another grinder with sanity.functional on x86 and LoZ before merging. |
Jenkins test sanity.functional xlinux,zlinux jdk21 |
Failing test on s390b and x86 [1] linux are related to JIT server and seen on other builds as well : #21066. Relaunching the test to get clean one |
Jenkins test sanity.functional xlinux jdk21 |
sanity build for xlinux passes and zlinux failure was related to #21066 and other known issues which is not caused by changes in this PR. Merging the change based on amount of testing done. |
Jprofiling adds control flow to the IL as part of the lowering of the calls to profile values. This control flow splits blocks, and in the process creates temps for values commoned across the split point. If there are enough internal pointers commoned in the method, the lower may end up creating more than the max number of internal pointers allowed, thus causing the compile to fail. This commit keeps track of how many internal pointers are created and avoids lowering any more calls once we have reached a certain threshold. Also added an env var to control this threshold for experimenting in the future.