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