RFR: 8227369: pd_disjoint_words_atomic() needs to be atomic

David Holmes dholmes at openjdk.java.net
Wed Feb 23 05:13:51 UTC 2022


On Wed, 23 Feb 2022 04:42:33 GMT, Mikael Vidstedt <mikael at openjdk.org> wrote:

>> Replace the common "atomic" switch+loop code chunks in the pd code with a shared version that uses Atomic::load/store.
>> 
>> See details in the bug report that show how current code is actually replaced by `memcpy` (in some places at least) whereas the new code is not.
>> 
>> Platforms affected:
>>  - all x86
>>  - Zero
>>  - Windows Aarch64
>>  - PPC
>> 
>> Testing: tiers 1-3
>> Additional builds: tiers 4 and 5
>>  - builds covered: x86 and Zero
>> 
>> GHA
>> - builds covered:  Windows-Aarch64
>> 
>> The only build affected and not tested is PPC. It would be great if someone could take this for a spin on PPC.
>> 
>> For platforms not affected by this change, i.e. those that already specialise the code, I make not claims regarding the atomicity or otherwise of those specialized versions. That would be for someone interested in those specific platforms to check out.
>> 
>> Thanks,
>> David
>
> src/hotspot/share/utilities/copy.hpp line 302:
> 
>> 300: 
>> 301:  protected:
>> 302:   inline static void _shared_disjoint_words_atomic(const HeapWord* from,
> 
> How about dropping the leading underscore prefix?

Yep will do. Was originally intended (similar to other pd code) to indicate this was a private/internal API, but the protected status achieves the same thing. Thanks for looking at it and the help with the disassembly analysis. :)

-------------

PR: https://git.openjdk.java.net/jdk/pull/7567


More information about the hotspot-dev mailing list