Skip to content

Commit b7a06be

Browse files
committed
8252990: Intrinsify Unsafe.storeStoreFence
Reviewed-by: dholmes, thartmann, whuang
1 parent 92be9d8 commit b7a06be

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
@@ -8547,6 +8547,7 @@ instruct membar_release() %{
85478547

85488548
instruct membar_storestore() %{
85498549
match(MemBarStoreStore);
8550+
match(StoreStoreFence);
85508551
ins_cost(VOLATILE_REF_COST);
85518552

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

src/hotspot/cpu/arm/arm.ad

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4517,6 +4517,7 @@ instruct storeF( memoryF mem, regF src) %{
45174517
// pattern-match out unnecessary membars
45184518
instruct membar_storestore() %{
45194519
match(MemBarStoreStore);
4520+
match(StoreStoreFence);
45204521
ins_cost(4*MEMORY_REF_COST);
45214522

45224523
size(4);

src/hotspot/cpu/ppc/ppc.ad

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

71547154
instruct membar_storestore() %{
71557155
match(MemBarStoreStore);
7156+
match(StoreStoreFence);
71567157
ins_cost(4*MEMORY_REF_COST);
71577158

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

src/hotspot/cpu/s390/s390.ad

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

50565056
instruct membar_storestore() %{
50575057
match(MemBarStoreStore);
5058+
match(StoreStoreFence);
50585059
ins_cost(0);
50595060
size(0);
50605061
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
@@ -6659,6 +6659,7 @@ instruct unnecessary_membar_volatile() %{
66596659

66606660
instruct membar_storestore() %{
66616661
match(MemBarStoreStore);
6662+
match(StoreStoreFence);
66626663
ins_cost(0);
66636664

66646665
size(0);

src/hotspot/cpu/x86/x86_64.ad

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

67886788
instruct membar_storestore() %{
67896789
match(MemBarStoreStore);
6790+
match(StoreStoreFence);
67906791
ins_cost(0);
67916792

67926793
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
@@ -2984,6 +2984,9 @@ void LIRGenerator::do_Intrinsic(Intrinsic* x) {
29842984
case vmIntrinsics::_storeFence:
29852985
__ membar_release();
29862986
break;
2987+
case vmIntrinsics::_storeStoreFence:
2988+
__ membar_storestore();
2989+
break;
29872990
case vmIntrinsics::_fullFence :
29882991
__ membar();
29892992
break;

src/hotspot/share/classfile/vmIntrinsics.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,9 @@ class methodHandle;
523523
do_intrinsic(_storeFence, jdk_internal_misc_Unsafe, storeFence_name, storeFence_signature, F_RN) \
524524
do_name( storeFence_name, "storeFence") \
525525
do_alias( storeFence_signature, void_method_signature) \
526+
do_intrinsic(_storeStoreFence, jdk_internal_misc_Unsafe, storeStoreFence_name, storeStoreFence_signature, F_R) \
527+
do_name( storeStoreFence_name, "storeStoreFence") \
528+
do_alias( storeStoreFence_signature, void_method_signature) \
526529
do_intrinsic(_fullFence, jdk_internal_misc_Unsafe, fullFence_name, fullFence_signature, F_RN) \
527530
do_name( fullFence_name, "fullFence") \
528531
do_alias( fullFence_signature, void_method_signature) \

0 commit comments

Comments
 (0)