Skip to content

Commit c8fb961

Browse files
committed
explicitly include string.h for test
1 parent 839f772 commit c8fb961

File tree

2 files changed

+59
-55
lines changed

2 files changed

+59
-55
lines changed

Include/cpython/pyatomic.h

Lines changed: 57 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@
8787
# error "this header file must not be included directly"
8888
#endif
8989

90+
#include <string.h>
91+
9092
// --- _Py_atomic_add --------------------------------------------------------
9193
// Atomically adds `value` to `obj` and returns the previous value
9294

@@ -545,6 +547,61 @@ static inline Py_ssize_t
545547
_Py_atomic_load_ssize_acquire(const Py_ssize_t *obj);
546548

547549

550+
// --- _Py_atomic_memcpy / _Py_atomic_memmove ------------
551+
552+
static inline void *
553+
_Py_atomic_memcpy_ptr_store_relaxed(void *dest, void *src, size_t n)
554+
{
555+
return memcpy(dest, src, n);
556+
// assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
557+
// assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
558+
// assert(n % sizeof(void *) == 0);
559+
560+
// if (dest != src) {
561+
// void **dest_ = (void **)dest;
562+
// void **src_ = (void **)src;
563+
// void **end = dest_ + n / sizeof(void *);
564+
565+
// for (; dest_ != end; dest_++, src_++) {
566+
// _Py_atomic_store_ptr_relaxed(dest_, *src_);
567+
// }
568+
// }
569+
570+
// return dest;
571+
}
572+
573+
static inline void *
574+
_Py_atomic_memmove_ptr_store_relaxed(void *dest, void *src, size_t n)
575+
{
576+
return memmove(dest, src, n);
577+
// assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
578+
// assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
579+
// assert(n % sizeof(void *) == 0);
580+
581+
// if (dest < src || dest >= (void *)((char *)src + n)) {
582+
// void **dest_ = (void **)dest;
583+
// void **src_ = (void **)src;
584+
// void **end = dest_ + n / sizeof(void *);
585+
586+
// for (; dest_ != end; dest_++, src_++) {
587+
// _Py_atomic_store_ptr_relaxed(dest_, *src_);
588+
// }
589+
// }
590+
// else if (dest > src) {
591+
// n = n / sizeof(void *) - 1;
592+
// void **dest_ = (void **)dest + n;
593+
// void **src_ = (void **)src + n;
594+
// void **end = (void **)dest - 1;
595+
596+
// for (; dest_ != end; dest_--, src_--) {
597+
// _Py_atomic_store_ptr_relaxed(dest_, *src_);
598+
// }
599+
// }
600+
601+
// return dest;
602+
}
603+
604+
548605

549606

550607
// --- _Py_atomic_fence ------------------------------------------------------
@@ -612,56 +669,3 @@ static inline void _Py_atomic_fence_release(void);
612669
#else
613670
# error "long must be 4 or 8 bytes in size"
614671
#endif // SIZEOF_LONG
615-
616-
617-
// --- _Py_atomic_memcpy / _Py_atomic_memmove ------------
618-
619-
static inline void *
620-
_Py_atomic_memcpy_ptr_store_relaxed(void *dest, void *src, Py_ssize_t n)
621-
{
622-
assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
623-
assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
624-
assert(n % sizeof(void *) == 0);
625-
626-
if (dest != src) {
627-
void **dest_ = (void **)dest;
628-
void **src_ = (void **)src;
629-
void **end = dest_ + n / sizeof(void *);
630-
631-
for (; dest_ != end; dest_++, src_++) {
632-
_Py_atomic_store_ptr_relaxed(dest_, *src_);
633-
}
634-
}
635-
636-
return dest;
637-
}
638-
639-
static inline void *
640-
_Py_atomic_memmove_ptr_store_relaxed(void *dest, void *src, Py_ssize_t n)
641-
{
642-
assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
643-
assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
644-
assert(n % sizeof(void *) == 0);
645-
646-
if (dest < src || dest >= (void *)((char *)src + n)) {
647-
void **dest_ = (void **)dest;
648-
void **src_ = (void **)src;
649-
void **end = dest_ + n / sizeof(void *);
650-
651-
for (; dest_ != end; dest_++, src_++) {
652-
_Py_atomic_store_ptr_relaxed(dest_, *src_);
653-
}
654-
}
655-
else if (dest > src) {
656-
n = n / sizeof(void *) - 1;
657-
void **dest_ = (void **)dest + n;
658-
void **src_ = (void **)src + n;
659-
void **end = (void **)dest - 1;
660-
661-
for (; dest_ != end; dest_--, src_--) {
662-
_Py_atomic_store_ptr_relaxed(dest_, *src_);
663-
}
664-
}
665-
666-
return dest;
667-
}

Include/internal/pycore_pyatomic_ft_wrappers.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,9 @@ extern "C" {
115115
#define FT_MUTEX_UNLOCK(lock) PyMutex_Unlock(lock)
116116

117117
#define FT_ATOMIC_MEMCPY_PTR_STORE_RELAXED(dest, src, n) \
118-
_Py_atomic_memcpy_ptr_store_relaxed(dest, src, (Py_ssize_t)(n))
118+
_Py_atomic_memcpy_ptr_store_relaxed(dest, src, (size_t)(n))
119119
#define FT_ATOMIC_MEMMOVE_PTR_STORE_RELAXED(dest, src, n) \
120-
_Py_atomic_memmove_ptr_store_relaxed(dest, src, (Py_ssize_t)(n))
120+
_Py_atomic_memmove_ptr_store_relaxed(dest, src, (size_t)(n))
121121

122122

123123
#else

0 commit comments

Comments
 (0)