-
Notifications
You must be signed in to change notification settings - Fork 722
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
Add and use a list of methods that can skip null value store check #18464
Add and use a list of methods that can skip null value store check #18464
Conversation
79f3f82
to
e4965d2
Compare
@hzongaro Removed |
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.
I still have to do a detailed review of the new list of recognized methods, but I wanted to provide some initial feedback.
Beside the minor suggestion for Value Propagation, it occurs to me that in storeArrayElement
in Walker.cpp
, it should be possible to avoid generating a reference to the storeFlattenableArrayElementNonHelper
if non-nullable array element flattening is not enabled and IL is being generated for a safeToSkipNonNullableArrayNullStoreCheck
method.
Finally, your change doesn't only add the list of methods. I would suggest that you mention in the commit and pull request description that it includes changes to Value Propagation (and maybe IL generation) to take advantage of the list of methods for which it is safe to skip the nonNullableArrayNullStoreCheck.
e4965d2
to
84b8f38
Compare
Great point! All above comments are addressed in 84b8f38. Ready for another review. Thank you! |
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.
Thanks for implementing this. I'm going to add a reference to this pull request in issue #17516, as its touches on some of the same problems with references to methods that no longer exist or methods that don't actually have array element stores that are already included in canSkipArrayStoreChecks
.
- Add a list recognized methods in j9method that can skip null check on the value stored to array elements. - ILGen: If array flattening is disabled and `skipNonNullableArrayNullStoreCheck` is true, avoid generating array element store non-helper calls. - VP: Avoid generating the `nonNullableArrayNullStoreCheck` if `skipNonNullableArrayNullStoreCheck` is true when transforming array element store non-helper calls. Signed-off-by: Annabelle Huo <[email protected]>
84b8f38
to
066df6b
Compare
@hzongaro All comments are addressed. Ready for another review. Thanks! |
Thinking about the discussion around As things stand, I think Thoughts? If you agree, then perhaps that could be handled as a follow-on pull request. |
That's a great idea! If I understand it correctly, we could have another list of recognized methods that can skip generating the non helpers for flattenable arrays in ILGen, such as |
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.
Thanks for the updates! Looks good.
May I ask you to open a follow-on issue as a reminder that we will have to deal with the various T[] xxx.toArray(T[])
methods?
Jenkins test sanity xlinuxval,xlinuxvalst jdknext |
#18576 is created to track this work item |
I forgot that I shouldn't be using xlinux for PR testing. Jenkins test sanity alinuxval,alinuxvalst jdknext |
Actually it might be working again soon. Plus a little bit of testing is fine, it's when there is too much that jenkins can restart or tests can time out. Adoptium have almost fixed the problem of downloading 100MB+ of data for every test run. There was one problem this morning with a PR open to fix it, still pending merge atm. |
Your xlinux testing did run. Starting a new PR build doesn't cancel any old builds. |
Right, but it had failed with some unexpected errors that were likely unrelated to this PR. When I went to rerun, I realized I ought not rerun on xlinux. |
This shouldn't affect anything with value types support disabled, but just in case: Jenkins test sanity all jdk17 |
|
Now that Pull request #18584 has been merged, Valhalla standard testing should be more successful Jenkins test sanity alinuxvalst jdknext |
The "access" shared library load error in Valhalla standard build should be fixed by: ibmruntimes/openj9-openjdk-jdk.valuetypes@89c45d9. I see @JasonFengJ9 pushed the fix in 2 hours ago. |
Yeah, I am running a verification build https://openj9-jenkins.osuosl.org/job/Build_JDKnext_x86-64_windows_vt_standard_Personal/5/console which is waiting for a machine. |
Jenkins test sanity alinuxvalst jdknext |
Failure in aarch64 Linux vt_standard testing appears to be due to issue #17844. Merging. |
check on the value stored to array elements.
skipNonNullableArrayNullStoreCheck
is true, avoid generatingarray element store non-helper calls.
nonNullableArrayNullStoreCheck
ifskipNonNullableArrayNullStoreCheck
is true whentransforming array element store non-helper calls.
This change depends on