1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-19 03:00:25 +02:00
guile/src/gc-align.h
Andy Wingo dd3953ef1a Factor trace deque out to shared-worklist.h
Also increase alignment to account for cache line prefetcher.
2024-07-08 10:42:58 +02:00

22 lines
558 B
C++

#ifndef GC_ALIGN_H
#define GC_ALIGN_H
#ifndef GC_IMPL
#error internal header file, not part of API
#endif
#include <stdint.h>
static inline uintptr_t align_down(uintptr_t addr, size_t align) {
return addr & ~(align - 1);
}
static inline uintptr_t align_up(uintptr_t addr, size_t align) {
return align_down(addr + align - 1, align);
}
// Poor man's equivalent of std::hardware_destructive_interference_size.
#define AVOID_FALSE_SHARING 128
#define ALIGNED_TO_AVOID_FALSE_SHARING \
__attribute__((aligned(AVOID_FALSE_SHARING)))
#endif // GC_ALIGN_H