-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
8320280: RISC-V: Avoid passing t0 as temp register to MacroAssembler::lightweight_lock/unlock #16703
Conversation
…:lightweight_lock/unlock
👋 Welcome back gcao! A progress list of the required criteria for merging this PR into |
Webrevs
|
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. Thanks for fixing this.
@zifeihan 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 29 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 (@RealFYang, @robehn) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
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.
Hi, thanks, looks good, but if 'temp'/'scratch' is not suppose to be t0, why not assert this in the 'callees' ?
E.g. in C2_MacroAssembler::fast_lock this assert:
assert_different_registers(oop, box, tmp, disp_hdr, t0); needs to updated with tmp3Reg.
Other 'callee' have no asserts.
@robehn Thanks for your review, I have updated several assertions for calls to MacroAssembler::lightweight_lock/unlock. |
Hi, thanks! Sorry with callee I meant all methods that have cmpxchg in them, such There also a special cmpxchg_obj_header which still uses t0. |
Hi @robehn, I am not sure if understand it correctly. Do you want me to revert my last comment and add |
If you don't mind, just add t0 in those asserts. The other asserts are also useful for the reader to what is expected without needing to trace down the entire call chain, so no need to revert anything. Yes, sure, sHould I or you create jira issue ? |
OK, I added t0 to the assert_different_registers list in MacroAssembler::lightweight_(un)lock. |
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, thanks!
@RealFYang @robehn Thanks all for the review. |
/sponsor |
Going to push as commit a6098e4.
Your commit was automatically rebased without conflicts. |
@RealFYang @zifeihan Pushed as commit a6098e4. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
This is inspired by https://bugs.openjdk.org/browse/JDK-8316880.
MacroAssembler::lightweight_lock/unlock is non-trivial on linux-riscv64 platform. Passing t0(aka x5) as temporary register to these two assember functions can also be error prone. As a reserved scratch register, t0 is implicitly clobberred by various assembler functions. This fixes the issue by finding and passing a different register, which is similar with https://bugs.openjdk.org/browse/JDK-8316880.
Testing:
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/16703/head:pull/16703
$ git checkout pull/16703
Update a local copy of the PR:
$ git checkout pull/16703
$ git pull https://git.openjdk.org/jdk.git pull/16703/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 16703
View PR using the GUI difftool:
$ git pr show -t 16703
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/16703.diff
Webrev
Link to Webrev Comment