RFR: 8319799: Recursive lightweight locking: x86 implementation [v14]
Axel Boldt-Christmas
aboldtch at openjdk.org
Mon Jan 29 14:16:51 UTC 2024
On Fri, 26 Jan 2024 18:08:33 GMT, Daniel D. Daugherty <dcubed at openjdk.org> wrote:
>> Axel Boldt-Christmas has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 21 additional commits since the last revision:
>>
>> - Merge remote-tracking branch 'upstream_jdk/pr/16606' into JDK-8319799
>> - Update variable names in ad files
>> - Preload markWord unconditionally
>> - Merge remote-tracking branch 'upstream_jdk/pr/16606' into JDK-8319799
>> - Add more expressive stub continuation names
>> - Remove outdated anonymous owner fix in stub
>> - Merge remote-tracking branch 'upstream_jdk/pr/16606' into JDK-8319799
>> - Remove C2HandleAnonOMOwnerStub definitions on x86.
>> - Add MFENCE comment
>> - Merge remote-tracking branch 'upstream_jdk/pr/16606' into JDK-8319799
>> - ... and 11 more: https://git.openjdk.org/jdk/compare/f944f1ec...4d37c4b7
>
> src/hotspot/cpu/x86/c2_CodeStubs_x86.cpp line 141:
>
>> 139:
>> 140: __ bind(fix_zf_and_unlocked);
>> 141: __ xorl(rax, rax);
>
> Just curious: why use `xorl` here and `xorptr` on L135 above?
Legacy. `xorl` is what `fast_unlock` used to set the zero flag. `xorl` is there only to set the zero flag. `xorptr` is there to store `nullptr` in `rax` (the expected value for the CAS). Maybe it doesn't matter if x64 used `xorq` to set the zero flag. There are many other ways to do it as well. `fast_unlock` also use `testl` with a 0 immediate in one place.
If there is a recommended way to set the zero flag we can change it to that. I could not find a definitive answer to what is best to use.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16607#discussion_r1469652978
More information about the hotspot-dev
mailing list