RFR: 8332670: C1 clone intrinsic needs memory barriers [v2]

Andrew Haley aph at openjdk.org
Thu Jun 6 12:31:44 UTC 2024


On Wed, 5 Jun 2024 15:40:16 GMT, Galder Zamarreño <galder at openjdk.org> wrote:

>> Adds a storestore barrier after copying the contents in the primitive array intrinsic (credit @shipilev). The barrier is a no-op in platforms where not needed so no need for an ifdef.
>> 
>> The barrier after new array creation is only added if zeroing the array on aarch64 (credit @dean-long). Since the primitive array clone intrinsic does not zero the array, that means there's a single barrier added for this use case.
>> 
>> There's no barrier added on x86 c1 macro assembler for nothing to do there. 
>> 
>> I've run the following tests:
>> * tier 1 on darwin/aarch64
>> * tier 1 on linux/x86_64
>> * `hotspot_compiler` tests on darwin/aarch64
>> * `copy.clone.arrays` jcstress tests on darwin/aarch64.
>> 
>> I tried but was unable to create a standalone test for the jdk source tree that would fail.
>> 
>> FYI @bulasevich @TheRealMDoerr @RealFYang @RealLucy similar platform specific c1 macro assembler changes might be required for other platforms.
>
> Galder Zamarreño has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Keep storestore barrier for array allocation
>   
>   * Having c1 array clone use 2 storestore barriers
>   has no performance impact, so it's safer to keep it in place.

Marked as reviewed by aph (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/19538#pullrequestreview-2101810432


More information about the hotspot-compiler-dev mailing list