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 __loongarch__ |
34 | # define LG_QUANTUM 4 |
35 | # endif |
36 | # ifdef __m68k__ |
37 | # define LG_QUANTUM 3 |
38 | # endif |
39 | # ifdef __mips__ |
40 | # if defined(__mips_n32) || defined(__mips_n64) |
41 | # define LG_QUANTUM 4 |
42 | # else |
43 | # define LG_QUANTUM 3 |
44 | # endif |
45 | # endif |
46 | # ifdef __nios2__ |
47 | # define LG_QUANTUM 3 |
48 | # endif |
49 | # ifdef __or1k__ |
50 | # define LG_QUANTUM 3 |
51 | # endif |
52 | # if defined(__powerpc__) || defined(__ppc__) || defined(__powerpc64__) || defined(__ppc64__) |
53 | # define LG_QUANTUM 4 |
54 | # endif |
55 | # if defined(__riscv) || defined(__riscv__) |
56 | # define LG_QUANTUM 4 |
57 | # endif |
58 | # ifdef __s390__ |
59 | # define LG_QUANTUM 4 |
60 | # endif |
61 | # if (defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || \ |
62 | defined(__SH4_SINGLE_ONLY__)) |
63 | # define LG_QUANTUM 4 |
64 | # endif |
65 | # ifdef __tile__ |
66 | # define LG_QUANTUM 4 |
67 | # endif |
68 | # ifdef __le32__ |
69 | # define LG_QUANTUM 4 |
70 | # endif |
71 | # ifdef __arc__ |
72 | # define LG_QUANTUM 3 |
73 | # endif |
74 | # ifndef LG_QUANTUM |
75 | # error "Unknown minimum alignment for architecture; specify via " |
76 | "--with-lg-quantum" |
77 | # endif |
78 | #endif |
79 | |
80 | #define QUANTUM ((size_t)(1U << LG_QUANTUM)) |
81 | #define QUANTUM_MASK (QUANTUM - 1) |
82 | |
83 | /* Return the smallest quantum multiple that is >= a. */ |
84 | #define QUANTUM_CEILING(a) \ |
85 | (((a) + QUANTUM_MASK) & ~QUANTUM_MASK) |
86 | |
87 | #endif /* JEMALLOC_INTERNAL_QUANTUM_H */ |
88 | |