Remove the pre-C11-atomics API, which is now unused

This commit is contained in:
David Goldblatt 2017-04-04 18:40:37 -07:00 committed by David Goldblatt
parent 074f2256ca
commit eeabdd2466
2 changed files with 0 additions and 90 deletions

View File

@ -52,69 +52,24 @@
# define JEMALLOC_ATOMIC_U64 # define JEMALLOC_ATOMIC_U64
#endif #endif
/*
* In order to let us transition atomics usage piecemeal (and reason locally
* about memory orders), we'll support the previous API for a while.
*/
#define JEMALLOC_GENERATE_COMPATABILITY_ATOMICS(type, short_type) \
ATOMIC_INLINE type \
atomic_read_##short_type(type *p) { \
return atomic_load_##short_type ((atomic_##short_type##_t *)p, \
ATOMIC_SEQ_CST); \
} \
\
ATOMIC_INLINE void \
atomic_write_##short_type(type *p, const type val) { \
atomic_store_##short_type((atomic_##short_type##_t *)p, \
(type)val, ATOMIC_SEQ_CST); \
} \
ATOMIC_INLINE bool \
atomic_cas_##short_type(type *p, type c, type s) { \
/* Note the '!' -- atomic_cas inverts the usual semantics. */ \
return !atomic_compare_exchange_strong_##short_type( \
(atomic_##short_type##_t *)p, &c, s, ATOMIC_SEQ_CST, \
ATOMIC_SEQ_CST); \
}
#define JEMALLOC_GENERATE_COMPATABILITY_INT_ATOMICS(type, short_type) \
JEMALLOC_GENERATE_COMPATABILITY_ATOMICS(type, short_type) \
\
ATOMIC_INLINE type \
atomic_add_##short_type(type *p, type x) { \
return atomic_fetch_add_##short_type( \
(atomic_##short_type##_t *)p, x, ATOMIC_SEQ_CST) + x; \
} \
ATOMIC_INLINE type \
atomic_sub_##short_type(type *p, type x) { \
return atomic_fetch_sub_##short_type( \
(atomic_##short_type##_t *)p, x, ATOMIC_SEQ_CST) - x; \
}
JEMALLOC_GENERATE_ATOMICS(void *, p, LG_SIZEOF_PTR) JEMALLOC_GENERATE_ATOMICS(void *, p, LG_SIZEOF_PTR)
JEMALLOC_GENERATE_COMPATABILITY_ATOMICS(void *, p)
/* /*
* There's no actual guarantee that sizeof(bool) == 1, but it's true on the only * There's no actual guarantee that sizeof(bool) == 1, but it's true on the only
* platform that actually needs to know the size, MSVC. * platform that actually needs to know the size, MSVC.
*/ */
JEMALLOC_GENERATE_ATOMICS(bool, b, 0) JEMALLOC_GENERATE_ATOMICS(bool, b, 0)
JEMALLOC_GENERATE_COMPATABILITY_ATOMICS(bool, b)
JEMALLOC_GENERATE_INT_ATOMICS(unsigned, u, LG_SIZEOF_INT) JEMALLOC_GENERATE_INT_ATOMICS(unsigned, u, LG_SIZEOF_INT)
JEMALLOC_GENERATE_COMPATABILITY_INT_ATOMICS(unsigned, u)
JEMALLOC_GENERATE_INT_ATOMICS(size_t, zu, LG_SIZEOF_PTR) JEMALLOC_GENERATE_INT_ATOMICS(size_t, zu, LG_SIZEOF_PTR)
JEMALLOC_GENERATE_COMPATABILITY_INT_ATOMICS(size_t, zu)
JEMALLOC_GENERATE_INT_ATOMICS(ssize_t, zd, LG_SIZEOF_PTR) JEMALLOC_GENERATE_INT_ATOMICS(ssize_t, zd, LG_SIZEOF_PTR)
JEMALLOC_GENERATE_COMPATABILITY_INT_ATOMICS(ssize_t, zd)
JEMALLOC_GENERATE_INT_ATOMICS(uint32_t, u32, 2) JEMALLOC_GENERATE_INT_ATOMICS(uint32_t, u32, 2)
JEMALLOC_GENERATE_COMPATABILITY_INT_ATOMICS(uint32_t, u32)
#ifdef JEMALLOC_ATOMIC_U64 #ifdef JEMALLOC_ATOMIC_U64
JEMALLOC_GENERATE_INT_ATOMICS(uint64_t, u64, 3) JEMALLOC_GENERATE_INT_ATOMICS(uint64_t, u64, 3)
JEMALLOC_GENERATE_COMPATABILITY_INT_ATOMICS(uint64_t, u64)
#endif #endif
#undef ATOMIC_INLINE #undef ATOMIC_INLINE

