Skip to content

Commit c006e1d

Browse files
committed
FT_ATOMIC_STORE_CHAR_RELEASE -> FT_ATOMIC_STORE_CHAR_RELAXED
1 parent 267f995 commit c006e1d

File tree

6 files changed

+27
-34
lines changed

6 files changed

+27
-34
lines changed

Include/cpython/pyatomic.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,9 @@ static inline void
479479
_Py_atomic_store_ullong_relaxed(unsigned long long *obj,
480480
unsigned long long value);
481481

482+
static inline void
483+
_Py_atomic_store_char_relaxed(char *obj, char value);
484+
482485

483486
// --- _Py_atomic_load_ptr_acquire / _Py_atomic_store_ptr_release ------------
484487

@@ -502,9 +505,6 @@ _Py_atomic_store_ssize_release(Py_ssize_t *obj, Py_ssize_t value);
502505
static inline void
503506
_Py_atomic_store_int_release(int *obj, int value);
504507

505-
static inline void
506-
_Py_atomic_store_char_release(char *obj, char value);
507-
508508
static inline void
509509
_Py_atomic_store_uchar_release(unsigned char *obj, unsigned char value);
510510

Include/cpython/pyatomic_gcc.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,10 @@ _Py_atomic_store_ullong_relaxed(unsigned long long *obj,
517517
unsigned long long value)
518518
{ __atomic_store_n(obj, value, __ATOMIC_RELAXED); }
519519

520+
static inline void
521+
_Py_atomic_store_char_relaxed(char *obj, char value)
522+
{ __atomic_store_n(obj, value, __ATOMIC_RELEASE); }
523+
520524

521525
// --- _Py_atomic_load_ptr_acquire / _Py_atomic_store_ptr_release ------------
522526

@@ -540,10 +544,6 @@ static inline void
540544
_Py_atomic_store_int_release(int *obj, int value)
541545
{ __atomic_store_n(obj, value, __ATOMIC_RELEASE); }
542546

543-
static inline void
544-
_Py_atomic_store_char_release(char *obj, char value)
545-
{ __atomic_store_n(obj, value, __ATOMIC_RELEASE); }
546-
547547
static inline void
548548
_Py_atomic_store_uchar_release(unsigned char *obj, unsigned char value)
549549
{ __atomic_store_n(obj, value, __ATOMIC_RELEASE); }

Include/cpython/pyatomic_msc.h

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,12 @@ _Py_atomic_store_ullong_relaxed(unsigned long long *obj,
947947
*(volatile unsigned long long *)obj = value;
948948
}
949949

950+
static inline void
951+
_Py_atomic_store_char_relaxed(char *obj, char value)
952+
{
953+
*(volatile char *)obj = value;
954+
}
955+
950956

951957
// --- _Py_atomic_load_ptr_acquire / _Py_atomic_store_ptr_release ------------
952958

@@ -1012,19 +1018,6 @@ _Py_atomic_store_int_release(int *obj, int value)
10121018
#endif
10131019
}
10141020

1015-
static inline void
1016-
_Py_atomic_store_char_release(char *obj, char value)
1017-
{
1018-
#if defined(_M_X64) || defined(_M_IX86)
1019-
*(char volatile *)obj = value;
1020-
#elif defined(_M_ARM64)
1021-
_Py_atomic_ASSERT_ARG_TYPE(unsigned __int8);
1022-
__stlr8((unsigned __int8 volatile *)obj, (unsigned __int8)value);
1023-
#else
1024-
# error "no implementation of _Py_atomic_store_char_release"
1025-
#endif
1026-
}
1027-
10281021
static inline void
10291022
_Py_atomic_store_uchar_release(unsigned char *obj, unsigned char value)
10301023
{

Include/cpython/pyatomic_std.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -916,6 +916,14 @@ _Py_atomic_store_ullong_relaxed(unsigned long long *obj,
916916
memory_order_relaxed);
917917
}
918918

919+
static inline void
920+
_Py_atomic_store_char_relaxed(char *obj, char value)
921+
{
922+
_Py_USING_STD;
923+
atomic_store_explicit((_Atomic(char)*)obj, value,
924+
memory_order_relaxed);
925+
}
926+
919927

920928
// --- _Py_atomic_load_ptr_acquire / _Py_atomic_store_ptr_release ------------
921929

@@ -959,14 +967,6 @@ _Py_atomic_store_int_release(int *obj, int value)
959967
memory_order_release);
960968
}
961969

962-
static inline void
963-
_Py_atomic_store_char_release(char *obj, char value)
964-
{
965-
_Py_USING_STD;
966-
atomic_store_explicit((_Atomic(char)*)obj, value,
967-
memory_order_release);
968-
}
969-
970970
static inline void
971971
_Py_atomic_store_uchar_release(unsigned char *obj, unsigned char value)
972972
{

Include/internal/pycore_pyatomic_ft_wrappers.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ extern "C" {
6161
_Py_atomic_store_uint16_relaxed(&value, new_value)
6262
#define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) \
6363
_Py_atomic_store_uint32_relaxed(&value, new_value)
64-
#define FT_ATOMIC_STORE_CHAR_RELEASE(value, new_value) \
65-
_Py_atomic_store_char_release(&value, new_value)
64+
#define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) \
65+
_Py_atomic_store_char_relaxed(&value, new_value)
6666
#define FT_ATOMIC_LOAD_CHAR_RELAXED(value) \
6767
_Py_atomic_load_char_relaxed(&value)
6868
#define FT_ATOMIC_STORE_UCHAR_RELEASE(value, new_value) \

Python/structmember.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,16 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
171171
return -1;
172172
}
173173
if (v == Py_True)
174-
FT_ATOMIC_STORE_CHAR_RELEASE(*(char*)addr, 1);
174+
FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, 1);
175175
else
176-
FT_ATOMIC_STORE_CHAR_RELEASE(*(char*)addr, 0);
176+
FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, 0);
177177
break;
178178
}
179179
case Py_T_BYTE:{
180180
long long_val = PyLong_AsLong(v);
181181
if ((long_val == -1) && PyErr_Occurred())
182182
return -1;
183-
FT_ATOMIC_STORE_CHAR_RELEASE(*(char*)addr, (char)long_val);
183+
FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, (char)long_val);
184184
/* XXX: For compatibility, only warn about truncations
185185
for now. */
186186
if ((long_val > CHAR_MAX) || (long_val < CHAR_MIN))
@@ -320,7 +320,7 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
320320
PyErr_BadArgument();
321321
return -1;
322322
}
323-
FT_ATOMIC_STORE_CHAR_RELEASE(*(char*)addr, string[0]);
323+
FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, string[0]);
324324
break;
325325
}
326326
case Py_T_STRING:

0 commit comments

Comments
 (0)