1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-05 13:16:09 +03:00

move my_assume_aligned() to a separate header

This commit is contained in:
Eugene Kosov
2020-03-20 18:47:35 +03:00
parent 95da2113a0
commit bb24fa31fa
6 changed files with 74 additions and 47 deletions

View File

@@ -195,53 +195,6 @@ extern ulonglong strtoull(const char *str, char **ptr, int base);
#if defined(__cplusplus)
}
# ifdef _MSC_VER
template <size_t Alignment, class T> static inline T my_assume_aligned(T ptr)
{
DBUG_ASSERT(reinterpret_cast<size_t>(ptr) % Alignment == 0);
__assume(reinterpret_cast<size_t>(ptr) % Alignment == 0);
return ptr;
}
# else
template <size_t Alignment, class T> static inline T my_assume_aligned(T ptr)
{
DBUG_ASSERT(reinterpret_cast<size_t>(ptr) % Alignment == 0);
return static_cast<T>(__builtin_assume_aligned(ptr, Alignment));
}
# endif
template <size_t Alignment>
inline void *memcpy_aligned(void *dest, const void *src, size_t n)
{
static_assert(Alignment && !(Alignment & (Alignment - 1)), "power of 2");
return memcpy(my_assume_aligned<Alignment>(dest),
my_assume_aligned<Alignment>(src), n);
}
template <size_t Alignment>
inline void *memmove_aligned(void *dest, const void *src, size_t n)
{
static_assert(Alignment && !(Alignment & (Alignment - 1)), "power of 2");
return memmove(my_assume_aligned<Alignment>(dest),
my_assume_aligned<Alignment>(src), n);
}
template <size_t Alignment>
inline int memcmp_aligned(const void *s1, const void *s2, size_t n)
{
static_assert(Alignment && !(Alignment & (Alignment - 1)), "power of 2");
return memcmp(my_assume_aligned<Alignment>(s1),
my_assume_aligned<Alignment>(s2), n);
}
template <size_t Alignment>
inline void *memset_aligned(void *s, int c, size_t n)
{
static_assert(Alignment && !(Alignment & (Alignment - 1)), "power of 2");
return memset(my_assume_aligned<Alignment>(s), c, n);
}
#endif
#include <mysql/plugin.h>