1b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#!/bin/sh 2b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 3b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans# The following limits are chosen such that they cover all supported platforms. 4b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 58d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans# Pointer sizes. 68d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanslg_zarr="2 3" 78d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 88d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans# Quanta. 98d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanslg_qarr="3 4" 10b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 11b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans# The range of tiny size classes is [2^lg_tmin..2^(lg_q-1)]. 12b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evanslg_tmin=3 13b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 148d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans# Maximum lookup size. 158d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanslg_kmax=12 168d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 178d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans# Page sizes. 188d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanslg_parr="12 13 16" 198d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 208d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans# Size class group size (number of size classes for each size doubling). 218d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanslg_g=2 22b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 23125b93e43fe764e46c8a89fc2f3957a4e02c92e1Jason Evanspow2() { 24b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans e=$1 25b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans pow2_result=1 26b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans while [ ${e} -gt 0 ] ; do 2712a6845b6c91cf76caf3199495d76b16bba1f2feJason Evans pow2_result=$((${pow2_result} + ${pow2_result})) 2812a6845b6c91cf76caf3199495d76b16bba1f2feJason Evans e=$((${e} - 1)) 29b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans done 30b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans} 31b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 328d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanslg() { 338d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans x=$1 348d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_result=0 358d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans while [ ${x} -gt 1 ] ; do 368d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_result=$((${lg_result} + 1)) 378d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans x=$((${x} / 2)) 388d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans done 398d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans} 408d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 418d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanssize_class() { 428d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans index=$1 438d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=$2 448d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta=$3 458d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta=$4 468d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_p=$5 478d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_kmax=$6 488d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 498d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg ${ndelta}; lg_ndelta=${lg_result}; pow2 ${lg_ndelta} 508d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${pow2_result} -lt ${ndelta} ] ; then 518d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans rem="yes" 528d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans else 538d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans rem="no" 548d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 558d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 568d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_size=${lg_grp} 578d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ $((${lg_delta} + ${lg_ndelta})) -eq ${lg_grp} ] ; then 588d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_size=$((${lg_grp} + 1)) 598d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans else 608d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_size=${lg_grp} 618d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans rem="yes" 628d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 638d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 648d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${lg_size} -lt ${lg_p} ] ; then 658d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans bin="yes" 668d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans else 678d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans bin="no" 688d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 698d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${lg_size} -lt ${lg_kmax} \ 708d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans -o ${lg_size} -eq ${lg_kmax} -a ${rem} = "no" ] ; then 718d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta_lookup=${lg_delta} 728d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans else 738d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta_lookup="no" 748d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 758d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans printf ' SC(%3d, %6d, %8d, %6d, %3s, %2s) \\\n' ${index} ${lg_grp} ${lg_delta} ${ndelta} ${bin} ${lg_delta_lookup} 768d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # Defined upon return: 778d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - lg_delta_lookup (${lg_delta} or "no") 788d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - bin ("yes" or "no") 798d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans} 808d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 818d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanssep_line() { 828d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo " \\" 838d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans} 848d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 858d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evanssize_classes() { 868d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_z=$1 878d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_q=$2 888d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_t=$3 898d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_p=$4 908d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_g=$5 918d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 928d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans pow2 $((${lg_z} + 3)); ptr_bits=${pow2_result} 938d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans pow2 ${lg_g}; g=${pow2_result} 948d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 958d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define SIZE_CLASSES \\" 968d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo " /* index, lg_grp, lg_delta, ndelta, bin, lg_delta_lookup */ \\" 978d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 988d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ntbins=0 998d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans nlbins=0 1008d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_tiny_maxclass='"NA"' 1018d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans nbins=0 1028d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 1038d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # Tiny size classes. 1048d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta=0 1058d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans index=0 1068d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=${lg_t} 1078d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta=${lg_grp} 1088d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans while [ ${lg_grp} -lt ${lg_q} ] ; do 1098d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans size_class ${index} ${lg_grp} ${lg_delta} ${ndelta} ${lg_p} ${lg_kmax} 1108d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${lg_delta_lookup} != "no" ] ; then 1118d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans nlbins=$((${index} + 1)) 1128d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 1138d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${bin} != "no" ] ; then 1148d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans nbins=$((${index} + 1)) 1158d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 1168d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ntbins=$((${ntbins} + 1)) 1178d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_tiny_maxclass=${lg_grp} # Final written value is correct. 1188d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans index=$((${index} + 1)) 1198d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta=${lg_grp} 1208d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=$((${lg_grp} + 1)) 1218d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans done 1228d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 1238d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # First non-tiny group. 1248d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${ntbins} -gt 0 ] ; then 1258d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans sep_line 1268d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # The first size class has an unusual encoding, because the size has to be 1278d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # split between grp and delta*ndelta. 1288d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=$((${lg_grp} - 1)) 1298d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta=1 1308d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans size_class ${index} ${lg_grp} ${lg_delta} ${ndelta} ${lg_p} ${lg_kmax} 1318d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans index=$((${index} + 1)) 1328d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=$((${lg_grp} + 1)) 1338d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta=$((${lg_delta} + 1)) 1348d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 1358d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans while [ ${ndelta} -lt ${g} ] ; do 1368d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans size_class ${index} ${lg_grp} ${lg_delta} ${ndelta} ${lg_p} ${lg_kmax} 1378d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans index=$((${index} + 1)) 1388d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta=$((${ndelta} + 1)) 1398d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans done 1408d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 1418d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # All remaining groups. 1428d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=$((${lg_grp} + ${lg_g})) 1438d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans while [ ${lg_grp} -lt ${ptr_bits} ] ; do 1448d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans sep_line 1458d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta=1 1468d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${lg_grp} -eq $((${ptr_bits} - 1)) ] ; then 1478d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta_limit=$((${g} - 1)) 1488d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans else 1498d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta_limit=${g} 1508d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 1518d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans while [ ${ndelta} -le ${ndelta_limit} ] ; do 1528d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans size_class ${index} ${lg_grp} ${lg_delta} ${ndelta} ${lg_p} ${lg_kmax} 1538d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${lg_delta_lookup} != "no" ] ; then 1548d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans nlbins=$((${index} + 1)) 1558d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # Final written value is correct: 1568d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lookup_maxclass="((((size_t)1) << ${lg_grp}) + (((size_t)${ndelta}) << ${lg_delta}))" 1578d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 1588d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans if [ ${bin} != "no" ] ; then 1598d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans nbins=$((${index} + 1)) 1608d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # Final written value is correct: 1618d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans small_maxclass="((((size_t)1) << ${lg_grp}) + (((size_t)${ndelta}) << ${lg_delta}))" 1628d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans fi 1638d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans index=$((${index} + 1)) 1648d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans ndelta=$((${ndelta} + 1)) 1658d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans done 1668d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_grp=$((${lg_grp} + 1)) 1678d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_delta=$((${lg_delta} + 1)) 1688d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans done 1698d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo 1708d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 1718d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # Defined upon completion: 1728d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - ntbins 1738d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - nlbins 1748d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - nbins 1758d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - lg_tiny_maxclass 1768d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - lookup_maxclass 1778d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # - small_maxclass 1788d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans} 1798d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 180b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evanscat <<EOF 181b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/* This file was automatically generated by size_classes.sh. */ 182b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/******************************************************************************/ 183b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#ifdef JEMALLOC_H_TYPES 184b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 1858d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans/* 1868d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * This header requires LG_SIZEOF_PTR, LG_TINY_MIN, LG_QUANTUM, and LG_PAGE to 1878d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * be defined prior to inclusion, and it in turn defines: 1888d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * 1898d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * LG_SIZE_CLASS_GROUP: Lg of size class count for each size doubling. 1908d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * SIZE_CLASSES: Complete table of 1918d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * SC(index, lg_delta, size, bin, lg_delta_lookup) tuples. 1928d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * index: Size class index. 1938d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * lg_grp: Lg group base size (no deltas added). 1948d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * lg_delta: Lg delta to previous size class. 1958d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * ndelta: Delta multiplier. size == 1<<lg_grp + ndelta<<lg_delta 1968d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * bin: 'yes' if a small bin size class, 'no' otherwise. 1978d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * lg_delta_lookup: Same as lg_delta if a lookup table size class, 'no' 1988d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * otherwise. 1998d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * NTBINS: Number of tiny bins. 2008d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * NLBINS: Number of bins supported by the lookup table. 2018d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * NBINS: Number of small size class bins. 2028d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * LG_TINY_MAXCLASS: Lg of maximum tiny size class. 2038d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * LOOKUP_MAXCLASS: Maximum size class included in lookup table. 2048d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans * SMALL_MAXCLASS: Maximum small size class. 2058d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans */ 2068d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 2078d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans#define LG_SIZE_CLASS_GROUP ${lg_g} 2088d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans 209b172610317babc7f365584ddd7fdaf4eb8d9d04cJason EvansEOF 210b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 2118d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evansfor lg_z in ${lg_zarr} ; do 2128d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans for lg_q in ${lg_qarr} ; do 2138d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_t=${lg_tmin} 2148d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans while [ ${lg_t} -le ${lg_q} ] ; do 2158d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans # Iterate through page sizes and compute how many bins there are. 2168d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans for lg_p in ${lg_parr} ; do 2178d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#if (LG_SIZEOF_PTR == ${lg_z} && LG_TINY_MIN == ${lg_t} && LG_QUANTUM == ${lg_q} && LG_PAGE == ${lg_p})" 2188d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans size_classes ${lg_z} ${lg_q} ${lg_t} ${lg_p} ${lg_g} 2198d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define SIZE_CLASSES_DEFINED" 2208d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define NTBINS ${ntbins}" 2218d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define NLBINS ${nlbins}" 2228d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define NBINS ${nbins}" 2238d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define LG_TINY_MAXCLASS ${lg_tiny_maxclass}" 2248d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define LOOKUP_MAXCLASS ${lookup_maxclass}" 2258d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#define SMALL_MAXCLASS ${small_maxclass}" 2268d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo "#endif" 2278d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans echo 228b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans done 2298d8f9aeeaa77514d5732db5bd0111232af21fcfdJason Evans lg_t=$((${lg_t} + 1)) 230b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans done 231b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans done 232b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evansdone 233b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 234b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evanscat <<EOF 235b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#ifndef SIZE_CLASSES_DEFINED 236b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans# error "No size class definitions match configuration" 237b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#endif 238b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#undef SIZE_CLASSES_DEFINED 239b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/* 240b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans * The small_size2bin lookup table uses uint8_t to encode each bin index, so we 241b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans * cannot support more than 256 small size classes. Further constrain NBINS to 2429b0cbf0850b130a9b0a8c58bd10b2926b2083510Jason Evans * 255 since all small size classes, plus a "not small" size class must be 2439b0cbf0850b130a9b0a8c58bd10b2926b2083510Jason Evans * stored in 8 bits of arena_chunk_map_t's bits field. 244b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans */ 245b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#if (NBINS > 255) 246b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans# error "Too many small size classes" 247b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#endif 248b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 249b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#endif /* JEMALLOC_H_TYPES */ 250b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/******************************************************************************/ 251b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#ifdef JEMALLOC_H_STRUCTS 252b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 253b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 254b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#endif /* JEMALLOC_H_STRUCTS */ 255b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/******************************************************************************/ 256b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#ifdef JEMALLOC_H_EXTERNS 257b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 258b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 259b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#endif /* JEMALLOC_H_EXTERNS */ 260b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/******************************************************************************/ 261b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#ifdef JEMALLOC_H_INLINES 262b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 263b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans 264b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans#endif /* JEMALLOC_H_INLINES */ 265b172610317babc7f365584ddd7fdaf4eb8d9d04cJason Evans/******************************************************************************/ 266b172610317babc7f365584ddd7fdaf4eb8d9d04cJason EvansEOF 267