1 #ifndef JEMALLOC_INTERNAL_QUANTUM_H 2 #define JEMALLOC_INTERNAL_QUANTUM_H 3 4 /* 5 * Minimum allocation alignment is 2^LG_QUANTUM bytes (ignoring tiny size 6 * classes). 7 */ 8 #ifndef LG_QUANTUM 9 # if (defined(__i386__) || defined(_M_IX86)) 10 # define LG_QUANTUM 4 11 # endif 12 # ifdef __ia64__ 13 # define LG_QUANTUM 4 14 # endif 15 # ifdef __alpha__ 16 # define LG_QUANTUM 4 17 # endif 18 # if (defined(__sparc64__) || defined(__sparcv9) || defined(__sparc_v9__)) 19 # define LG_QUANTUM 4 20 # endif 21 # if (defined(__amd64__) || defined(__x86_64__) || defined(_M_X64)) 22 # define LG_QUANTUM 4 23 # endif 24 # ifdef __arm__ 25 # define LG_QUANTUM 3 26 # endif 27 # ifdef __aarch64__ 28 # define LG_QUANTUM 4 29 # endif 30 # ifdef __hppa__ 31 # define LG_QUANTUM 4 32 # endif 33 # ifdef __m68k__ 34 # define LG_QUANTUM 3 35 # endif 36 # ifdef __mips__ 37 # define LG_QUANTUM 3 38 # endif 39 # ifdef __nios2__ 40 # define LG_QUANTUM 3 41 # endif 42 # ifdef __or1k__ 43 # define LG_QUANTUM 3 44 # endif 45 # ifdef __powerpc__ 46 # define LG_QUANTUM 4 47 # endif 48 # if defined(__riscv) || defined(__riscv__) 49 # define LG_QUANTUM 4 50 # endif 51 # ifdef __s390__ 52 # define LG_QUANTUM 4 53 # endif 54 # if (defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || \ 55 defined(__SH4_SINGLE_ONLY__)) 56 # define LG_QUANTUM 4 57 # endif 58 # ifdef __tile__ 59 # define LG_QUANTUM 4 60 # endif 61 # ifdef __le32__ 62 # define LG_QUANTUM 4 63 # endif 64 # ifndef LG_QUANTUM 65 # error "Unknown minimum alignment for architecture; specify via " 66 "--with-lg-quantum" 67 # endif 68 #endif 69 70 #define QUANTUM ((size_t)(1U << LG_QUANTUM)) 71 #define QUANTUM_MASK (QUANTUM - 1) 72 73 /* Return the smallest quantum multiple that is >= a. */ 74 #define QUANTUM_CEILING(a) \ 75 (((a) + QUANTUM_MASK) & ~QUANTUM_MASK) 76 77 #endif /* JEMALLOC_INTERNAL_QUANTUM_H */ 78