Skip to content

Commit 73c7cc1

Browse files
committed
test location dependence
1 parent a5f4d9e commit 73c7cc1

File tree

4 files changed

+53
-246
lines changed

4 files changed

+53
-246
lines changed

Include/cpython/pyatomic.h

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,59 @@ static inline Py_ssize_t
545545
_Py_atomic_load_ssize_acquire(const Py_ssize_t *obj);
546546

547547

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

549602

550603
// --- _Py_atomic_fence ------------------------------------------------------
@@ -612,56 +665,3 @@ static inline void _Py_atomic_fence_release(void);
612665
#else
613666
# error "long must be 4 or 8 bytes in size"
614667
#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, size_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, size_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/cpython/pyatomic_gcc.h

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -600,69 +600,6 @@ static inline Py_ssize_t
600600
_Py_atomic_load_ssize_acquire(const Py_ssize_t *obj)
601601
{ return __atomic_load_n(obj, __ATOMIC_ACQUIRE); }
602602

603-
604-
// // --- _Py_atomic_memcpy / _Py_atomic_memmove ------------
605-
606-
// // #include <string.h>
607-
608-
// static inline void *
609-
// _Py_atomic_memcpy_ptr_store_relaxed(void *dest, void *src, size_t n)
610-
// {
611-
// // assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
612-
// // assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
613-
// // assert(n % sizeof(void *) == 0);
614-
615-
// // memcpy(dest, src, n);
616-
617-
// if (dest != src) {
618-
// void **dest_ = (void **)dest;
619-
// void **src_ = (void **)src;
620-
// void **end = dest_ + n / sizeof(void *);
621-
622-
// for (; dest_ != end; dest_++, src_++) {
623-
// // *dest_ = *src_;
624-
// __atomic_store_n((void **)dest_, *src_, __ATOMIC_RELAXED);
625-
// }
626-
// }
627-
628-
// return dest;
629-
// }
630-
631-
// static inline void *
632-
// _Py_atomic_memmove_ptr_store_relaxed(void *dest, void *src, size_t n)
633-
// {
634-
// // assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
635-
// // assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
636-
// // assert(n % sizeof(void *) == 0);
637-
638-
// // memmove(dest, src, n);
639-
640-
// if (dest < src || dest >= (void *)((char *)src + n)) {
641-
// void **dest_ = (void **)dest;
642-
// void **src_ = (void **)src;
643-
// void **end = dest_ + n / sizeof(void *);
644-
645-
// for (; dest_ != end; dest_++, src_++) {
646-
// // *dest_ = *src_;
647-
// __atomic_store_n((void **)dest_, *src_, __ATOMIC_RELAXED);
648-
// }
649-
// }
650-
// else if (dest > src) {
651-
// n = n / sizeof(void *) - 1;
652-
// void **dest_ = (void **)dest + n;
653-
// void **src_ = (void **)src + n;
654-
// void **end = (void **)dest - 1;
655-
656-
// for (; dest_ != end; dest_--, src_--) {
657-
// // *dest_ = *src_;
658-
// __atomic_store_n((void **)dest_, *src_, __ATOMIC_RELAXED);
659-
// }
660-
// }
661-
662-
// return dest;
663-
// }
664-
665-
666603
// --- _Py_atomic_fence ------------------------------------------------------
667604

668605
static inline void

Include/cpython/pyatomic_msc.h

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,69 +1154,6 @@ _Py_atomic_load_ssize_acquire(const Py_ssize_t *obj)
11541154
#endif
11551155
}
11561156