View File

@ -17,7 +17,6 @@
#define DO_TESTS(t, ta, val1, val2, val3) do { \ #define DO_TESTS(t, ta, val1, val2, val3) do { \
t val; \ t val; \
t raw_atomic; \
t expected; \ t expected; \
bool success; \ bool success; \
/* This (along with the load below) also tests ATOMIC_LOAD. */ \ /* This (along with the load below) also tests ATOMIC_LOAD. */ \
@ -81,37 +80,11 @@
} \ } \
\ \
\ \
/* Previous atomics API. */ \
\
/* Read. */ \
raw_atomic = val1; \
val = atomic_read_##ta(&raw_atomic); \
assert_##ta##_eq(val1, val, "Read failed"); \
\
/* Write. */ \
raw_atomic = val1; \
atomic_write_##ta(&raw_atomic, val2); \
assert_##ta##_eq(val2, raw_atomic, "Write failed"); \
\
/* CAS. */ \
raw_atomic = val1; \
success = !atomic_cas_##ta(&raw_atomic, val2, val3); \
assert_b_eq(val1 == val2, success, \
"CAS did the wrong state update"); \
val = raw_atomic; \
if (success) { \
assert_##ta##_eq(val3, val, \
"Successful CAS should update atomic"); \
} else { \
assert_##ta##_eq(val1, val, \
"Unsuccessful CAS should not update atomic"); \
} \
} while (0) } while (0)
#define DO_INTEGER_TESTS(t, ta, val1, val2) do { \ #define DO_INTEGER_TESTS(t, ta, val1, val2) do { \
atomic_##ta##_t atom; \ atomic_##ta##_t atom; \
t val; \ t val; \
t raw_atomic; \
\ \
/* Fetch-add. */ \ /* Fetch-add. */ \
atomic_store_##ta(&atom, val1, ATOMIC_RELAXED); \ atomic_store_##ta(&atom, val1, ATOMIC_RELAXED); \
@ -157,24 +130,6 @@
val = atomic_load_##ta(&atom, ATOMIC_RELAXED); \ val = atomic_load_##ta(&atom, ATOMIC_RELAXED); \
assert_##ta##_eq(val1 ^ val2, val, \ assert_##ta##_eq(val1 ^ val2, val, \
"Fetch-xor should update atomic"); \ "Fetch-xor should update atomic"); \
\
/* Previous atomics API. */ \
\
/* Add. */ \
raw_atomic = val1; \
val = atomic_add_##ta(&raw_atomic, val2); \
assert_##ta##_eq(val1 + val2, val, \
"atomic_add should return new value"); \
assert_##ta##_eq(val1 + val2, raw_atomic, \
"atomic_add should update atomic"); \
\
/* Sub. */ \
raw_atomic = val1; \
val = atomic_sub_##ta(&raw_atomic, val2); \
assert_##ta##_eq(val1 - val2, val, \
"atomic_sub should return new value"); \
assert_##ta##_eq(val1 - val2, raw_atomic, \
"atomic_add should update atomic"); \
} while (0) } while (0)
#define TEST_STRUCT(t, ta) \ #define TEST_STRUCT(t, ta) \