-
Notifications
You must be signed in to change notification settings - Fork 5.7k
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
JDK-8310020: MacroAssembler::call_VM(_leaf) doesn't consistently check for conflict with C calling convention. #14470
Conversation
…for conflict with C calling convention.
👋 Welcome back dafedafe! A progress list of the required criteria for merging this PR into |
Webrevs
|
Co-authored-by: Tobias Hartmann <tobias.hartmann@oracle.com>
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.
Looks good to me.
@dafedafe 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 64 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@TobiHartmann, @RealFYang, @TheRealMDoerr, @offamitkumar) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
Hello, I can help do some tests on linux-riscv64 platform.
|
Thanks @RealFYang, I missed it! It should be fixed now. |
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.
Updated change LGTM. I can do native fastdebug build with this and run non-trivial benchmark workloads on linux-riscv64 platform. Thanks.
This PR includes changes for ppc and s390 that I couldn't test either. |
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 cleaning this up! PPC64 part is good.
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.
LGTM, Test result also came clean. A few other assert-occurrence could be updated but I guess those are out of scope for this PR.
Thank you very much for the change :-)
@TobiHartmann @offamitkumar @TheRealMDoerr @RealFYang thank you very much for your reviews! |
/integrate |
/sponsor |
Going to push as commit 0878872.
Your commit was automatically rebased without conflicts. |
@offamitkumar @dafedafe Pushed as commit 0878872. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Issue
The
MacroAssembler::call_VM
andMacroAssembler::call_VM_leaf
methods don't include asserts to check if the passed arguments collide with the C calling convention registers consistently. Some versions omit them completely (e.g. aarch64MacroAssembler::call_VM_leaf
), other ones use regular asserts (where theassert_different_registers
function should be used).Solution
We use
assert_different_registers
across allMacroAssembler::call_VM
andMacroAssembler::call_VM_leaf
where a check is needed (except for the arm implementation, which doesn't change as it uses fixed registers).Testing
This fix includes changes for x86_32/64 and aarch64, which I could test thoroughly but also for ppc, riscv, and s390 for which I would need some help with testing.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/14470/head:pull/14470
$ git checkout pull/14470
Update a local copy of the PR:
$ git checkout pull/14470
$ git pull https://git.openjdk.org/jdk.git pull/14470/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 14470
View PR using the GUI difftool:
$ git pr show -t 14470
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/14470.diff
Webrev
Link to Webrev Comment