1157-
1158-
// // --- _Py_atomic_memcpy / _Py_atomic_memmove ------------
1159-
1160-
// // #include <string.h>
1161-
1162-
// static inline void *
1163-
// _Py_atomic_memcpy_ptr_store_relaxed(void *dest, void *src, size_t n)
1164-
// {
1165-
// // assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
1166-
// // assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
1167-
// // assert(n % sizeof(void *) == 0);
1168-
1169-
// // memcpy(dest, src, n);
1170-
1171-
// if (dest != src) {
1172-
// void **dest_ = (void **)dest;
1173-
// void **src_ = (void **)src;
1174-
// void **end = dest_ + n / sizeof(void *);
1175-
1176-
// for (; dest_ != end; dest_++, src_++) {
1177-
// // *dest_ = *src_;
1178-
// *(void * volatile *)dest_ = *src_;
1179-
// }
1180-
// }
1181-
1182-
// return dest;
1183-
// }
1184-
1185-
// static inline void *
1186-
// _Py_atomic_memmove_ptr_store_relaxed(void *dest, void *src, size_t n)
1187-
// {
1188-
// // assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
1189-
// // assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
1190-
// // assert(n % sizeof(void *) == 0);
1191-
1192-
// // memmove(dest, src, n);
1193-
1194-
// if (dest < src || dest >= (void *)((char *)src + n)) {
1195-
// void **dest_ = (void **)dest;
1196-
// void **src_ = (void **)src;
1197-
// void **end = dest_ + n / sizeof(void *);
1198-
1199-
// for (; dest_ != end; dest_++, src_++) {
1200-
// // *dest_ = *src_;
1201-
// *(void * volatile *)dest_ = *src_;
1202-
// }
1203-
// }
1204-
// else if (dest > src) {
1205-
// n = n / sizeof(void *) - 1;
1206-
// void **dest_ = (void **)dest + n;
1207-
// void **src_ = (void **)src + n;
1208-
// void **end = (void **)dest - 1;
1209-
1210-
// for (; dest_ != end; dest_--, src_--) {
1211-
// // *dest_ = *src_;
1212-
// *(void * volatile *)dest_ = *src_;
1213-
// }
1214-
// }
1215-
1216-
// return dest;
1217-
// }
1218-
1219-
12201157
// --- _Py_atomic_fence ------------------------------------------------------
12211158

12221159
static inline void

Include/cpython/pyatomic_std.h

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,73 +1088,6 @@ _Py_atomic_load_ssize_acquire(const Py_ssize_t *obj)
10881088
}
10891089

10901090

1091-
// // --- _Py_atomic_memcpy / _Py_atomic_memmove ------------
1092-
1093-
// // #include <string.h>
1094-
1095-
// static inline void *
1096-
// _Py_atomic_memcpy_ptr_store_relaxed(void *dest, void *src, size_t n)
1097-
// {
1098-
// _Py_USING_STD;
1099-
// // assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
1100-
// // assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
1101-
// // assert(n % sizeof(void *) == 0);
1102-
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 *);
1109-
1110-
// for (; dest_ != end; dest_++, src_++) {
1111-
// // *dest_ = *src_;
1112-
// atomic_store_explicit((_Atomic(void*)*)dest_, *src_,
1113-
// memory_order_relaxed);
1114-
// }
1115-
// }
1116-
1117-
// return dest;
1118-
// }
1119-
1120-
// static inline void *
1121-
// _Py_atomic_memmove_ptr_store_relaxed(void *dest, void *src, size_t n)
1122-
// {
1123-
// _Py_USING_STD;
1124-
// // assert(((uintptr_t)dest & (sizeof (void *) - 1)) == 0);
1125-
// // assert(((uintptr_t)src & (sizeof (void *) - 1)) == 0);
1126-
// // assert(n % sizeof(void *) == 0);
1127-
1128-
// // memmove(dest, src, n);
1129-
1130-
// if (dest < src || dest >= (void *)((char *)src + n)) {
1131-
// void **dest_ = (void **)dest;
1132-
// void **src_ = (void **)src;
1133-
// void **end = dest_ + n / sizeof(void *);
1134-
1135-
// for (; dest_ != end; dest_++, src_++) {
1136-
// // *dest_ = *src_;
1137-
// atomic_store_explicit((_Atomic(void*)*)dest_, *src_,
1138-
// memory_order_relaxed);
1139-
// }
1140-
// }
1141-
// else if (dest > src) {
1142-
// n = n / sizeof(void *) - 1;
1143-
// void **dest_ = (void **)dest + n;
1144-
// void **src_ = (void **)src + n;
1145-
// void **end = (void **)dest - 1;
1146-
1147-
// for (; dest_ != end; dest_--, src_--) {
1148-
// // *dest_ = *src_;
1149-
// atomic_store_explicit((_Atomic(void*)*)dest_, *src_,
1150-
// memory_order_relaxed);
1151-
// }
1152-
// }
1153-
1154-
// return dest;
1155-
// }
1156-
1157-
11581091
// --- _Py_atomic_fence ------------------------------------------------------
11591092

11601093
static inline void

0 commit comments

Comments
 (0)