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