xref: /aosp_15_r20/external/jemalloc_new/src/sz.c (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
1*1208bc7eSAndroid Build Coastguard Worker #include "jemalloc/internal/jemalloc_preamble.h"
2*1208bc7eSAndroid Build Coastguard Worker #include "jemalloc/internal/sz.h"
3*1208bc7eSAndroid Build Coastguard Worker 
4*1208bc7eSAndroid Build Coastguard Worker JEMALLOC_ALIGNED(CACHELINE)
5*1208bc7eSAndroid Build Coastguard Worker const size_t sz_pind2sz_tab[NPSIZES+1] = {
6*1208bc7eSAndroid Build Coastguard Worker #define PSZ_yes(lg_grp, ndelta, lg_delta)				\
7*1208bc7eSAndroid Build Coastguard Worker 	(((ZU(1)<<lg_grp) + (ZU(ndelta)<<lg_delta))),
8*1208bc7eSAndroid Build Coastguard Worker #define PSZ_no(lg_grp, ndelta, lg_delta)
9*1208bc7eSAndroid Build Coastguard Worker #define SC(index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup) \
10*1208bc7eSAndroid Build Coastguard Worker 	PSZ_##psz(lg_grp, ndelta, lg_delta)
11*1208bc7eSAndroid Build Coastguard Worker 	SIZE_CLASSES
12*1208bc7eSAndroid Build Coastguard Worker #undef PSZ_yes
13*1208bc7eSAndroid Build Coastguard Worker #undef PSZ_no
14*1208bc7eSAndroid Build Coastguard Worker #undef SC
15*1208bc7eSAndroid Build Coastguard Worker 	(LARGE_MAXCLASS + PAGE)
16*1208bc7eSAndroid Build Coastguard Worker };
17*1208bc7eSAndroid Build Coastguard Worker 
18*1208bc7eSAndroid Build Coastguard Worker JEMALLOC_ALIGNED(CACHELINE)
19*1208bc7eSAndroid Build Coastguard Worker const size_t sz_index2size_tab[NSIZES] = {
20*1208bc7eSAndroid Build Coastguard Worker #define SC(index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup) \
21*1208bc7eSAndroid Build Coastguard Worker 	((ZU(1)<<lg_grp) + (ZU(ndelta)<<lg_delta)),
22*1208bc7eSAndroid Build Coastguard Worker 	SIZE_CLASSES
23*1208bc7eSAndroid Build Coastguard Worker #undef SC
24*1208bc7eSAndroid Build Coastguard Worker };
25*1208bc7eSAndroid Build Coastguard Worker 
26*1208bc7eSAndroid Build Coastguard Worker JEMALLOC_ALIGNED(CACHELINE)
27*1208bc7eSAndroid Build Coastguard Worker const uint8_t sz_size2index_tab[] = {
28*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN == 0
29*1208bc7eSAndroid Build Coastguard Worker /* The div module doesn't support division by 1. */
30*1208bc7eSAndroid Build Coastguard Worker #error "Unsupported LG_TINY_MIN"
31*1208bc7eSAndroid Build Coastguard Worker #define S2B_0(i)	i,
32*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 1
33*1208bc7eSAndroid Build Coastguard Worker #warning "Dangerous LG_TINY_MIN"
34*1208bc7eSAndroid Build Coastguard Worker #define S2B_1(i)	i,
35*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 2
36*1208bc7eSAndroid Build Coastguard Worker #warning "Dangerous LG_TINY_MIN"
37*1208bc7eSAndroid Build Coastguard Worker #define S2B_2(i)	i,
38*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 3
39*1208bc7eSAndroid Build Coastguard Worker #define S2B_3(i)	i,
40*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 4
41*1208bc7eSAndroid Build Coastguard Worker #define S2B_4(i)	i,
42*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 5
43*1208bc7eSAndroid Build Coastguard Worker #define S2B_5(i)	i,
44*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 6
45*1208bc7eSAndroid Build Coastguard Worker #define S2B_6(i)	i,
46*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 7
47*1208bc7eSAndroid Build Coastguard Worker #define S2B_7(i)	i,
48*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 8
49*1208bc7eSAndroid Build Coastguard Worker #define S2B_8(i)	i,
50*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 9
51*1208bc7eSAndroid Build Coastguard Worker #define S2B_9(i)	i,
52*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 10
53*1208bc7eSAndroid Build Coastguard Worker #define S2B_10(i)	i,
54*1208bc7eSAndroid Build Coastguard Worker #elif LG_TINY_MIN == 11
55*1208bc7eSAndroid Build Coastguard Worker #define S2B_11(i)	i,
56*1208bc7eSAndroid Build Coastguard Worker #else
57*1208bc7eSAndroid Build Coastguard Worker #error "Unsupported LG_TINY_MIN"
58*1208bc7eSAndroid Build Coastguard Worker #endif
59*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 1
60*1208bc7eSAndroid Build Coastguard Worker #define S2B_1(i)	S2B_0(i) S2B_0(i)
61*1208bc7eSAndroid Build Coastguard Worker #endif
62*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 2
63*1208bc7eSAndroid Build Coastguard Worker #define S2B_2(i)	S2B_1(i) S2B_1(i)
64*1208bc7eSAndroid Build Coastguard Worker #endif
65*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 3
66*1208bc7eSAndroid Build Coastguard Worker #define S2B_3(i)	S2B_2(i) S2B_2(i)
67*1208bc7eSAndroid Build Coastguard Worker #endif
68*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 4
69*1208bc7eSAndroid Build Coastguard Worker #define S2B_4(i)	S2B_3(i) S2B_3(i)
70*1208bc7eSAndroid Build Coastguard Worker #endif
71*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 5
72*1208bc7eSAndroid Build Coastguard Worker #define S2B_5(i)	S2B_4(i) S2B_4(i)
73*1208bc7eSAndroid Build Coastguard Worker #endif
74*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 6
75*1208bc7eSAndroid Build Coastguard Worker #define S2B_6(i)	S2B_5(i) S2B_5(i)
76*1208bc7eSAndroid Build Coastguard Worker #endif
77*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 7
78*1208bc7eSAndroid Build Coastguard Worker #define S2B_7(i)	S2B_6(i) S2B_6(i)
79*1208bc7eSAndroid Build Coastguard Worker #endif
80*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 8
81*1208bc7eSAndroid Build Coastguard Worker #define S2B_8(i)	S2B_7(i) S2B_7(i)
82*1208bc7eSAndroid Build Coastguard Worker #endif
83*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 9
84*1208bc7eSAndroid Build Coastguard Worker #define S2B_9(i)	S2B_8(i) S2B_8(i)
85*1208bc7eSAndroid Build Coastguard Worker #endif
86*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 10
87*1208bc7eSAndroid Build Coastguard Worker #define S2B_10(i)	S2B_9(i) S2B_9(i)
88*1208bc7eSAndroid Build Coastguard Worker #endif
89*1208bc7eSAndroid Build Coastguard Worker #if LG_TINY_MIN < 11
90*1208bc7eSAndroid Build Coastguard Worker #define S2B_11(i)	S2B_10(i) S2B_10(i)
91*1208bc7eSAndroid Build Coastguard Worker #endif
92*1208bc7eSAndroid Build Coastguard Worker #define S2B_no(i)
93*1208bc7eSAndroid Build Coastguard Worker #define SC(index, lg_grp, lg_delta, ndelta, psz, bin, pgs, lg_delta_lookup) \
94*1208bc7eSAndroid Build Coastguard Worker 	S2B_##lg_delta_lookup(index)
95*1208bc7eSAndroid Build Coastguard Worker 	SIZE_CLASSES
96*1208bc7eSAndroid Build Coastguard Worker #undef S2B_3
97*1208bc7eSAndroid Build Coastguard Worker #undef S2B_4
98*1208bc7eSAndroid Build Coastguard Worker #undef S2B_5
99*1208bc7eSAndroid Build Coastguard Worker #undef S2B_6
100*1208bc7eSAndroid Build Coastguard Worker #undef S2B_7
101*1208bc7eSAndroid Build Coastguard Worker #undef S2B_8
102*1208bc7eSAndroid Build Coastguard Worker #undef S2B_9
103*1208bc7eSAndroid Build Coastguard Worker #undef S2B_10
104*1208bc7eSAndroid Build Coastguard Worker #undef S2B_11
105*1208bc7eSAndroid Build Coastguard Worker #undef S2B_no
106*1208bc7eSAndroid Build Coastguard Worker #undef SC
107*1208bc7eSAndroid Build Coastguard Worker };
108