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