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