@@ -1090,6 +1090,8 @@ _Py_atomic_load_ssize_acquire(const Py_ssize_t *obj)
10901090
10911091// --- _Py_atomic_memcpy / _Py_atomic_memmove ------------
10921092
1093+ #include <string.h>
1094+
10931095static inline void *
10941096_Py_atomic_memcpy_ptr_store_relaxed (void * dest , void * src , size_t n )
10951097{
@@ -1098,16 +1100,18 @@ _Py_atomic_memcpy_ptr_store_relaxed(void *dest, void *src, size_t n)
10981100 assert (((uintptr_t )src & (sizeof (void * ) - 1 )) == 0 );
10991101 assert (n % sizeof (void * ) == 0 );
11001102
1101- if (dest != src ) {
1102- void * * dest_ = (void * * )dest ;
1103- void * * src_ = (void * * )src ;
1104- void * * end = dest_ + n / sizeof (void * );
1103+ memcpy (dest , src , n );
1104+
1105+ // if (dest != src) {
1106+ // void **dest_ = (void **)dest;
1107+ // void **src_ = (void **)src;
1108+ // void **end = dest_ + n / sizeof(void *);
11051109
1106- for (; dest_ != end ; dest_ ++ , src_ ++ ) {
1107- atomic_store_explicit ((_Atomic (void * )* )dest_ , * src_ ,
1108- memory_order_relaxed );
1109- }
1110- }
1110+ // for (; dest_ != end; dest_++, src_++) {
1111+ // atomic_store_explicit((_Atomic(void*)*)dest_, *src_,
1112+ // memory_order_relaxed);
1113+ // }
1114+ // }
11111115
11121116 return dest ;
11131117}
@@ -1120,27 +1124,29 @@ _Py_atomic_memmove_ptr_store_relaxed(void *dest, void *src, size_t n)
11201124 assert (((uintptr_t )src & (sizeof (void * ) - 1 )) == 0 );
11211125 assert (n % sizeof (void * ) == 0 );
11221126
1123- if (dest < src || dest >= (void * )((char * )src + n )) {
1124- void * * dest_ = (void * * )dest ;
1125- void * * src_ = (void * * )src ;
1126- void * * end = dest_ + n / sizeof (void * );
1127-
1128- for (; dest_ != end ; dest_ ++ , src_ ++ ) {
1129- atomic_store_explicit ((_Atomic (void * )* )dest_ , * src_ ,
1130- memory_order_relaxed );
1131- }
1132- }
1133- else if (dest > src ) {
1134- n = n / sizeof (void * ) - 1 ;
1135- void * * dest_ = (void * * )dest + n ;
1136- void * * src_ = (void * * )src + n ;
1137- void * * end = (void * * )dest - 1 ;
1138-
1139- for (; dest_ != end ; dest_ -- , src_ -- ) {
1140- atomic_store_explicit ((_Atomic (void * )* )dest_ , * src_ ,
1141- memory_order_relaxed );
1142- }
1143- }
1127+ memmove (dest , src , n );
1128+
1129+ // if (dest < src || dest >= (void *)((char *)src + n)) {
1130+ // void **dest_ = (void **)dest;
1131+ // void **src_ = (void **)src;
1132+ // void **end = dest_ + n / sizeof(void *);
1133+
1134+ // for (; dest_ != end; dest_++, src_++) {
1135+ // atomic_store_explicit((_Atomic(void*)*)dest_, *src_,
1136+ // memory_order_relaxed);
1137+ // }
1138+ // }
1139+ // else if (dest > src) {
1140+ // n = n / sizeof(void *) - 1;
1141+ // void **dest_ = (void **)dest + n;
1142+ // void **src_ = (void **)src + n;
1143+ // void **end = (void **)dest - 1;
1144+
1145+ // for (; dest_ != end; dest_--, src_--) {
1146+ // atomic_store_explicit((_Atomic(void*)*)dest_, *src_,
1147+ // memory_order_relaxed);
1148+ // }
1149+ // }
11441150
11451151 return dest ;
11461152}
0 commit comments