Skip to content

Commit e6e6bed

Browse files
committed
8252990: Intrinsify Unsafe.storeStoreFence
Backport-of: b7a06be98d3057dac4adbb7f4071ac62cf88fe52
1 parent 24e91c1 commit e6e6bed

File tree

16 files changed

+33
-6
lines changed

16 files changed

+33
-6
lines changed

src/hotspot/cpu/aarch64/aarch64.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8646,6 +8646,7 @@ instruct membar_release() %{
86468646

86478647
instruct membar_storestore() %{
86488648
match(MemBarStoreStore);
8649+
match(StoreStoreFence);
86498650
ins_cost(VOLATILE_REF_COST);
86508651

86518652
format %{ "MEMBAR-store-store" %}

src/hotspot/cpu/arm/arm.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4511,6 +4511,7 @@ instruct storeF( memoryF mem, regF src) %{
45114511
// pattern-match out unnecessary membars
45124512
instruct membar_storestore() %{
45134513
match(MemBarStoreStore);
4514+
match(StoreStoreFence);
45144515
ins_cost(4*MEMORY_REF_COST);
45154516

45164517
size(4);

src/hotspot/cpu/ppc/ppc.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7152,6 +7152,7 @@ instruct membar_release() %{
71527152

71537153
instruct membar_storestore() %{
71547154
match(MemBarStoreStore);
7155+
match(StoreStoreFence);
71557156
ins_cost(4*MEMORY_REF_COST);
71567157

71577158
format %{ "MEMBAR-store-store" %}

src/hotspot/cpu/s390/s390.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5048,6 +5048,7 @@ instruct membar_CPUOrder() %{
50485048

50495049
instruct membar_storestore() %{
50505050
match(MemBarStoreStore);
5051+
match(StoreStoreFence);
50515052
ins_cost(0);
50525053
size(0);
50535054
format %{ "MEMBAR-storestore (empty)" %}

src/hotspot/cpu/x86/x86_32.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6646,6 +6646,7 @@ instruct unnecessary_membar_volatile() %{
66466646

66476647
instruct membar_storestore() %{
66486648
match(MemBarStoreStore);
6649+
match(StoreStoreFence);
66496650
ins_cost(0);
66506651

66516652
size(0);

src/hotspot/cpu/x86/x86_64.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6765,6 +6765,7 @@ instruct unnecessary_membar_volatile()
67656765

67666766
instruct membar_storestore() %{
67676767
match(MemBarStoreStore);
6768+
match(StoreStoreFence);
67686769
ins_cost(0);
67696770

67706771
size(0);

src/hotspot/share/adlc/formssel.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4117,6 +4117,7 @@ bool MatchRule::is_ideal_membar() const {
41174117
!strcmp(_opType,"MemBarReleaseLock") ||
41184118
!strcmp(_opType,"LoadFence" ) ||
41194119
!strcmp(_opType,"StoreFence") ||
4120+
!strcmp(_opType,"StoreStoreFence") ||
41204121
!strcmp(_opType,"MemBarVolatile") ||
41214122
!strcmp(_opType,"MemBarCPUOrder") ||
41224123
!strcmp(_opType,"MemBarStoreStore") ||

src/hotspot/share/c1/c1_Compiler.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ bool Compiler::is_intrinsic_supported(const methodHandle& method) {
142142
// since GC can change its value.
143143
case vmIntrinsics::_loadFence:
144144
case vmIntrinsics::_storeFence:
145+
case vmIntrinsics::_storeStoreFence:
145146
case vmIntrinsics::_fullFence:
146147
case vmIntrinsics::_floatToRawIntBits:
147148
case vmIntrinsics::_intBitsToFloat:

src/hotspot/share/c1/c1_LIRGenerator.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3149,6 +3149,9 @@ void LIRGenerator::do_Intrinsic(Intrinsic* x) {
31493149
case vmIntrinsics::_storeFence:
31503150
__ membar_release();
31513151
break;
3152+
case vmIntrinsics::_storeStoreFence:
3153+
__ membar_storestore();
3154+
break;
31523155
case vmIntrinsics::_fullFence :
31533156
__ membar();
31543157
break;

src/hotspot/share/classfile/vmIntrinsics.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,9 @@ class methodHandle;
520520
do_intrinsic(_storeFence, jdk_internal_misc_Unsafe, storeFence_name, storeFence_signature, F_RN) \
521521
do_name( storeFence_name, "storeFence") \
522522
do_alias( storeFence_signature, void_method_signature) \
523+
do_intrinsic(_storeStoreFence, jdk_internal_misc_Unsafe, storeStoreFence_name, storeStoreFence_signature, F_R) \
524+
do_name( storeStoreFence_name, "storeStoreFence") \
525+
do_alias( storeStoreFence_signature, void_method_signature) \
523526
do_intrinsic(_fullFence, jdk_internal_misc_Unsafe, fullFence_name, fullFence_signature, F_RN) \
524527
do_name( fullFence_name, "fullFence") \
525528
do_alias( fullFence_signature, void_method_signature) \

0 commit comments

Comments
 (0)