summaryrefslogtreecommitdiff
path: root/deps/jemalloc/test/unit
diff options
context:
space:
mode:
Diffstat (limited to 'deps/jemalloc/test/unit')
-rw-r--r--deps/jemalloc/test/unit/SFMT.c2008
-rw-r--r--deps/jemalloc/test/unit/atomic.c122
-rw-r--r--deps/jemalloc/test/unit/bitmap.c24
-rw-r--r--deps/jemalloc/test/unit/ckh.c68
-rw-r--r--deps/jemalloc/test/unit/hash.c4
-rw-r--r--deps/jemalloc/test/unit/junk.c96
-rw-r--r--deps/jemalloc/test/unit/junk_alloc.c3
-rw-r--r--deps/jemalloc/test/unit/junk_free.c3
-rw-r--r--deps/jemalloc/test/unit/lg_chunk.c26
-rw-r--r--deps/jemalloc/test/unit/mallctl.c256
-rw-r--r--deps/jemalloc/test/unit/math.c6
-rw-r--r--deps/jemalloc/test/unit/mq.c3
-rw-r--r--deps/jemalloc/test/unit/prof_accum.c9
-rw-r--r--deps/jemalloc/test/unit/prof_accum.h35
-rw-r--r--deps/jemalloc/test/unit/prof_accum_a.c3
-rw-r--r--deps/jemalloc/test/unit/prof_accum_b.c3
-rw-r--r--deps/jemalloc/test/unit/prof_active.c136
-rw-r--r--deps/jemalloc/test/unit/prof_gdump.c29
-rw-r--r--deps/jemalloc/test/unit/prof_reset.c302
-rw-r--r--deps/jemalloc/test/unit/prof_thread_name.c129
-rw-r--r--deps/jemalloc/test/unit/rb.c7
-rw-r--r--deps/jemalloc/test/unit/rtree.c93
-rw-r--r--deps/jemalloc/test/unit/size_classes.c89
-rw-r--r--deps/jemalloc/test/unit/stats.c171
-rw-r--r--deps/jemalloc/test/unit/tsd.c48
-rw-r--r--deps/jemalloc/test/unit/util.c98
-rw-r--r--deps/jemalloc/test/unit/zero.c4
27 files changed, 2486 insertions, 1289 deletions
diff --git a/deps/jemalloc/test/unit/SFMT.c b/deps/jemalloc/test/unit/SFMT.c
index c57bd68df..ba4be8702 100644
--- a/deps/jemalloc/test/unit/SFMT.c
+++ b/deps/jemalloc/test/unit/SFMT.c
@@ -445,1008 +445,1008 @@ static const uint32_t init_by_array_32_expected[] = {
2750138839U, 3518055702U, 733072558U, 4169325400U, 788493625U
};
static const uint64_t init_gen_rand_64_expected[] = {
- QU(16924766246869039260LLU), QU( 8201438687333352714LLU),
- QU( 2265290287015001750LLU), QU(18397264611805473832LLU),
- QU( 3375255223302384358LLU), QU( 6345559975416828796LLU),
- QU(18229739242790328073LLU), QU( 7596792742098800905LLU),
- QU( 255338647169685981LLU), QU( 2052747240048610300LLU),
- QU(18328151576097299343LLU), QU(12472905421133796567LLU),
- QU(11315245349717600863LLU), QU(16594110197775871209LLU),
- QU(15708751964632456450LLU), QU(10452031272054632535LLU),
- QU(11097646720811454386LLU), QU( 4556090668445745441LLU),
- QU(17116187693090663106LLU), QU(14931526836144510645LLU),
- QU( 9190752218020552591LLU), QU( 9625800285771901401LLU),
- QU(13995141077659972832LLU), QU( 5194209094927829625LLU),
- QU( 4156788379151063303LLU), QU( 8523452593770139494LLU),
- QU(14082382103049296727LLU), QU( 2462601863986088483LLU),
- QU( 3030583461592840678LLU), QU( 5221622077872827681LLU),
- QU( 3084210671228981236LLU), QU(13956758381389953823LLU),
- QU(13503889856213423831LLU), QU(15696904024189836170LLU),
- QU( 4612584152877036206LLU), QU( 6231135538447867881LLU),
- QU(10172457294158869468LLU), QU( 6452258628466708150LLU),
- QU(14044432824917330221LLU), QU( 370168364480044279LLU),
- QU(10102144686427193359LLU), QU( 667870489994776076LLU),
- QU( 2732271956925885858LLU), QU(18027788905977284151LLU),
- QU(15009842788582923859LLU), QU( 7136357960180199542LLU),
- QU(15901736243475578127LLU), QU(16951293785352615701LLU),
- QU(10551492125243691632LLU), QU(17668869969146434804LLU),
- QU(13646002971174390445LLU), QU( 9804471050759613248LLU),
- QU( 5511670439655935493LLU), QU(18103342091070400926LLU),
- QU(17224512747665137533LLU), QU(15534627482992618168LLU),
- QU( 1423813266186582647LLU), QU(15821176807932930024LLU),
- QU( 30323369733607156LLU), QU(11599382494723479403LLU),
- QU( 653856076586810062LLU), QU( 3176437395144899659LLU),
- QU(14028076268147963917LLU), QU(16156398271809666195LLU),
- QU( 3166955484848201676LLU), QU( 5746805620136919390LLU),
- QU(17297845208891256593LLU), QU(11691653183226428483LLU),
- QU(17900026146506981577LLU), QU(15387382115755971042LLU),
- QU(16923567681040845943LLU), QU( 8039057517199388606LLU),
- QU(11748409241468629263LLU), QU( 794358245539076095LLU),
- QU(13438501964693401242LLU), QU(14036803236515618962LLU),
- QU( 5252311215205424721LLU), QU(17806589612915509081LLU),
- QU( 6802767092397596006LLU), QU(14212120431184557140LLU),
- QU( 1072951366761385712LLU), QU(13098491780722836296LLU),
- QU( 9466676828710797353LLU), QU(12673056849042830081LLU),
- QU(12763726623645357580LLU), QU(16468961652999309493LLU),
- QU(15305979875636438926LLU), QU(17444713151223449734LLU),
- QU( 5692214267627883674LLU), QU(13049589139196151505LLU),
- QU( 880115207831670745LLU), QU( 1776529075789695498LLU),
- QU(16695225897801466485LLU), QU(10666901778795346845LLU),
- QU( 6164389346722833869LLU), QU( 2863817793264300475LLU),
- QU( 9464049921886304754LLU), QU( 3993566636740015468LLU),
- QU( 9983749692528514136LLU), QU(16375286075057755211LLU),
- QU(16042643417005440820LLU), QU(11445419662923489877LLU),
- QU( 7999038846885158836LLU), QU( 6721913661721511535LLU),
- QU( 5363052654139357320LLU), QU( 1817788761173584205LLU),
- QU(13290974386445856444LLU), QU( 4650350818937984680LLU),
- QU( 8219183528102484836LLU), QU( 1569862923500819899LLU),
- QU( 4189359732136641860LLU), QU(14202822961683148583LLU),
- QU( 4457498315309429058LLU), QU(13089067387019074834LLU),
- QU(11075517153328927293LLU), QU(10277016248336668389LLU),
- QU( 7070509725324401122LLU), QU(17808892017780289380LLU),
- QU(13143367339909287349LLU), QU( 1377743745360085151LLU),
- QU( 5749341807421286485LLU), QU(14832814616770931325LLU),
- QU( 7688820635324359492LLU), QU(10960474011539770045LLU),
- QU( 81970066653179790LLU), QU(12619476072607878022LLU),
- QU( 4419566616271201744LLU), QU(15147917311750568503LLU),
- QU( 5549739182852706345LLU), QU( 7308198397975204770LLU),
- QU(13580425496671289278LLU), QU(17070764785210130301LLU),
- QU( 8202832846285604405LLU), QU( 6873046287640887249LLU),
- QU( 6927424434308206114LLU), QU( 6139014645937224874LLU),
- QU(10290373645978487639LLU), QU(15904261291701523804LLU),
- QU( 9628743442057826883LLU), QU(18383429096255546714LLU),
- QU( 4977413265753686967LLU), QU( 7714317492425012869LLU),
- QU( 9025232586309926193LLU), QU(14627338359776709107LLU),
- QU(14759849896467790763LLU), QU(10931129435864423252LLU),
- QU( 4588456988775014359LLU), QU(10699388531797056724LLU),
- QU( 468652268869238792LLU), QU( 5755943035328078086LLU),
- QU( 2102437379988580216LLU), QU( 9986312786506674028LLU),
- QU( 2654207180040945604LLU), QU( 8726634790559960062LLU),
- QU( 100497234871808137LLU), QU( 2800137176951425819LLU),
- QU( 6076627612918553487LLU), QU( 5780186919186152796LLU),
- QU( 8179183595769929098LLU), QU( 6009426283716221169LLU),
- QU( 2796662551397449358LLU), QU( 1756961367041986764LLU),
- QU( 6972897917355606205LLU), QU(14524774345368968243LLU),
- QU( 2773529684745706940LLU), QU( 4853632376213075959LLU),
- QU( 4198177923731358102LLU), QU( 8271224913084139776LLU),
- QU( 2741753121611092226LLU), QU(16782366145996731181LLU),
- QU(15426125238972640790LLU), QU(13595497100671260342LLU),
- QU( 3173531022836259898LLU), QU( 6573264560319511662LLU),
- QU(18041111951511157441LLU), QU( 2351433581833135952LLU),
- QU( 3113255578908173487LLU), QU( 1739371330877858784LLU),
- QU(16046126562789165480LLU), QU( 8072101652214192925LLU),
- QU(15267091584090664910LLU), QU( 9309579200403648940LLU),
- QU( 5218892439752408722LLU), QU(14492477246004337115LLU),
- QU(17431037586679770619LLU), QU( 7385248135963250480LLU),
- QU( 9580144956565560660LLU), QU( 4919546228040008720LLU),
- QU(15261542469145035584LLU), QU(18233297270822253102LLU),
- QU( 5453248417992302857LLU), QU( 9309519155931460285LLU),
- QU(10342813012345291756LLU), QU(15676085186784762381LLU),
- QU(15912092950691300645LLU), QU( 9371053121499003195LLU),
- QU( 9897186478226866746LLU), QU(14061858287188196327LLU),
- QU( 122575971620788119LLU), QU(12146750969116317754LLU),
- QU( 4438317272813245201LLU), QU( 8332576791009527119LLU),
- QU(13907785691786542057LLU), QU(10374194887283287467LLU),
- QU( 2098798755649059566LLU), QU( 3416235197748288894LLU),
- QU( 8688269957320773484LLU), QU( 7503964602397371571LLU),
- QU(16724977015147478236LLU), QU( 9461512855439858184LLU),
- QU(13259049744534534727LLU), QU( 3583094952542899294LLU),
- QU( 8764245731305528292LLU), QU(13240823595462088985LLU),
- QU(13716141617617910448LLU), QU(18114969519935960955LLU),
- QU( 2297553615798302206LLU), QU( 4585521442944663362LLU),
- QU(17776858680630198686LLU), QU( 4685873229192163363LLU),
- QU( 152558080671135627LLU), QU(15424900540842670088LLU),
- QU(13229630297130024108LLU), QU(17530268788245718717LLU),
- QU(16675633913065714144LLU), QU( 3158912717897568068LLU),
- QU(15399132185380087288LLU), QU( 7401418744515677872LLU),
- QU(13135412922344398535LLU), QU( 6385314346100509511LLU),
- QU(13962867001134161139LLU), QU(10272780155442671999LLU),
- QU(12894856086597769142LLU), QU(13340877795287554994LLU),
- QU(12913630602094607396LLU), QU(12543167911119793857LLU),
- QU(17343570372251873096LLU), QU(10959487764494150545LLU),
- QU( 6966737953093821128LLU), QU(13780699135496988601LLU),
- QU( 4405070719380142046LLU), QU(14923788365607284982LLU),
- QU( 2869487678905148380LLU), QU( 6416272754197188403LLU),
- QU(15017380475943612591LLU), QU( 1995636220918429487LLU),
- QU( 3402016804620122716LLU), QU(15800188663407057080LLU),
- QU(11362369990390932882LLU), QU(15262183501637986147LLU),
- QU(10239175385387371494LLU), QU( 9352042420365748334LLU),
- QU( 1682457034285119875LLU), QU( 1724710651376289644LLU),
- QU( 2038157098893817966LLU), QU( 9897825558324608773LLU),
- QU( 1477666236519164736LLU), QU(16835397314511233640LLU),
- QU(10370866327005346508LLU), QU(10157504370660621982LLU),
- QU(12113904045335882069LLU), QU(13326444439742783008LLU),
- QU(11302769043000765804LLU), QU(13594979923955228484LLU),
- QU(11779351762613475968LLU), QU( 3786101619539298383LLU),
- QU( 8021122969180846063LLU), QU(15745904401162500495LLU),
- QU(10762168465993897267LLU), QU(13552058957896319026LLU),
- QU(11200228655252462013LLU), QU( 5035370357337441226LLU),
- QU( 7593918984545500013LLU), QU( 5418554918361528700LLU),
- QU( 4858270799405446371LLU), QU( 9974659566876282544LLU),
- QU(18227595922273957859LLU), QU( 2772778443635656220LLU),
- QU(14285143053182085385LLU), QU( 9939700992429600469LLU),
- QU(12756185904545598068LLU), QU( 2020783375367345262LLU),
- QU( 57026775058331227LLU), QU( 950827867930065454LLU),
- QU( 6602279670145371217LLU), QU( 2291171535443566929LLU),
- QU( 5832380724425010313LLU), QU( 1220343904715982285LLU),
- QU(17045542598598037633LLU), QU(15460481779702820971LLU),
- QU(13948388779949365130LLU), QU(13975040175430829518LLU),
- QU(17477538238425541763LLU), QU(11104663041851745725LLU),
- QU(15860992957141157587LLU), QU(14529434633012950138LLU),
- QU( 2504838019075394203LLU), QU( 7512113882611121886LLU),
- QU( 4859973559980886617LLU), QU( 1258601555703250219LLU),
- QU(15594548157514316394LLU), QU( 4516730171963773048LLU),
- QU(11380103193905031983LLU), QU( 6809282239982353344LLU),
- QU(18045256930420065002LLU), QU( 2453702683108791859LLU),
- QU( 977214582986981460LLU), QU( 2006410402232713466LLU),
- QU( 6192236267216378358LLU), QU( 3429468402195675253LLU),
- QU(18146933153017348921LLU), QU(17369978576367231139LLU),
- QU( 1246940717230386603LLU), QU(11335758870083327110LLU),
- QU(14166488801730353682LLU), QU( 9008573127269635732LLU),
- QU(10776025389820643815LLU), QU(15087605441903942962LLU),
- QU( 1359542462712147922LLU), QU(13898874411226454206LLU),
- QU(17911176066536804411LLU), QU( 9435590428600085274LLU),
- QU( 294488509967864007LLU), QU( 8890111397567922046LLU),
- QU( 7987823476034328778LLU), QU(13263827582440967651LLU),
- QU( 7503774813106751573LLU), QU(14974747296185646837LLU),
- QU( 8504765037032103375LLU), QU(17340303357444536213LLU),
- QU( 7704610912964485743LLU), QU( 8107533670327205061LLU),
- QU( 9062969835083315985LLU), QU(16968963142126734184LLU),
- QU(12958041214190810180LLU), QU( 2720170147759570200LLU),
- QU( 2986358963942189566LLU), QU(14884226322219356580LLU),
- QU( 286224325144368520LLU), QU(11313800433154279797LLU),
- QU(18366849528439673248LLU), QU(17899725929482368789LLU),
- QU( 3730004284609106799LLU), QU( 1654474302052767205LLU),
- QU( 5006698007047077032LLU), QU( 8196893913601182838LLU),
- QU(15214541774425211640LLU), QU(17391346045606626073LLU),
- QU( 8369003584076969089LLU), QU( 3939046733368550293LLU),
- QU(10178639720308707785LLU), QU( 2180248669304388697LLU),
- QU( 62894391300126322LLU), QU( 9205708961736223191LLU),
- QU( 6837431058165360438LLU), QU( 3150743890848308214LLU),
- QU(17849330658111464583LLU), QU(12214815643135450865LLU),
- QU(13410713840519603402LLU), QU( 3200778126692046802LLU),
- QU(13354780043041779313LLU), QU( 800850022756886036LLU),
- QU(15660052933953067433LLU), QU( 6572823544154375676LLU),
- QU(11030281857015819266LLU), QU(12682241941471433835LLU),
- QU(11654136407300274693LLU), QU( 4517795492388641109LLU),
- QU( 9757017371504524244LLU), QU(17833043400781889277LLU),
- QU(12685085201747792227LLU), QU(10408057728835019573LLU),
- QU( 98370418513455221LLU), QU( 6732663555696848598LLU),
- QU(13248530959948529780LLU), QU( 3530441401230622826LLU),
- QU(18188251992895660615LLU), QU( 1847918354186383756LLU),
- QU( 1127392190402660921LLU), QU(11293734643143819463LLU),
- QU( 3015506344578682982LLU), QU(13852645444071153329LLU),
- QU( 2121359659091349142LLU), QU( 1294604376116677694LLU),
- QU( 5616576231286352318LLU), QU( 7112502442954235625LLU),
- QU(11676228199551561689LLU), QU(12925182803007305359LLU),
- QU( 7852375518160493082LLU), QU( 1136513130539296154LLU),
- QU( 5636923900916593195LLU), QU( 3221077517612607747LLU),
- QU(17784790465798152513LLU), QU( 3554210049056995938LLU),
- QU(17476839685878225874LLU), QU( 3206836372585575732LLU),
- QU( 2765333945644823430LLU), QU(10080070903718799528LLU),
- QU( 5412370818878286353LLU), QU( 9689685887726257728LLU),
- QU( 8236117509123533998LLU), QU( 1951139137165040214LLU),
- QU( 4492205209227980349LLU), QU(16541291230861602967LLU),
- QU( 1424371548301437940LLU), QU( 9117562079669206794LLU),
- QU(14374681563251691625LLU), QU(13873164030199921303LLU),
- QU( 6680317946770936731LLU), QU(15586334026918276214LLU),
- QU(10896213950976109802LLU), QU( 9506261949596413689LLU),
- QU( 9903949574308040616LLU), QU( 6038397344557204470LLU),
- QU( 174601465422373648LLU), QU(15946141191338238030LLU),
- QU(17142225620992044937LLU), QU( 7552030283784477064LLU),
- QU( 2947372384532947997LLU), QU( 510797021688197711LLU),
- QU( 4962499439249363461LLU), QU( 23770320158385357LLU),
- QU( 959774499105138124LLU), QU( 1468396011518788276LLU),
- QU( 2015698006852312308LLU), QU( 4149400718489980136LLU),
- QU( 5992916099522371188LLU), QU(10819182935265531076LLU),
- QU(16189787999192351131LLU), QU( 342833961790261950LLU),
- QU(12470830319550495336LLU), QU(18128495041912812501LLU),
- QU( 1193600899723524337LLU), QU( 9056793666590079770LLU),
- QU( 2154021227041669041LLU), QU( 4963570213951235735LLU),
- QU( 4865075960209211409LLU), QU( 2097724599039942963LLU),
- QU( 2024080278583179845LLU), QU(11527054549196576736LLU),
- QU(10650256084182390252LLU), QU( 4808408648695766755LLU),
- QU( 1642839215013788844LLU), QU(10607187948250398390LLU),
- QU( 7076868166085913508LLU), QU( 730522571106887032LLU),
- QU(12500579240208524895LLU), QU( 4484390097311355324LLU),
- QU(15145801330700623870LLU), QU( 8055827661392944028LLU),
- QU( 5865092976832712268LLU), QU(15159212508053625143LLU),
- QU( 3560964582876483341LLU), QU( 4070052741344438280LLU),
- QU( 6032585709886855634LLU), QU(15643262320904604873LLU),
- QU( 2565119772293371111LLU), QU( 318314293065348260LLU),
- QU(15047458749141511872LLU), QU( 7772788389811528730LLU),
- QU( 7081187494343801976LLU), QU( 6465136009467253947LLU),
- QU(10425940692543362069LLU), QU( 554608190318339115LLU),
- QU(14796699860302125214LLU), QU( 1638153134431111443LLU),
- QU(10336967447052276248LLU), QU( 8412308070396592958LLU),
- QU( 4004557277152051226LLU), QU( 8143598997278774834LLU),
- QU(16413323996508783221LLU), QU(13139418758033994949LLU),
- QU( 9772709138335006667LLU), QU( 2818167159287157659LLU),
- QU(17091740573832523669LLU), QU(14629199013130751608LLU),
- QU(18268322711500338185LLU), QU( 8290963415675493063LLU),
- QU( 8830864907452542588LLU), QU( 1614839084637494849LLU),
- QU(14855358500870422231LLU), QU( 3472996748392519937LLU),
- QU(15317151166268877716LLU), QU( 5825895018698400362LLU),
- QU(16730208429367544129LLU), QU(10481156578141202800LLU),
- QU( 4746166512382823750LLU), QU(12720876014472464998LLU),
- QU( 8825177124486735972LLU), QU(13733447296837467838LLU),
- QU( 6412293741681359625LLU), QU( 8313213138756135033LLU),
- QU(11421481194803712517LLU), QU( 7997007691544174032LLU),
- QU( 6812963847917605930LLU), QU( 9683091901227558641LLU),
- QU(14703594165860324713LLU), QU( 1775476144519618309LLU),
- QU( 2724283288516469519LLU), QU( 717642555185856868LLU),
- QU( 8736402192215092346LLU), QU(11878800336431381021LLU),
- QU( 4348816066017061293LLU), QU( 6115112756583631307LLU),
- QU( 9176597239667142976LLU), QU(12615622714894259204LLU),
- QU(10283406711301385987LLU), QU( 5111762509485379420LLU),
- QU( 3118290051198688449LLU), QU( 7345123071632232145LLU),
- QU( 9176423451688682359LLU), QU( 4843865456157868971LLU),
- QU(12008036363752566088LLU), QU(12058837181919397720LLU),
- QU( 2145073958457347366LLU), QU( 1526504881672818067LLU),
- QU( 3488830105567134848LLU), QU(13208362960674805143LLU),
- QU( 4077549672899572192LLU), QU( 7770995684693818365LLU),
- QU( 1398532341546313593LLU), QU(12711859908703927840LLU),
- QU( 1417561172594446813LLU), QU(17045191024194170604LLU),
- QU( 4101933177604931713LLU), QU(14708428834203480320LLU),
- QU(17447509264469407724LLU), QU(14314821973983434255LLU),
- QU(17990472271061617265LLU), QU( 5087756685841673942LLU),
- QU(12797820586893859939LLU), QU( 1778128952671092879LLU),
- QU( 3535918530508665898LLU), QU( 9035729701042481301LLU),
- QU(14808661568277079962LLU), QU(14587345077537747914LLU),
- QU(11920080002323122708LLU), QU( 6426515805197278753LLU),
- QU( 3295612216725984831LLU), QU(11040722532100876120LLU),
- QU(12305952936387598754LLU), QU(16097391899742004253LLU),
- QU( 4908537335606182208LLU), QU(12446674552196795504LLU),
- QU(16010497855816895177LLU), QU( 9194378874788615551LLU),
- QU( 3382957529567613384LLU), QU( 5154647600754974077LLU),
- QU( 9801822865328396141LLU), QU( 9023662173919288143LLU),
- QU(17623115353825147868LLU), QU( 8238115767443015816LLU),
- QU(15811444159859002560LLU), QU( 9085612528904059661LLU),
- QU( 6888601089398614254LLU), QU( 258252992894160189LLU),
- QU( 6704363880792428622LLU), QU( 6114966032147235763LLU),
- QU(11075393882690261875LLU), QU( 8797664238933620407LLU),
- QU( 5901892006476726920LLU), QU( 5309780159285518958LLU),
- QU(14940808387240817367LLU), QU(14642032021449656698LLU),
- QU( 9808256672068504139LLU), QU( 3670135111380607658LLU),
- QU(11211211097845960152LLU), QU( 1474304506716695808LLU),
- QU(15843166204506876239LLU), QU( 7661051252471780561LLU),
- QU(10170905502249418476LLU), QU( 7801416045582028589LLU),
- QU( 2763981484737053050LLU), QU( 9491377905499253054LLU),
- QU(16201395896336915095LLU), QU( 9256513756442782198LLU),
- QU( 5411283157972456034LLU), QU( 5059433122288321676LLU),
- QU( 4327408006721123357LLU), QU( 9278544078834433377LLU),
- QU( 7601527110882281612LLU), QU(11848295896975505251LLU),
- QU(12096998801094735560LLU), QU(14773480339823506413LLU),
- QU(15586227433895802149LLU), QU(12786541257830242872LLU),
- QU( 6904692985140503067LLU), QU( 5309011515263103959LLU),
- QU(12105257191179371066LLU), QU(14654380212442225037LLU),
- QU( 2556774974190695009LLU), QU( 4461297399927600261LLU),
- QU(14888225660915118646LLU), QU(14915459341148291824LLU),
- QU( 2738802166252327631LLU), QU( 6047155789239131512LLU),
- QU(12920545353217010338LLU), QU(10697617257007840205LLU),
- QU( 2751585253158203504LLU), QU(13252729159780047496LLU),
- QU(14700326134672815469LLU), QU(14082527904374600529LLU),
- QU(16852962273496542070LLU), QU(17446675504235853907LLU),
- QU(15019600398527572311LLU), QU(12312781346344081551LLU),
- QU(14524667935039810450LLU), QU( 5634005663377195738LLU),
- QU(11375574739525000569LLU), QU( 2423665396433260040LLU),
- QU( 5222836914796015410LLU), QU( 4397666386492647387LLU),
- QU( 4619294441691707638LLU), QU( 665088602354770716LLU),
- QU(13246495665281593610LLU), QU( 6564144270549729409LLU),
- QU(10223216188145661688LLU), QU( 3961556907299230585LLU),
- QU(11543262515492439914LLU), QU(16118031437285993790LLU),
- QU( 7143417964520166465LLU), QU(13295053515909486772LLU),
- QU( 40434666004899675LLU), QU(17127804194038347164LLU),
- QU( 8599165966560586269LLU), QU( 8214016749011284903LLU),
- QU(13725130352140465239LLU), QU( 5467254474431726291LLU),
- QU( 7748584297438219877LLU), QU(16933551114829772472LLU),
- QU( 2169618439506799400LLU), QU( 2169787627665113463LLU),
- QU(17314493571267943764LLU), QU(18053575102911354912LLU),
- QU(11928303275378476973LLU), QU(11593850925061715550LLU),
- QU(17782269923473589362LLU), QU( 3280235307704747039LLU),
- QU( 6145343578598685149LLU), QU(17080117031114086090LLU),
- QU(18066839902983594755LLU), QU( 6517508430331020706LLU),
- QU( 8092908893950411541LLU), QU(12558378233386153732LLU),
- QU( 4476532167973132976LLU), QU(16081642430367025016LLU),
- QU( 4233154094369139361LLU), QU( 8693630486693161027LLU),
- QU(11244959343027742285LLU), QU(12273503967768513508LLU),
- QU(14108978636385284876LLU), QU( 7242414665378826984LLU),
- QU( 6561316938846562432LLU), QU( 8601038474994665795LLU),
- QU(17532942353612365904LLU), QU(17940076637020912186LLU),
- QU( 7340260368823171304LLU), QU( 7061807613916067905LLU),
- QU(10561734935039519326LLU), QU(17990796503724650862LLU),
- QU( 6208732943911827159LLU), QU( 359077562804090617LLU),
- QU(14177751537784403113LLU), QU(10659599444915362902LLU),
- QU(15081727220615085833LLU), QU(13417573895659757486LLU),
- QU(15513842342017811524LLU), QU(11814141516204288231LLU),
- QU( 1827312513875101814LLU), QU( 2804611699894603103LLU),
- QU(17116500469975602763LLU), QU(12270191815211952087LLU),
- QU(12256358467786024988LLU), QU(18435021722453971267LLU),
- QU( 671330264390865618LLU), QU( 476504300460286050LLU),
- QU(16465470901027093441LLU), QU( 4047724406247136402LLU),
- QU( 1322305451411883346LLU), QU( 1388308688834322280LLU),
- QU( 7303989085269758176LLU), QU( 9323792664765233642LLU),
- QU( 4542762575316368936LLU), QU(17342696132794337618LLU),
- QU( 4588025054768498379LLU), QU(13415475057390330804LLU),
- QU(17880279491733405570LLU), QU(10610553400618620353LLU),
- QU( 3180842072658960139LLU), QU(13002966655454270120LLU),
- QU( 1665301181064982826LLU), QU( 7083673946791258979LLU),
- QU( 190522247122496820LLU), QU(17388280237250677740LLU),
- QU( 8430770379923642945LLU), QU(12987180971921668584LLU),
- QU( 2311086108365390642LLU), QU( 2870984383579822345LLU),
- QU(14014682609164653318LLU), QU(14467187293062251484LLU),
- QU( 192186361147413298LLU), QU(15171951713531796524LLU),
- QU( 9900305495015948728LLU), QU(17958004775615466344LLU),
- QU(14346380954498606514LLU), QU(18040047357617407096LLU),
- QU( 5035237584833424532LLU), QU(15089555460613972287LLU),
- QU( 4131411873749729831LLU), QU( 1329013581168250330LLU),
- QU(10095353333051193949LLU), QU(10749518561022462716LLU),
- QU( 9050611429810755847LLU), QU(15022028840236655649LLU),
- QU( 8775554279239748298LLU), QU(13105754025489230502LLU),
- QU(15471300118574167585LLU), QU( 89864764002355628LLU),
- QU( 8776416323420466637LLU), QU( 5280258630612040891LLU),
- QU( 2719174488591862912LLU), QU( 7599309137399661994LLU),
- QU(15012887256778039979LLU), QU(14062981725630928925LLU),
- QU(12038536286991689603LLU), QU( 7089756544681775245LLU),
- QU(10376661532744718039LLU), QU( 1265198725901533130LLU),
- QU(13807996727081142408LLU), QU( 2935019626765036403LLU),
- QU( 7651672460680700141LLU), QU( 3644093016200370795LLU),
- QU( 2840982578090080674LLU), QU(17956262740157449201LLU),
- QU(18267979450492880548LLU), QU(11799503659796848070LLU),
- QU( 9942537025669672388LLU), QU(11886606816406990297LLU),
- QU( 5488594946437447576LLU), QU( 7226714353282744302LLU),
- QU( 3784851653123877043LLU), QU( 878018453244803041LLU),
- QU(12110022586268616085LLU), QU( 734072179404675123LLU),
- QU(11869573627998248542LLU), QU( 469150421297783998LLU),
- QU( 260151124912803804LLU), QU(11639179410120968649LLU),
- QU( 9318165193840846253LLU), QU(12795671722734758075LLU),
- QU(15318410297267253933LLU), QU( 691524703570062620LLU),
- QU( 5837129010576994601LLU), QU(15045963859726941052LLU),
- QU( 5850056944932238169LLU), QU(12017434144750943807LLU),
- QU( 7447139064928956574LLU), QU( 3101711812658245019LLU),
- QU(16052940704474982954LLU), QU(18195745945986994042LLU),
- QU( 8932252132785575659LLU), QU(13390817488106794834LLU),
- QU(11582771836502517453LLU), QU( 4964411326683611686LLU),
- QU( 2195093981702694011LLU), QU(14145229538389675669LLU),
- QU(16459605532062271798LLU), QU( 866316924816482864LLU),
- QU( 4593041209937286377LLU), QU( 8415491391910972138LLU),
- QU( 4171236715600528969LLU), QU(16637569303336782889LLU),
- QU( 2002011073439212680LLU), QU(17695124661097601411LLU),
- QU( 4627687053598611702LLU), QU( 7895831936020190403LLU),
- QU( 8455951300917267802LLU), QU( 2923861649108534854LLU),
- QU( 8344557563927786255LLU), QU( 6408671940373352556LLU),
- QU(12210227354536675772LLU), QU(14294804157294222295LLU),
- QU(10103022425071085127LLU), QU(10092959489504123771LLU),
- QU( 6554774405376736268LLU), QU(12629917718410641774LLU),
- QU( 6260933257596067126LLU), QU( 2460827021439369673LLU),
- QU( 2541962996717103668LLU), QU( 597377203127351475LLU),
- QU( 5316984203117315309LLU), QU( 4811211393563241961LLU),
- QU(13119698597255811641LLU), QU( 8048691512862388981LLU),
- QU(10216818971194073842LLU), QU( 4612229970165291764LLU),
- QU(10000980798419974770LLU), QU( 6877640812402540687LLU),
- QU( 1488727563290436992LLU), QU( 2227774069895697318LLU),
- QU(11237754507523316593LLU), QU(13478948605382290972LLU),
- QU( 1963583846976858124LLU), QU( 5512309205269276457LLU),
- QU( 3972770164717652347LLU), QU( 3841751276198975037LLU),
- QU(10283343042181903117LLU), QU( 8564001259792872199LLU),
- QU(16472187244722489221LLU), QU( 8953493499268945921LLU),
- QU( 3518747340357279580LLU), QU( 4003157546223963073LLU),
- QU( 3270305958289814590LLU), QU( 3966704458129482496LLU),
- QU( 8122141865926661939LLU), QU(14627734748099506653LLU),
- QU(13064426990862560568LLU), QU( 2414079187889870829LLU),
- QU( 5378461209354225306LLU), QU(10841985740128255566LLU),
- QU( 538582442885401738LLU), QU( 7535089183482905946LLU),
- QU(16117559957598879095LLU), QU( 8477890721414539741LLU),
- QU( 1459127491209533386LLU), QU(17035126360733620462LLU),
- QU( 8517668552872379126LLU), QU(10292151468337355014LLU),
- QU(17081267732745344157LLU), QU(13751455337946087178LLU),
- QU(14026945459523832966LLU), QU( 6653278775061723516LLU),
- QU(10619085543856390441LLU), QU( 2196343631481122885LLU),
- QU(10045966074702826136LLU), QU(10082317330452718282LLU),
- QU( 5920859259504831242LLU), QU( 9951879073426540617LLU),
- QU( 7074696649151414158LLU), QU(15808193543879464318LLU),
- QU( 7385247772746953374LLU), QU( 3192003544283864292LLU),
- QU(18153684490917593847LLU), QU(12423498260668568905LLU),
- QU(10957758099756378169LLU), QU(11488762179911016040LLU),
- QU( 2099931186465333782LLU), QU(11180979581250294432LLU),
- QU( 8098916250668367933LLU), QU( 3529200436790763465LLU),
- QU(12988418908674681745LLU), QU( 6147567275954808580LLU),
- QU( 3207503344604030989LLU), QU(10761592604898615360LLU),
- QU( 229854861031893504LLU), QU( 8809853962667144291LLU),
- QU(13957364469005693860LLU), QU( 7634287665224495886LLU),
- QU(12353487366976556874LLU), QU( 1134423796317152034LLU),
- QU( 2088992471334107068LLU), QU( 7393372127190799698LLU),
- QU( 1845367839871058391LLU), QU( 207922563987322884LLU),
- QU(11960870813159944976LLU), QU(12182120053317317363LLU),
- QU(17307358132571709283LLU), QU(13871081155552824936LLU),
- QU(18304446751741566262LLU), QU( 7178705220184302849LLU),
- QU(10929605677758824425LLU), QU(16446976977835806844LLU),
- QU(13723874412159769044LLU), QU( 6942854352100915216LLU),
- QU( 1726308474365729390LLU), QU( 2150078766445323155LLU),
- QU(15345558947919656626LLU), QU(12145453828874527201LLU),
- QU( 2054448620739726849LLU), QU( 2740102003352628137LLU),
- QU(11294462163577610655LLU), QU( 756164283387413743LLU),
- QU(17841144758438810880LLU), QU(10802406021185415861LLU),
- QU( 8716455530476737846LLU), QU( 6321788834517649606LLU),
- QU(14681322910577468426LLU), QU(17330043563884336387LLU),
- QU(12701802180050071614LLU), QU(14695105111079727151LLU),
- QU( 5112098511654172830LLU), QU( 4957505496794139973LLU),
- QU( 8270979451952045982LLU), QU(12307685939199120969LLU),
- QU(12425799408953443032LLU), QU( 8376410143634796588LLU),
- QU(16621778679680060464LLU), QU( 3580497854566660073LLU),
- QU( 1122515747803382416LLU), QU( 857664980960597599LLU),
- QU( 6343640119895925918LLU), QU(12878473260854462891LLU),
- QU(10036813920765722626LLU), QU(14451335468363173812LLU),
- QU( 5476809692401102807LLU), QU(16442255173514366342LLU),
- QU(13060203194757167104LLU), QU(14354124071243177715LLU),
- QU(15961249405696125227LLU), QU(13703893649690872584LLU),
- QU( 363907326340340064LLU), QU( 6247455540491754842LLU),
- QU(12242249332757832361LLU), QU( 156065475679796717LLU),
- QU( 9351116235749732355LLU), QU( 4590350628677701405LLU),
- QU( 1671195940982350389LLU), QU(13501398458898451905LLU),
- QU( 6526341991225002255LLU), QU( 1689782913778157592LLU),
- QU( 7439222350869010334LLU), QU(13975150263226478308LLU),
- QU(11411961169932682710LLU), QU(17204271834833847277LLU),
- QU( 541534742544435367LLU), QU( 6591191931218949684LLU),
- QU( 2645454775478232486LLU), QU( 4322857481256485321LLU),
- QU( 8477416487553065110LLU), QU(12902505428548435048LLU),
- QU( 971445777981341415LLU), QU(14995104682744976712LLU),
- QU( 4243341648807158063LLU), QU( 8695061252721927661LLU),
- QU( 5028202003270177222LLU), QU( 2289257340915567840LLU),
- QU(13870416345121866007LLU), QU(13994481698072092233LLU),
- QU( 6912785400753196481LLU), QU( 2278309315841980139LLU),
- QU( 4329765449648304839LLU), QU( 5963108095785485298LLU),
- QU( 4880024847478722478LLU), QU(16015608779890240947LLU),
- QU( 1866679034261393544LLU), QU( 914821179919731519LLU),
- QU( 9643404035648760131LLU), QU( 2418114953615593915LLU),
- QU( 944756836073702374LLU), QU(15186388048737296834LLU),
- QU( 7723355336128442206LLU), QU( 7500747479679599691LLU),
- QU(18013961306453293634LLU), QU( 2315274808095756456LLU),
- QU(13655308255424029566LLU), QU(17203800273561677098LLU),
- QU( 1382158694422087756LLU), QU( 5090390250309588976LLU),
- QU( 517170818384213989LLU), QU( 1612709252627729621LLU),
- QU( 1330118955572449606LLU), QU( 300922478056709885LLU),
- QU(18115693291289091987LLU), QU(13491407109725238321LLU),
- QU(15293714633593827320LLU), QU( 5151539373053314504LLU),
- QU( 5951523243743139207LLU), QU(14459112015249527975LLU),
- QU( 5456113959000700739LLU), QU( 3877918438464873016LLU),
- QU(12534071654260163555LLU), QU(15871678376893555041LLU),
- QU(11005484805712025549LLU), QU(16353066973143374252LLU),
- QU( 4358331472063256685LLU), QU( 8268349332210859288LLU),
- QU(12485161590939658075LLU), QU(13955993592854471343LLU),
- QU( 5911446886848367039LLU), QU(14925834086813706974LLU),
- QU( 6590362597857994805LLU), QU( 1280544923533661875LLU),
- QU( 1637756018947988164LLU), QU( 4734090064512686329LLU),
- QU(16693705263131485912LLU), QU( 6834882340494360958LLU),
- QU( 8120732176159658505LLU), QU( 2244371958905329346LLU),
- QU(10447499707729734021LLU), QU( 7318742361446942194LLU),
- QU( 8032857516355555296LLU), QU(14023605983059313116LLU),
- QU( 1032336061815461376LLU), QU( 9840995337876562612LLU),
- QU( 9869256223029203587LLU), QU(12227975697177267636LLU),
- QU(12728115115844186033LLU), QU( 7752058479783205470LLU),
- QU( 729733219713393087LLU), QU(12954017801239007622LLU)
+ KQU(16924766246869039260), KQU( 8201438687333352714),
+ KQU( 2265290287015001750), KQU(18397264611805473832),
+ KQU( 3375255223302384358), KQU( 6345559975416828796),
+ KQU(18229739242790328073), KQU( 7596792742098800905),
+ KQU( 255338647169685981), KQU( 2052747240048610300),
+ KQU(18328151576097299343), KQU(12472905421133796567),
+ KQU(11315245349717600863), KQU(16594110197775871209),
+ KQU(15708751964632456450), KQU(10452031272054632535),
+ KQU(11097646720811454386), KQU( 4556090668445745441),
+ KQU(17116187693090663106), KQU(14931526836144510645),
+ KQU( 9190752218020552591), KQU( 9625800285771901401),
+ KQU(13995141077659972832), KQU( 5194209094927829625),
+ KQU( 4156788379151063303), KQU( 8523452593770139494),
+ KQU(14082382103049296727), KQU( 2462601863986088483),
+ KQU( 3030583461592840678), KQU( 5221622077872827681),
+ KQU( 3084210671228981236), KQU(13956758381389953823),
+ KQU(13503889856213423831), KQU(15696904024189836170),
+ KQU( 4612584152877036206), KQU( 6231135538447867881),
+ KQU(10172457294158869468), KQU( 6452258628466708150),
+ KQU(14044432824917330221), KQU( 370168364480044279),
+ KQU(10102144686427193359), KQU( 667870489994776076),
+ KQU( 2732271956925885858), KQU(18027788905977284151),
+ KQU(15009842788582923859), KQU( 7136357960180199542),
+ KQU(15901736243475578127), KQU(16951293785352615701),
+ KQU(10551492125243691632), KQU(17668869969146434804),
+ KQU(13646002971174390445), KQU( 9804471050759613248),
+ KQU( 5511670439655935493), KQU(18103342091070400926),
+ KQU(17224512747665137533), KQU(15534627482992618168),
+ KQU( 1423813266186582647), KQU(15821176807932930024),
+ KQU( 30323369733607156), KQU(11599382494723479403),
+ KQU( 653856076586810062), KQU( 3176437395144899659),
+ KQU(14028076268147963917), KQU(16156398271809666195),
+ KQU( 3166955484848201676), KQU( 5746805620136919390),
+ KQU(17297845208891256593), KQU(11691653183226428483),
+ KQU(17900026146506981577), KQU(15387382115755971042),
+ KQU(16923567681040845943), KQU( 8039057517199388606),
+ KQU(11748409241468629263), KQU( 794358245539076095),
+ KQU(13438501964693401242), KQU(14036803236515618962),
+ KQU( 5252311215205424721), KQU(17806589612915509081),
+ KQU( 6802767092397596006), KQU(14212120431184557140),
+ KQU( 1072951366761385712), KQU(13098491780722836296),
+ KQU( 9466676828710797353), KQU(12673056849042830081),
+ KQU(12763726623645357580), KQU(16468961652999309493),
+ KQU(15305979875636438926), KQU(17444713151223449734),
+ KQU( 5692214267627883674), KQU(13049589139196151505),
+ KQU( 880115207831670745), KQU( 1776529075789695498),
+ KQU(16695225897801466485), KQU(10666901778795346845),
+ KQU( 6164389346722833869), KQU( 2863817793264300475),
+ KQU( 9464049921886304754), KQU( 3993566636740015468),
+ KQU( 9983749692528514136), KQU(16375286075057755211),
+ KQU(16042643417005440820), KQU(11445419662923489877),
+ KQU( 7999038846885158836), KQU( 6721913661721511535),
+ KQU( 5363052654139357320), KQU( 1817788761173584205),
+ KQU(13290974386445856444), KQU( 4650350818937984680),
+ KQU( 8219183528102484836), KQU( 1569862923500819899),
+ KQU( 4189359732136641860), KQU(14202822961683148583),
+ KQU( 4457498315309429058), KQU(13089067387019074834),
+ KQU(11075517153328927293), KQU(10277016248336668389),
+ KQU( 7070509725324401122), KQU(17808892017780289380),
+ KQU(13143367339909287349), KQU( 1377743745360085151),
+ KQU( 5749341807421286485), KQU(14832814616770931325),
+ KQU( 7688820635324359492), KQU(10960474011539770045),
+ KQU( 81970066653179790), KQU(12619476072607878022),
+ KQU( 4419566616271201744), KQU(15147917311750568503),
+ KQU( 5549739182852706345), KQU( 7308198397975204770),
+ KQU(13580425496671289278), KQU(17070764785210130301),
+ KQU( 8202832846285604405), KQU( 6873046287640887249),
+ KQU( 6927424434308206114), KQU( 6139014645937224874),
+ KQU(10290373645978487639), KQU(15904261291701523804),
+ KQU( 9628743442057826883), KQU(18383429096255546714),
+ KQU( 4977413265753686967), KQU( 7714317492425012869),
+ KQU( 9025232586309926193), KQU(14627338359776709107),
+ KQU(14759849896467790763), KQU(10931129435864423252),
+ KQU( 4588456988775014359), KQU(10699388531797056724),
+ KQU( 468652268869238792), KQU( 5755943035328078086),
+ KQU( 2102437379988580216), KQU( 9986312786506674028),
+ KQU( 2654207180040945604), KQU( 8726634790559960062),
+ KQU( 100497234871808137), KQU( 2800137176951425819),
+ KQU( 6076627612918553487), KQU( 5780186919186152796),
+ KQU( 8179183595769929098), KQU( 6009426283716221169),
+ KQU( 2796662551397449358), KQU( 1756961367041986764),
+ KQU( 6972897917355606205), KQU(14524774345368968243),
+ KQU( 2773529684745706940), KQU( 4853632376213075959),
+ KQU( 4198177923731358102), KQU( 8271224913084139776),
+ KQU( 2741753121611092226), KQU(16782366145996731181),
+ KQU(15426125238972640790), KQU(13595497100671260342),
+ KQU( 3173531022836259898), KQU( 6573264560319511662),
+ KQU(18041111951511157441), KQU( 2351433581833135952),
+ KQU( 3113255578908173487), KQU( 1739371330877858784),
+ KQU(16046126562789165480), KQU( 8072101652214192925),
+ KQU(15267091584090664910), KQU( 9309579200403648940),
+ KQU( 5218892439752408722), KQU(14492477246004337115),
+ KQU(17431037586679770619), KQU( 7385248135963250480),
+ KQU( 9580144956565560660), KQU( 4919546228040008720),
+ KQU(15261542469145035584), KQU(18233297270822253102),
+ KQU( 5453248417992302857), KQU( 9309519155931460285),
+ KQU(10342813012345291756), KQU(15676085186784762381),
+ KQU(15912092950691300645), KQU( 9371053121499003195),
+ KQU( 9897186478226866746), KQU(14061858287188196327),
+ KQU( 122575971620788119), KQU(12146750969116317754),
+ KQU( 4438317272813245201), KQU( 8332576791009527119),
+ KQU(13907785691786542057), KQU(10374194887283287467),
+ KQU( 2098798755649059566), KQU( 3416235197748288894),
+ KQU( 8688269957320773484), KQU( 7503964602397371571),
+ KQU(16724977015147478236), KQU( 9461512855439858184),
+ KQU(13259049744534534727), KQU( 3583094952542899294),
+ KQU( 8764245731305528292), KQU(13240823595462088985),
+ KQU(13716141617617910448), KQU(18114969519935960955),
+ KQU( 2297553615798302206), KQU( 4585521442944663362),
+ KQU(17776858680630198686), KQU( 4685873229192163363),
+ KQU( 152558080671135627), KQU(15424900540842670088),
+ KQU(13229630297130024108), KQU(17530268788245718717),
+ KQU(16675633913065714144), KQU( 3158912717897568068),
+ KQU(15399132185380087288), KQU( 7401418744515677872),
+ KQU(13135412922344398535), KQU( 6385314346100509511),
+ KQU(13962867001134161139), KQU(10272780155442671999),
+ KQU(12894856086597769142), KQU(13340877795287554994),
+ KQU(12913630602094607396), KQU(12543167911119793857),
+ KQU(17343570372251873096), KQU(10959487764494150545),
+ KQU( 6966737953093821128), KQU(13780699135496988601),
+ KQU( 4405070719380142046), KQU(14923788365607284982),
+ KQU( 2869487678905148380), KQU( 6416272754197188403),
+ KQU(15017380475943612591), KQU( 1995636220918429487),
+ KQU( 3402016804620122716), KQU(15800188663407057080),
+ KQU(11362369990390932882), KQU(15262183501637986147),
+ KQU(10239175385387371494), KQU( 9352042420365748334),
+ KQU( 1682457034285119875), KQU( 1724710651376289644),
+ KQU( 2038157098893817966), KQU( 9897825558324608773),
+ KQU( 1477666236519164736), KQU(16835397314511233640),
+ KQU(10370866327005346508), KQU(10157504370660621982),
+ KQU(12113904045335882069), KQU(13326444439742783008),
+ KQU(11302769043000765804), KQU(13594979923955228484),
+ KQU(11779351762613475968), KQU( 3786101619539298383),
+ KQU( 8021122969180846063), KQU(15745904401162500495),
+ KQU(10762168465993897267), KQU(13552058957896319026),
+ KQU(11200228655252462013), KQU( 5035370357337441226),
+ KQU( 7593918984545500013), KQU( 5418554918361528700),
+ KQU( 4858270799405446371), KQU( 9974659566876282544),
+ KQU(18227595922273957859), KQU( 2772778443635656220),
+ KQU(14285143053182085385), KQU( 9939700992429600469),
+ KQU(12756185904545598068), KQU( 2020783375367345262),
+ KQU( 57026775058331227), KQU( 950827867930065454),
+ KQU( 6602279670145371217), KQU( 2291171535443566929),
+ KQU( 5832380724425010313), KQU( 1220343904715982285),
+ KQU(17045542598598037633), KQU(15460481779702820971),
+ KQU(13948388779949365130), KQU(13975040175430829518),
+ KQU(17477538238425541763), KQU(11104663041851745725),
+ KQU(15860992957141157587), KQU(14529434633012950138),
+ KQU( 2504838019075394203), KQU( 7512113882611121886),
+ KQU( 4859973559980886617), KQU( 1258601555703250219),
+ KQU(15594548157514316394), KQU( 4516730171963773048),
+ KQU(11380103193905031983), KQU( 6809282239982353344),
+ KQU(18045256930420065002), KQU( 2453702683108791859),
+ KQU( 977214582986981460), KQU( 2006410402232713466),
+ KQU( 6192236267216378358), KQU( 3429468402195675253),
+ KQU(18146933153017348921), KQU(17369978576367231139),
+ KQU( 1246940717230386603), KQU(11335758870083327110),
+ KQU(14166488801730353682), KQU( 9008573127269635732),
+ KQU(10776025389820643815), KQU(15087605441903942962),
+ KQU( 1359542462712147922), KQU(13898874411226454206),
+ KQU(17911176066536804411), KQU( 9435590428600085274),
+ KQU( 294488509967864007), KQU( 8890111397567922046),
+ KQU( 7987823476034328778), KQU(13263827582440967651),
+ KQU( 7503774813106751573), KQU(14974747296185646837),
+ KQU( 8504765037032103375), KQU(17340303357444536213),
+ KQU( 7704610912964485743), KQU( 8107533670327205061),
+ KQU( 9062969835083315985), KQU(16968963142126734184),
+ KQU(12958041214190810180), KQU( 2720170147759570200),
+ KQU( 2986358963942189566), KQU(14884226322219356580),
+ KQU( 286224325144368520), KQU(11313800433154279797),
+ KQU(18366849528439673248), KQU(17899725929482368789),
+ KQU( 3730004284609106799), KQU( 1654474302052767205),
+ KQU( 5006698007047077032), KQU( 8196893913601182838),
+ KQU(15214541774425211640), KQU(17391346045606626073),
+ KQU( 8369003584076969089), KQU( 3939046733368550293),
+ KQU(10178639720308707785), KQU( 2180248669304388697),
+ KQU( 62894391300126322), KQU( 9205708961736223191),
+ KQU( 6837431058165360438), KQU( 3150743890848308214),
+ KQU(17849330658111464583), KQU(12214815643135450865),
+ KQU(13410713840519603402), KQU( 3200778126692046802),
+ KQU(13354780043041779313), KQU( 800850022756886036),
+ KQU(15660052933953067433), KQU( 6572823544154375676),
+ KQU(11030281857015819266), KQU(12682241941471433835),
+ KQU(11654136407300274693), KQU( 4517795492388641109),
+ KQU( 9757017371504524244), KQU(17833043400781889277),
+ KQU(12685085201747792227), KQU(10408057728835019573),
+ KQU( 98370418513455221), KQU( 6732663555696848598),
+ KQU(13248530959948529780), KQU( 3530441401230622826),
+ KQU(18188251992895660615), KQU( 1847918354186383756),
+ KQU( 1127392190402660921), KQU(11293734643143819463),
+ KQU( 3015506344578682982), KQU(13852645444071153329),
+ KQU( 2121359659091349142), KQU( 1294604376116677694),
+ KQU( 5616576231286352318), KQU( 7112502442954235625),
+ KQU(11676228199551561689), KQU(12925182803007305359),
+ KQU( 7852375518160493082), KQU( 1136513130539296154),
+ KQU( 5636923900916593195), KQU( 3221077517612607747),
+ KQU(17784790465798152513), KQU( 3554210049056995938),
+ KQU(17476839685878225874), KQU( 3206836372585575732),
+ KQU( 2765333945644823430), KQU(10080070903718799528),
+ KQU( 5412370818878286353), KQU( 9689685887726257728),
+ KQU( 8236117509123533998), KQU( 1951139137165040214),
+ KQU( 4492205209227980349), KQU(16541291230861602967),
+ KQU( 1424371548301437940), KQU( 9117562079669206794),
+ KQU(14374681563251691625), KQU(13873164030199921303),
+ KQU( 6680317946770936731), KQU(15586334026918276214),
+ KQU(10896213950976109802), KQU( 9506261949596413689),
+ KQU( 9903949574308040616), KQU( 6038397344557204470),
+ KQU( 174601465422373648), KQU(15946141191338238030),
+ KQU(17142225620992044937), KQU( 7552030283784477064),
+ KQU( 2947372384532947997), KQU( 510797021688197711),
+ KQU( 4962499439249363461), KQU( 23770320158385357),
+ KQU( 959774499105138124), KQU( 1468396011518788276),
+ KQU( 2015698006852312308), KQU( 4149400718489980136),
+ KQU( 5992916099522371188), KQU(10819182935265531076),
+ KQU(16189787999192351131), KQU( 342833961790261950),
+ KQU(12470830319550495336), KQU(18128495041912812501),
+ KQU( 1193600899723524337), KQU( 9056793666590079770),
+ KQU( 2154021227041669041), KQU( 4963570213951235735),
+ KQU( 4865075960209211409), KQU( 2097724599039942963),
+ KQU( 2024080278583179845), KQU(11527054549196576736),
+ KQU(10650256084182390252), KQU( 4808408648695766755),
+ KQU( 1642839215013788844), KQU(10607187948250398390),
+ KQU( 7076868166085913508), KQU( 730522571106887032),
+ KQU(12500579240208524895), KQU( 4484390097311355324),
+ KQU(15145801330700623870), KQU( 8055827661392944028),
+ KQU( 5865092976832712268), KQU(15159212508053625143),
+ KQU( 3560964582876483341), KQU( 4070052741344438280),
+ KQU( 6032585709886855634), KQU(15643262320904604873),
+ KQU( 2565119772293371111), KQU( 318314293065348260),
+ KQU(15047458749141511872), KQU( 7772788389811528730),
+ KQU( 7081187494343801976), KQU( 6465136009467253947),
+ KQU(10425940692543362069), KQU( 554608190318339115),
+ KQU(14796699860302125214), KQU( 1638153134431111443),
+ KQU(10336967447052276248), KQU( 8412308070396592958),
+ KQU( 4004557277152051226), KQU( 8143598997278774834),
+ KQU(16413323996508783221), KQU(13139418758033994949),
+ KQU( 9772709138335006667), KQU( 2818167159287157659),
+ KQU(17091740573832523669), KQU(14629199013130751608),
+ KQU(18268322711500338185), KQU( 8290963415675493063),
+ KQU( 8830864907452542588), KQU( 1614839084637494849),
+ KQU(14855358500870422231), KQU( 3472996748392519937),
+ KQU(15317151166268877716), KQU( 5825895018698400362),
+ KQU(16730208429367544129), KQU(10481156578141202800),
+ KQU( 4746166512382823750), KQU(12720876014472464998),
+ KQU( 8825177124486735972), KQU(13733447296837467838),
+ KQU( 6412293741681359625), KQU( 8313213138756135033),
+ KQU(11421481194803712517), KQU( 7997007691544174032),
+ KQU( 6812963847917605930), KQU( 9683091901227558641),
+ KQU(14703594165860324713), KQU( 1775476144519618309),
+ KQU( 2724283288516469519), KQU( 717642555185856868),
+ KQU( 8736402192215092346), KQU(11878800336431381021),
+ KQU( 4348816066017061293), KQU( 6115112756583631307),
+ KQU( 9176597239667142976), KQU(12615622714894259204),
+ KQU(10283406711301385987), KQU( 5111762509485379420),
+ KQU( 3118290051198688449), KQU( 7345123071632232145),
+ KQU( 9176423451688682359), KQU( 4843865456157868971),
+ KQU(12008036363752566088), KQU(12058837181919397720),
+ KQU( 2145073958457347366), KQU( 1526504881672818067),
+ KQU( 3488830105567134848), KQU(13208362960674805143),
+ KQU( 4077549672899572192), KQU( 7770995684693818365),
+ KQU( 1398532341546313593), KQU(12711859908703927840),
+ KQU( 1417561172594446813), KQU(17045191024194170604),
+ KQU( 4101933177604931713), KQU(14708428834203480320),
+ KQU(17447509264469407724), KQU(14314821973983434255),
+ KQU(17990472271061617265), KQU( 5087756685841673942),
+ KQU(12797820586893859939), KQU( 1778128952671092879),
+ KQU( 3535918530508665898), KQU( 9035729701042481301),
+ KQU(14808661568277079962), KQU(14587345077537747914),
+ KQU(11920080002323122708), KQU( 6426515805197278753),
+ KQU( 3295612216725984831), KQU(11040722532100876120),
+ KQU(12305952936387598754), KQU(16097391899742004253),
+ KQU( 4908537335606182208), KQU(12446674552196795504),
+ KQU(16010497855816895177), KQU( 9194378874788615551),
+ KQU( 3382957529567613384), KQU( 5154647600754974077),
+ KQU( 9801822865328396141), KQU( 9023662173919288143),
+ KQU(17623115353825147868), KQU( 8238115767443015816),
+ KQU(15811444159859002560), KQU( 9085612528904059661),
+ KQU( 6888601089398614254), KQU( 258252992894160189),
+ KQU( 6704363880792428622), KQU( 6114966032147235763),
+ KQU(11075393882690261875), KQU( 8797664238933620407),
+ KQU( 5901892006476726920), KQU( 5309780159285518958),
+ KQU(14940808387240817367), KQU(14642032021449656698),
+ KQU( 9808256672068504139), KQU( 3670135111380607658),
+ KQU(11211211097845960152), KQU( 1474304506716695808),
+ KQU(15843166204506876239), KQU( 7661051252471780561),
+ KQU(10170905502249418476), KQU( 7801416045582028589),
+ KQU( 2763981484737053050), KQU( 9491377905499253054),
+ KQU(16201395896336915095), KQU( 9256513756442782198),
+ KQU( 5411283157972456034), KQU( 5059433122288321676),
+ KQU( 4327408006721123357), KQU( 9278544078834433377),
+ KQU( 7601527110882281612), KQU(11848295896975505251),
+ KQU(12096998801094735560), KQU(14773480339823506413),
+ KQU(15586227433895802149), KQU(12786541257830242872),
+ KQU( 6904692985140503067), KQU( 5309011515263103959),
+ KQU(12105257191179371066), KQU(14654380212442225037),
+ KQU( 2556774974190695009), KQU( 4461297399927600261),
+ KQU(14888225660915118646), KQU(14915459341148291824),
+ KQU( 2738802166252327631), KQU( 6047155789239131512),
+ KQU(12920545353217010338), KQU(10697617257007840205),
+ KQU( 2751585253158203504), KQU(13252729159780047496),
+ KQU(14700326134672815469), KQU(14082527904374600529),
+ KQU(16852962273496542070), KQU(17446675504235853907),
+ KQU(15019600398527572311), KQU(12312781346344081551),
+ KQU(14524667935039810450), KQU( 5634005663377195738),
+ KQU(11375574739525000569), KQU( 2423665396433260040),
+ KQU( 5222836914796015410), KQU( 4397666386492647387),
+ KQU( 4619294441691707638), KQU( 665088602354770716),
+ KQU(13246495665281593610), KQU( 6564144270549729409),
+ KQU(10223216188145661688), KQU( 3961556907299230585),
+ KQU(11543262515492439914), KQU(16118031437285993790),
+ KQU( 7143417964520166465), KQU(13295053515909486772),
+ KQU( 40434666004899675), KQU(17127804194038347164),
+ KQU( 8599165966560586269), KQU( 8214016749011284903),
+ KQU(13725130352140465239), KQU( 5467254474431726291),
+ KQU( 7748584297438219877), KQU(16933551114829772472),
+ KQU( 2169618439506799400), KQU( 2169787627665113463),
+ KQU(17314493571267943764), KQU(18053575102911354912),
+ KQU(11928303275378476973), KQU(11593850925061715550),
+ KQU(17782269923473589362), KQU( 3280235307704747039),
+ KQU( 6145343578598685149), KQU(17080117031114086090),
+ KQU(18066839902983594755), KQU( 6517508430331020706),
+ KQU( 8092908893950411541), KQU(12558378233386153732),
+ KQU( 4476532167973132976), KQU(16081642430367025016),
+ KQU( 4233154094369139361), KQU( 8693630486693161027),
+ KQU(11244959343027742285), KQU(12273503967768513508),
+ KQU(14108978636385284876), KQU( 7242414665378826984),
+ KQU( 6561316938846562432), KQU( 8601038474994665795),
+ KQU(17532942353612365904), KQU(17940076637020912186),
+ KQU( 7340260368823171304), KQU( 7061807613916067905),
+ KQU(10561734935039519326), KQU(17990796503724650862),
+ KQU( 6208732943911827159), KQU( 359077562804090617),
+ KQU(14177751537784403113), KQU(10659599444915362902),
+ KQU(15081727220615085833), KQU(13417573895659757486),
+ KQU(15513842342017811524), KQU(11814141516204288231),
+ KQU( 1827312513875101814), KQU( 2804611699894603103),
+ KQU(17116500469975602763), KQU(12270191815211952087),
+ KQU(12256358467786024988), KQU(18435021722453971267),
+ KQU( 671330264390865618), KQU( 476504300460286050),
+ KQU(16465470901027093441), KQU( 4047724406247136402),
+ KQU( 1322305451411883346), KQU( 1388308688834322280),
+ KQU( 7303989085269758176), KQU( 9323792664765233642),
+ KQU( 4542762575316368936), KQU(17342696132794337618),
+ KQU( 4588025054768498379), KQU(13415475057390330804),
+ KQU(17880279491733405570), KQU(10610553400618620353),
+ KQU( 3180842072658960139), KQU(13002966655454270120),
+ KQU( 1665301181064982826), KQU( 7083673946791258979),
+ KQU( 190522247122496820), KQU(17388280237250677740),
+ KQU( 8430770379923642945), KQU(12987180971921668584),
+ KQU( 2311086108365390642), KQU( 2870984383579822345),
+ KQU(14014682609164653318), KQU(14467187293062251484),
+ KQU( 192186361147413298), KQU(15171951713531796524),
+ KQU( 9900305495015948728), KQU(17958004775615466344),
+ KQU(14346380954498606514), KQU(18040047357617407096),
+ KQU( 5035237584833424532), KQU(15089555460613972287),
+ KQU( 4131411873749729831), KQU( 1329013581168250330),
+ KQU(10095353333051193949), KQU(10749518561022462716),
+ KQU( 9050611429810755847), KQU(15022028840236655649),
+ KQU( 8775554279239748298), KQU(13105754025489230502),
+ KQU(15471300118574167585), KQU( 89864764002355628),
+ KQU( 8776416323420466637), KQU( 5280258630612040891),
+ KQU( 2719174488591862912), KQU( 7599309137399661994),
+ KQU(15012887256778039979), KQU(14062981725630928925),
+ KQU(12038536286991689603), KQU( 7089756544681775245),
+ KQU(10376661532744718039), KQU( 1265198725901533130),
+ KQU(13807996727081142408), KQU( 2935019626765036403),
+ KQU( 7651672460680700141), KQU( 3644093016200370795),
+ KQU( 2840982578090080674), KQU(17956262740157449201),
+ KQU(18267979450492880548), KQU(11799503659796848070),
+ KQU( 9942537025669672388), KQU(11886606816406990297),
+ KQU( 5488594946437447576), KQU( 7226714353282744302),
+ KQU( 3784851653123877043), KQU( 878018453244803041),
+ KQU(12110022586268616085), KQU( 734072179404675123),
+ KQU(11869573627998248542), KQU( 469150421297783998),
+ KQU( 260151124912803804), KQU(11639179410120968649),
+ KQU( 9318165193840846253), KQU(12795671722734758075),
+ KQU(15318410297267253933), KQU( 691524703570062620),
+ KQU( 5837129010576994601), KQU(15045963859726941052),
+ KQU( 5850056944932238169), KQU(12017434144750943807),
+ KQU( 7447139064928956574), KQU( 3101711812658245019),
+ KQU(16052940704474982954), KQU(18195745945986994042),
+ KQU( 8932252132785575659), KQU(13390817488106794834),
+ KQU(11582771836502517453), KQU( 4964411326683611686),
+ KQU( 2195093981702694011), KQU(14145229538389675669),
+ KQU(16459605532062271798), KQU( 866316924816482864),
+ KQU( 4593041209937286377), KQU( 8415491391910972138),
+ KQU( 4171236715600528969), KQU(16637569303336782889),
+ KQU( 2002011073439212680), KQU(17695124661097601411),
+ KQU( 4627687053598611702), KQU( 7895831936020190403),
+ KQU( 8455951300917267802), KQU( 2923861649108534854),
+ KQU( 8344557563927786255), KQU( 6408671940373352556),
+ KQU(12210227354536675772), KQU(14294804157294222295),
+ KQU(10103022425071085127), KQU(10092959489504123771),
+ KQU( 6554774405376736268), KQU(12629917718410641774),
+ KQU( 6260933257596067126), KQU( 2460827021439369673),
+ KQU( 2541962996717103668), KQU( 597377203127351475),
+ KQU( 5316984203117315309), KQU( 4811211393563241961),
+ KQU(13119698597255811641), KQU( 8048691512862388981),
+ KQU(10216818971194073842), KQU( 4612229970165291764),
+ KQU(10000980798419974770), KQU( 6877640812402540687),
+ KQU( 1488727563290436992), KQU( 2227774069895697318),
+ KQU(11237754507523316593), KQU(13478948605382290972),
+ KQU( 1963583846976858124), KQU( 5512309205269276457),
+ KQU( 3972770164717652347), KQU( 3841751276198975037),
+ KQU(10283343042181903117), KQU( 8564001259792872199),
+ KQU(16472187244722489221), KQU( 8953493499268945921),
+ KQU( 3518747340357279580), KQU( 4003157546223963073),
+ KQU( 3270305958289814590), KQU( 3966704458129482496),
+ KQU( 8122141865926661939), KQU(14627734748099506653),
+ KQU(13064426990862560568), KQU( 2414079187889870829),
+ KQU( 5378461209354225306), KQU(10841985740128255566),
+ KQU( 538582442885401738), KQU( 7535089183482905946),
+ KQU(16117559957598879095), KQU( 8477890721414539741),
+ KQU( 1459127491209533386), KQU(17035126360733620462),
+ KQU( 8517668552872379126), KQU(10292151468337355014),
+ KQU(17081267732745344157), KQU(13751455337946087178),
+ KQU(14026945459523832966), KQU( 6653278775061723516),
+ KQU(10619085543856390441), KQU( 2196343631481122885),
+ KQU(10045966074702826136), KQU(10082317330452718282),
+ KQU( 5920859259504831242), KQU( 9951879073426540617),
+ KQU( 7074696649151414158), KQU(15808193543879464318),
+ KQU( 7385247772746953374), KQU( 3192003544283864292),
+ KQU(18153684490917593847), KQU(12423498260668568905),
+ KQU(10957758099756378169), KQU(11488762179911016040),
+ KQU( 2099931186465333782), KQU(11180979581250294432),
+ KQU( 8098916250668367933), KQU( 3529200436790763465),
+ KQU(12988418908674681745), KQU( 6147567275954808580),
+ KQU( 3207503344604030989), KQU(10761592604898615360),
+ KQU( 229854861031893504), KQU( 8809853962667144291),
+ KQU(13957364469005693860), KQU( 7634287665224495886),
+ KQU(12353487366976556874), KQU( 1134423796317152034),
+ KQU( 2088992471334107068), KQU( 7393372127190799698),
+ KQU( 1845367839871058391), KQU( 207922563987322884),
+ KQU(11960870813159944976), KQU(12182120053317317363),
+ KQU(17307358132571709283), KQU(13871081155552824936),
+ KQU(18304446751741566262), KQU( 7178705220184302849),
+ KQU(10929605677758824425), KQU(16446976977835806844),
+ KQU(13723874412159769044), KQU( 6942854352100915216),
+ KQU( 1726308474365729390), KQU( 2150078766445323155),
+ KQU(15345558947919656626), KQU(12145453828874527201),
+ KQU( 2054448620739726849), KQU( 2740102003352628137),
+ KQU(11294462163577610655), KQU( 756164283387413743),
+ KQU(17841144758438810880), KQU(10802406021185415861),
+ KQU( 8716455530476737846), KQU( 6321788834517649606),
+ KQU(14681322910577468426), KQU(17330043563884336387),
+ KQU(12701802180050071614), KQU(14695105111079727151),
+ KQU( 5112098511654172830), KQU( 4957505496794139973),
+ KQU( 8270979451952045982), KQU(12307685939199120969),
+ KQU(12425799408953443032), KQU( 8376410143634796588),
+ KQU(16621778679680060464), KQU( 3580497854566660073),
+ KQU( 1122515747803382416), KQU( 857664980960597599),
+ KQU( 6343640119895925918), KQU(12878473260854462891),
+ KQU(10036813920765722626), KQU(14451335468363173812),
+ KQU( 5476809692401102807), KQU(16442255173514366342),
+ KQU(13060203194757167104), KQU(14354124071243177715),
+ KQU(15961249405696125227), KQU(13703893649690872584),
+ KQU( 363907326340340064), KQU( 6247455540491754842),
+ KQU(12242249332757832361), KQU( 156065475679796717),
+ KQU( 9351116235749732355), KQU( 4590350628677701405),
+ KQU( 1671195940982350389), KQU(13501398458898451905),
+ KQU( 6526341991225002255), KQU( 1689782913778157592),
+ KQU( 7439222350869010334), KQU(13975150263226478308),
+ KQU(11411961169932682710), KQU(17204271834833847277),
+ KQU( 541534742544435367), KQU( 6591191931218949684),
+ KQU( 2645454775478232486), KQU( 4322857481256485321),
+ KQU( 8477416487553065110), KQU(12902505428548435048),
+ KQU( 971445777981341415), KQU(14995104682744976712),
+ KQU( 4243341648807158063), KQU( 8695061252721927661),
+ KQU( 5028202003270177222), KQU( 2289257340915567840),
+ KQU(13870416345121866007), KQU(13994481698072092233),
+ KQU( 6912785400753196481), KQU( 2278309315841980139),
+ KQU( 4329765449648304839), KQU( 5963108095785485298),
+ KQU( 4880024847478722478), KQU(16015608779890240947),
+ KQU( 1866679034261393544), KQU( 914821179919731519),
+ KQU( 9643404035648760131), KQU( 2418114953615593915),
+ KQU( 944756836073702374), KQU(15186388048737296834),
+ KQU( 7723355336128442206), KQU( 7500747479679599691),
+ KQU(18013961306453293634), KQU( 2315274808095756456),
+ KQU(13655308255424029566), KQU(17203800273561677098),
+ KQU( 1382158694422087756), KQU( 5090390250309588976),
+ KQU( 517170818384213989), KQU( 1612709252627729621),
+ KQU( 1330118955572449606), KQU( 300922478056709885),
+ KQU(18115693291289091987), KQU(13491407109725238321),
+ KQU(15293714633593827320), KQU( 5151539373053314504),
+ KQU( 5951523243743139207), KQU(14459112015249527975),
+ KQU( 5456113959000700739), KQU( 3877918438464873016),
+ KQU(12534071654260163555), KQU(15871678376893555041),
+ KQU(11005484805712025549), KQU(16353066973143374252),
+ KQU( 4358331472063256685), KQU( 8268349332210859288),
+ KQU(12485161590939658075), KQU(13955993592854471343),
+ KQU( 5911446886848367039), KQU(14925834086813706974),
+ KQU( 6590362597857994805), KQU( 1280544923533661875),
+ KQU( 1637756018947988164), KQU( 4734090064512686329),
+ KQU(16693705263131485912), KQU( 6834882340494360958),
+ KQU( 8120732176159658505), KQU( 2244371958905329346),
+ KQU(10447499707729734021), KQU( 7318742361446942194),
+ KQU( 8032857516355555296), KQU(14023605983059313116),
+ KQU( 1032336061815461376), KQU( 9840995337876562612),
+ KQU( 9869256223029203587), KQU(12227975697177267636),
+ KQU(12728115115844186033), KQU( 7752058479783205470),
+ KQU( 729733219713393087), KQU(12954017801239007622)
};
static const uint64_t init_by_array_64_expected[] = {
- QU( 2100341266307895239LLU), QU( 8344256300489757943LLU),
- QU(15687933285484243894LLU), QU( 8268620370277076319LLU),
- QU(12371852309826545459LLU), QU( 8800491541730110238LLU),
- QU(18113268950100835773LLU), QU( 2886823658884438119LLU),
- QU( 3293667307248180724LLU), QU( 9307928143300172731LLU),
- QU( 7688082017574293629LLU), QU( 900986224735166665LLU),
- QU( 9977972710722265039LLU), QU( 6008205004994830552LLU),
- QU( 546909104521689292LLU), QU( 7428471521869107594LLU),
- QU(14777563419314721179LLU), QU(16116143076567350053LLU),
- QU( 5322685342003142329LLU), QU( 4200427048445863473LLU),
- QU( 4693092150132559146LLU), QU(13671425863759338582LLU),
- QU( 6747117460737639916LLU), QU( 4732666080236551150LLU),
- QU( 5912839950611941263LLU), QU( 3903717554504704909LLU),
- QU( 2615667650256786818LLU), QU(10844129913887006352LLU),
- QU(13786467861810997820LLU), QU(14267853002994021570LLU),
- QU(13767807302847237439LLU), QU(16407963253707224617LLU),
- QU( 4802498363698583497LLU), QU( 2523802839317209764LLU),
- QU( 3822579397797475589LLU), QU( 8950320572212130610LLU),
- QU( 3745623504978342534LLU), QU(16092609066068482806LLU),
- QU( 9817016950274642398LLU), QU(10591660660323829098LLU),
- QU(11751606650792815920LLU), QU( 5122873818577122211LLU),
- QU(17209553764913936624LLU), QU( 6249057709284380343LLU),
- QU(15088791264695071830LLU), QU(15344673071709851930LLU),
- QU( 4345751415293646084LLU), QU( 2542865750703067928LLU),
- QU(13520525127852368784LLU), QU(18294188662880997241LLU),
- QU( 3871781938044881523LLU), QU( 2873487268122812184LLU),
- QU(15099676759482679005LLU), QU(15442599127239350490LLU),
- QU( 6311893274367710888LLU), QU( 3286118760484672933LLU),
- QU( 4146067961333542189LLU), QU(13303942567897208770LLU),
- QU( 8196013722255630418LLU), QU( 4437815439340979989LLU),
- QU(15433791533450605135LLU), QU( 4254828956815687049LLU),
- QU( 1310903207708286015LLU), QU(10529182764462398549LLU),
- QU(14900231311660638810LLU), QU( 9727017277104609793LLU),
- QU( 1821308310948199033LLU), QU(11628861435066772084LLU),
- QU( 9469019138491546924LLU), QU( 3145812670532604988LLU),
- QU( 9938468915045491919LLU), QU( 1562447430672662142LLU),
- QU(13963995266697989134LLU), QU( 3356884357625028695LLU),
- QU( 4499850304584309747LLU), QU( 8456825817023658122LLU),
- QU(10859039922814285279LLU), QU( 8099512337972526555LLU),
- QU( 348006375109672149LLU), QU(11919893998241688603LLU),
- QU( 1104199577402948826LLU), QU(16689191854356060289LLU),
- QU(10992552041730168078LLU), QU( 7243733172705465836LLU),
- QU( 5668075606180319560LLU), QU(18182847037333286970LLU),
- QU( 4290215357664631322LLU), QU( 4061414220791828613LLU),
- QU(13006291061652989604LLU), QU( 7140491178917128798LLU),
- QU(12703446217663283481LLU), QU( 5500220597564558267LLU),
- QU(10330551509971296358LLU), QU(15958554768648714492LLU),
- QU( 5174555954515360045LLU), QU( 1731318837687577735LLU),
- QU( 3557700801048354857LLU), QU(13764012341928616198LLU),
- QU(13115166194379119043LLU), QU( 7989321021560255519LLU),
- QU( 2103584280905877040LLU), QU( 9230788662155228488LLU),
- QU(16396629323325547654LLU), QU( 657926409811318051LLU),
- QU(15046700264391400727LLU), QU( 5120132858771880830LLU),
- QU( 7934160097989028561LLU), QU( 6963121488531976245LLU),
- QU(17412329602621742089LLU), QU(15144843053931774092LLU),
- QU(17204176651763054532LLU), QU(13166595387554065870LLU),
- QU( 8590377810513960213LLU), QU( 5834365135373991938LLU),
- QU( 7640913007182226243LLU), QU( 3479394703859418425LLU),
- QU(16402784452644521040LLU), QU( 4993979809687083980LLU),
- QU(13254522168097688865LLU), QU(15643659095244365219LLU),
- QU( 5881437660538424982LLU), QU(11174892200618987379LLU),
- QU( 254409966159711077LLU), QU(17158413043140549909LLU),
- QU( 3638048789290376272LLU), QU( 1376816930299489190LLU),
- QU( 4622462095217761923LLU), QU(15086407973010263515LLU),
- QU(13253971772784692238LLU), QU( 5270549043541649236LLU),
- QU(11182714186805411604LLU), QU(12283846437495577140LLU),
- QU( 5297647149908953219LLU), QU(10047451738316836654LLU),
- QU( 4938228100367874746LLU), QU(12328523025304077923LLU),
- QU( 3601049438595312361LLU), QU( 9313624118352733770LLU),
- QU(13322966086117661798LLU), QU(16660005705644029394LLU),
- QU(11337677526988872373LLU), QU(13869299102574417795LLU),
- QU(15642043183045645437LLU), QU( 3021755569085880019LLU),
- QU( 4979741767761188161LLU), QU(13679979092079279587LLU),
- QU( 3344685842861071743LLU), QU(13947960059899588104LLU),
- QU( 305806934293368007LLU), QU( 5749173929201650029LLU),
- QU(11123724852118844098LLU), QU(15128987688788879802LLU),
- QU(15251651211024665009LLU), QU( 7689925933816577776LLU),
- QU(16732804392695859449LLU), QU(17087345401014078468LLU),
- QU(14315108589159048871LLU), QU( 4820700266619778917LLU),
- QU(16709637539357958441LLU), QU( 4936227875177351374LLU),
- QU( 2137907697912987247LLU), QU(11628565601408395420LLU),
- QU( 2333250549241556786LLU), QU( 5711200379577778637LLU),
- QU( 5170680131529031729LLU), QU(12620392043061335164LLU),
- QU( 95363390101096078LLU), QU( 5487981914081709462LLU),
- QU( 1763109823981838620LLU), QU( 3395861271473224396LLU),
- QU( 1300496844282213595LLU), QU( 6894316212820232902LLU),
- QU(10673859651135576674LLU), QU( 5911839658857903252LLU),
- QU(17407110743387299102LLU), QU( 8257427154623140385LLU),
- QU(11389003026741800267LLU), QU( 4070043211095013717LLU),
- QU(11663806997145259025LLU), QU(15265598950648798210LLU),
- QU( 630585789434030934LLU), QU( 3524446529213587334LLU),
- QU( 7186424168495184211LLU), QU(10806585451386379021LLU),
- QU(11120017753500499273LLU), QU( 1586837651387701301LLU),
- QU(17530454400954415544LLU), QU( 9991670045077880430LLU),
- QU( 7550997268990730180LLU), QU( 8640249196597379304LLU),
- QU( 3522203892786893823LLU), QU(10401116549878854788LLU),
- QU(13690285544733124852LLU), QU( 8295785675455774586LLU),
- QU(15535716172155117603LLU), QU( 3112108583723722511LLU),
- QU(17633179955339271113LLU), QU(18154208056063759375LLU),
- QU( 1866409236285815666LLU), QU(13326075895396412882LLU),
- QU( 8756261842948020025LLU), QU( 6281852999868439131LLU),
- QU(15087653361275292858LLU), QU(10333923911152949397LLU),
- QU( 5265567645757408500LLU), QU(12728041843210352184LLU),
- QU( 6347959327507828759LLU), QU( 154112802625564758LLU),
- QU(18235228308679780218LLU), QU( 3253805274673352418LLU),
- QU( 4849171610689031197LLU), QU(17948529398340432518LLU),
- QU(13803510475637409167LLU), QU(13506570190409883095LLU),
- QU(15870801273282960805LLU), QU( 8451286481299170773LLU),
- QU( 9562190620034457541LLU), QU( 8518905387449138364LLU),
- QU(12681306401363385655LLU), QU( 3788073690559762558LLU),
- QU( 5256820289573487769LLU), QU( 2752021372314875467LLU),
- QU( 6354035166862520716LLU), QU( 4328956378309739069LLU),
- QU( 449087441228269600LLU), QU( 5533508742653090868LLU),
- QU( 1260389420404746988LLU), QU(18175394473289055097LLU),
- QU( 1535467109660399420LLU), QU( 8818894282874061442LLU),
- QU(12140873243824811213LLU), QU(15031386653823014946LLU),
- QU( 1286028221456149232LLU), QU( 6329608889367858784LLU),
- QU( 9419654354945132725LLU), QU( 6094576547061672379LLU),
- QU(17706217251847450255LLU), QU( 1733495073065878126LLU),
- QU(16918923754607552663LLU), QU( 8881949849954945044LLU),
- QU(12938977706896313891LLU), QU(14043628638299793407LLU),
- QU(18393874581723718233LLU), QU( 6886318534846892044LLU),
- QU(14577870878038334081LLU), QU(13541558383439414119LLU),
- QU(13570472158807588273LLU), QU(18300760537910283361LLU),
- QU( 818368572800609205LLU), QU( 1417000585112573219LLU),
- QU(12337533143867683655LLU), QU(12433180994702314480LLU),
- QU( 778190005829189083LLU), QU(13667356216206524711LLU),
- QU( 9866149895295225230LLU), QU(11043240490417111999LLU),
- QU( 1123933826541378598LLU), QU( 6469631933605123610LLU),
- QU(14508554074431980040LLU), QU(13918931242962026714LLU),
- QU( 2870785929342348285LLU), QU(14786362626740736974LLU),
- QU(13176680060902695786LLU), QU( 9591778613541679456LLU),
- QU( 9097662885117436706LLU), QU( 749262234240924947LLU),
- QU( 1944844067793307093LLU), QU( 4339214904577487742LLU),
- QU( 8009584152961946551LLU), QU(16073159501225501777LLU),
- QU( 3335870590499306217LLU), QU(17088312653151202847LLU),
- QU( 3108893142681931848LLU), QU(16636841767202792021LLU),
- QU(10423316431118400637LLU), QU( 8008357368674443506LLU),
- QU(11340015231914677875LLU), QU(17687896501594936090LLU),
- QU(15173627921763199958LLU), QU( 542569482243721959LLU),
- QU(15071714982769812975LLU), QU( 4466624872151386956LLU),
- QU( 1901780715602332461LLU), QU( 9822227742154351098LLU),
- QU( 1479332892928648780LLU), QU( 6981611948382474400LLU),
- QU( 7620824924456077376LLU), QU(14095973329429406782LLU),
- QU( 7902744005696185404LLU), QU(15830577219375036920LLU),
- QU(10287076667317764416LLU), QU(12334872764071724025LLU),
- QU( 4419302088133544331LLU), QU(14455842851266090520LLU),
- QU(12488077416504654222LLU), QU( 7953892017701886766LLU),
- QU( 6331484925529519007LLU), QU( 4902145853785030022LLU),
- QU(17010159216096443073LLU), QU(11945354668653886087LLU),
- QU(15112022728645230829LLU), QU(17363484484522986742LLU),
- QU( 4423497825896692887LLU), QU( 8155489510809067471LLU),
- QU( 258966605622576285LLU), QU( 5462958075742020534LLU),
- QU( 6763710214913276228LLU), QU( 2368935183451109054LLU),
- QU(14209506165246453811LLU), QU( 2646257040978514881LLU),
- QU( 3776001911922207672LLU), QU( 1419304601390147631LLU),
- QU(14987366598022458284LLU), QU( 3977770701065815721LLU),
- QU( 730820417451838898LLU), QU( 3982991703612885327LLU),
- QU( 2803544519671388477LLU), QU(17067667221114424649LLU),
- QU( 2922555119737867166LLU), QU( 1989477584121460932LLU),
- QU(15020387605892337354LLU), QU( 9293277796427533547LLU),
- QU(10722181424063557247LLU), QU(16704542332047511651LLU),
- QU( 5008286236142089514LLU), QU(16174732308747382540LLU),
- QU(17597019485798338402LLU), QU(13081745199110622093LLU),
- QU( 8850305883842258115LLU), QU(12723629125624589005LLU),
- QU( 8140566453402805978LLU), QU(15356684607680935061LLU),
- QU(14222190387342648650LLU), QU(11134610460665975178LLU),
- QU( 1259799058620984266LLU), QU(13281656268025610041LLU),
- QU( 298262561068153992LLU), QU(12277871700239212922LLU),
- QU(13911297774719779438LLU), QU(16556727962761474934LLU),
- QU(17903010316654728010LLU), QU( 9682617699648434744LLU),
- QU(14757681836838592850LLU), QU( 1327242446558524473LLU),
- QU(11126645098780572792LLU), QU( 1883602329313221774LLU),
- QU( 2543897783922776873LLU), QU(15029168513767772842LLU),
- QU(12710270651039129878LLU), QU(16118202956069604504LLU),
- QU(15010759372168680524LLU), QU( 2296827082251923948LLU),
- QU(10793729742623518101LLU), QU(13829764151845413046LLU),
- QU(17769301223184451213LLU), QU( 3118268169210783372LLU),
- QU(17626204544105123127LLU), QU( 7416718488974352644LLU),
- QU(10450751996212925994LLU), QU( 9352529519128770586LLU),
- QU( 259347569641110140LLU), QU( 8048588892269692697LLU),
- QU( 1774414152306494058LLU), QU(10669548347214355622LLU),
- QU(13061992253816795081LLU), QU(18432677803063861659LLU),
- QU( 8879191055593984333LLU), QU(12433753195199268041LLU),
- QU(14919392415439730602LLU), QU( 6612848378595332963LLU),
- QU( 6320986812036143628LLU), QU(10465592420226092859LLU),
- QU( 4196009278962570808LLU), QU( 3747816564473572224LLU),
- QU(17941203486133732898LLU), QU( 2350310037040505198LLU),
- QU( 5811779859134370113LLU), QU(10492109599506195126LLU),
- QU( 7699650690179541274LLU), QU( 1954338494306022961LLU),
- QU(14095816969027231152LLU), QU( 5841346919964852061LLU),
- QU(14945969510148214735LLU), QU( 3680200305887550992LLU),
- QU( 6218047466131695792LLU), QU( 8242165745175775096LLU),
- QU(11021371934053307357LLU), QU( 1265099502753169797LLU),
- QU( 4644347436111321718LLU), QU( 3609296916782832859LLU),
- QU( 8109807992218521571LLU), QU(18387884215648662020LLU),
- QU(14656324896296392902LLU), QU(17386819091238216751LLU),
- QU(17788300878582317152LLU), QU( 7919446259742399591LLU),
- QU( 4466613134576358004LLU), QU(12928181023667938509LLU),
- QU(13147446154454932030LLU), QU(16552129038252734620LLU),
- QU( 8395299403738822450LLU), QU(11313817655275361164LLU),
- QU( 434258809499511718LLU), QU( 2074882104954788676LLU),
- QU( 7929892178759395518LLU), QU( 9006461629105745388LLU),
- QU( 5176475650000323086LLU), QU(11128357033468341069LLU),
- QU(12026158851559118955LLU), QU(14699716249471156500LLU),
- QU( 448982497120206757LLU), QU( 4156475356685519900LLU),
- QU( 6063816103417215727LLU), QU(10073289387954971479LLU),
- QU( 8174466846138590962LLU), QU( 2675777452363449006LLU),
- QU( 9090685420572474281LLU), QU( 6659652652765562060LLU),
- QU(12923120304018106621LLU), QU(11117480560334526775LLU),
- QU( 937910473424587511LLU), QU( 1838692113502346645LLU),
- QU(11133914074648726180LLU), QU( 7922600945143884053LLU),
- QU(13435287702700959550LLU), QU( 5287964921251123332LLU),
- QU(11354875374575318947LLU), QU(17955724760748238133LLU),
- QU(13728617396297106512LLU), QU( 4107449660118101255LLU),
- QU( 1210269794886589623LLU), QU(11408687205733456282LLU),
- QU( 4538354710392677887LLU), QU(13566803319341319267LLU),
- QU(17870798107734050771LLU), QU( 3354318982568089135LLU),
- QU( 9034450839405133651LLU), QU(13087431795753424314LLU),
- QU( 950333102820688239LLU), QU( 1968360654535604116LLU),
- QU(16840551645563314995LLU), QU( 8867501803892924995LLU),
- QU(11395388644490626845LLU), QU( 1529815836300732204LLU),
- QU(13330848522996608842LLU), QU( 1813432878817504265LLU),
- QU( 2336867432693429560LLU), QU(15192805445973385902LLU),
- QU( 2528593071076407877LLU), QU( 128459777936689248LLU),
- QU( 9976345382867214866LLU), QU( 6208885766767996043LLU),
- QU(14982349522273141706LLU), QU( 3099654362410737822LLU),
- QU(13776700761947297661LLU), QU( 8806185470684925550LLU),
- QU( 8151717890410585321LLU), QU( 640860591588072925LLU),
- QU(14592096303937307465LLU), QU( 9056472419613564846LLU),
- QU(14861544647742266352LLU), QU(12703771500398470216LLU),
- QU( 3142372800384138465LLU), QU( 6201105606917248196LLU),
- QU(18337516409359270184LLU), QU(15042268695665115339LLU),
- QU(15188246541383283846LLU), QU(12800028693090114519LLU),
- QU( 5992859621101493472LLU), QU(18278043971816803521LLU),
- QU( 9002773075219424560LLU), QU( 7325707116943598353LLU),
- QU( 7930571931248040822LLU), QU( 5645275869617023448LLU),
- QU( 7266107455295958487LLU), QU( 4363664528273524411LLU),
- QU(14313875763787479809LLU), QU(17059695613553486802LLU),
- QU( 9247761425889940932LLU), QU(13704726459237593128LLU),
- QU( 2701312427328909832LLU), QU(17235532008287243115LLU),
- QU(14093147761491729538LLU), QU( 6247352273768386516LLU),
- QU( 8268710048153268415LLU), QU( 7985295214477182083LLU),
- QU(15624495190888896807LLU), QU( 3772753430045262788LLU),
- QU( 9133991620474991698LLU), QU( 5665791943316256028LLU),
- QU( 7551996832462193473LLU), QU(13163729206798953877LLU),
- QU( 9263532074153846374LLU), QU( 1015460703698618353LLU),
- QU(17929874696989519390LLU), QU(18257884721466153847LLU),
- QU(16271867543011222991LLU), QU( 3905971519021791941LLU),
- QU(16814488397137052085LLU), QU( 1321197685504621613LLU),
- QU( 2870359191894002181LLU), QU(14317282970323395450LLU),
- QU(13663920845511074366LLU), QU( 2052463995796539594LLU),
- QU(14126345686431444337LLU), QU( 1727572121947022534LLU),
- QU(17793552254485594241LLU), QU( 6738857418849205750LLU),
- QU( 1282987123157442952LLU), QU(16655480021581159251LLU),
- QU( 6784587032080183866LLU), QU(14726758805359965162LLU),
- QU( 7577995933961987349LLU), QU(12539609320311114036LLU),
- QU(10789773033385439494LLU), QU( 8517001497411158227LLU),
- QU(10075543932136339710LLU), QU(14838152340938811081LLU),
- QU( 9560840631794044194LLU), QU(17445736541454117475LLU),
- QU(10633026464336393186LLU), QU(15705729708242246293LLU),
- QU( 1117517596891411098LLU), QU( 4305657943415886942LLU),
- QU( 4948856840533979263LLU), QU(16071681989041789593LLU),
- QU(13723031429272486527LLU), QU( 7639567622306509462LLU),
- QU(12670424537483090390LLU), QU( 9715223453097197134LLU),
- QU( 5457173389992686394LLU), QU( 289857129276135145LLU),
- QU(17048610270521972512LLU), QU( 692768013309835485LLU),
- QU(14823232360546632057LLU), QU(18218002361317895936LLU),
- QU( 3281724260212650204LLU), QU(16453957266549513795LLU),
- QU( 8592711109774511881LLU), QU( 929825123473369579LLU),
- QU(15966784769764367791LLU), QU( 9627344291450607588LLU),
- QU(10849555504977813287LLU), QU( 9234566913936339275LLU),
- QU( 6413807690366911210LLU), QU(10862389016184219267LLU),
- QU(13842504799335374048LLU), QU( 1531994113376881174LLU),
- QU( 2081314867544364459LLU), QU(16430628791616959932LLU),
- QU( 8314714038654394368LLU), QU( 9155473892098431813LLU),
- QU(12577843786670475704LLU), QU( 4399161106452401017LLU),
- QU( 1668083091682623186LLU), QU( 1741383777203714216LLU),
- QU( 2162597285417794374LLU), QU(15841980159165218736LLU),
- QU( 1971354603551467079LLU), QU( 1206714764913205968LLU),
- QU( 4790860439591272330LLU), QU(14699375615594055799LLU),
- QU( 8374423871657449988LLU), QU(10950685736472937738LLU),
- QU( 697344331343267176LLU), QU(10084998763118059810LLU),
- QU(12897369539795983124LLU), QU(12351260292144383605LLU),
- QU( 1268810970176811234LLU), QU( 7406287800414582768LLU),
- QU( 516169557043807831LLU), QU( 5077568278710520380LLU),
- QU( 3828791738309039304LLU), QU( 7721974069946943610LLU),
- QU( 3534670260981096460LLU), QU( 4865792189600584891LLU),
- QU(16892578493734337298LLU), QU( 9161499464278042590LLU),
- QU(11976149624067055931LLU), QU(13219479887277343990LLU),
- QU(14161556738111500680LLU), QU(14670715255011223056LLU),
- QU( 4671205678403576558LLU), QU(12633022931454259781LLU),
- QU(14821376219869187646LLU), QU( 751181776484317028LLU),
- QU( 2192211308839047070LLU), QU(11787306362361245189LLU),
- QU(10672375120744095707LLU), QU( 4601972328345244467LLU),
- QU(15457217788831125879LLU), QU( 8464345256775460809LLU),
- QU(10191938789487159478LLU), QU( 6184348739615197613LLU),
- QU(11425436778806882100LLU), QU( 2739227089124319793LLU),
- QU( 461464518456000551LLU), QU( 4689850170029177442LLU),
- QU( 6120307814374078625LLU), QU(11153579230681708671LLU),
- QU( 7891721473905347926LLU), QU(10281646937824872400LLU),
- QU( 3026099648191332248LLU), QU( 8666750296953273818LLU),
- QU(14978499698844363232LLU), QU(13303395102890132065LLU),
- QU( 8182358205292864080LLU), QU(10560547713972971291LLU),
- QU(11981635489418959093LLU), QU( 3134621354935288409LLU),
- QU(11580681977404383968LLU), QU(14205530317404088650LLU),
- QU( 5997789011854923157LLU), QU(13659151593432238041LLU),
- QU(11664332114338865086LLU), QU( 7490351383220929386LLU),
- QU( 7189290499881530378LLU), QU(15039262734271020220LLU),
- QU( 2057217285976980055LLU), QU( 555570804905355739LLU),
- QU(11235311968348555110LLU), QU(13824557146269603217LLU),
- QU(16906788840653099693LLU), QU( 7222878245455661677LLU),
- QU( 5245139444332423756LLU), QU( 4723748462805674292LLU),
- QU(12216509815698568612LLU), QU(17402362976648951187LLU),
- QU(17389614836810366768LLU), QU( 4880936484146667711LLU),
- QU( 9085007839292639880LLU), QU(13837353458498535449LLU),
- QU(11914419854360366677LLU), QU(16595890135313864103LLU),
- QU( 6313969847197627222LLU), QU(18296909792163910431LLU),
- QU(10041780113382084042LLU), QU( 2499478551172884794LLU),
- QU(11057894246241189489LLU), QU( 9742243032389068555LLU),
- QU(12838934582673196228LLU), QU(13437023235248490367LLU),
- QU(13372420669446163240LLU), QU( 6752564244716909224LLU),
- QU( 7157333073400313737LLU), QU(12230281516370654308LLU),
- QU( 1182884552219419117LLU), QU( 2955125381312499218LLU),
- QU(10308827097079443249LLU), QU( 1337648572986534958LLU),
- QU(16378788590020343939LLU), QU( 108619126514420935LLU),
- QU( 3990981009621629188LLU), QU( 5460953070230946410LLU),
- QU( 9703328329366531883LLU), QU(13166631489188077236LLU),
- QU( 1104768831213675170LLU), QU( 3447930458553877908LLU),
- QU( 8067172487769945676LLU), QU( 5445802098190775347LLU),
- QU( 3244840981648973873LLU), QU(17314668322981950060LLU),
- QU( 5006812527827763807LLU), QU(18158695070225526260LLU),
- QU( 2824536478852417853LLU), QU(13974775809127519886LLU),
- QU( 9814362769074067392LLU), QU(17276205156374862128LLU),
- QU(11361680725379306967LLU), QU( 3422581970382012542LLU),
- QU(11003189603753241266LLU), QU(11194292945277862261LLU),
- QU( 6839623313908521348LLU), QU(11935326462707324634LLU),
- QU( 1611456788685878444LLU), QU(13112620989475558907LLU),
- QU( 517659108904450427LLU), QU(13558114318574407624LLU),
- QU(15699089742731633077LLU), QU( 4988979278862685458LLU),
- QU( 8111373583056521297LLU), QU( 3891258746615399627LLU),
- QU( 8137298251469718086LLU), QU(12748663295624701649LLU),
- QU( 4389835683495292062LLU), QU( 5775217872128831729LLU),
- QU( 9462091896405534927LLU), QU( 8498124108820263989LLU),
- QU( 8059131278842839525LLU), QU(10503167994254090892LLU),
- QU(11613153541070396656LLU), QU(18069248738504647790LLU),
- QU( 570657419109768508LLU), QU( 3950574167771159665LLU),
- QU( 5514655599604313077LLU), QU( 2908460854428484165LLU),
- QU(10777722615935663114LLU), QU(12007363304839279486LLU),
- QU( 9800646187569484767LLU), QU( 8795423564889864287LLU),
- QU(14257396680131028419LLU), QU( 6405465117315096498LLU),
- QU( 7939411072208774878LLU), QU(17577572378528990006LLU),
- QU(14785873806715994850LLU), QU(16770572680854747390LLU),
- QU(18127549474419396481LLU), QU(11637013449455757750LLU),
- QU(14371851933996761086LLU), QU( 3601181063650110280LLU),
- QU( 4126442845019316144LLU), QU(10198287239244320669LLU),
- QU(18000169628555379659LLU), QU(18392482400739978269LLU),
- QU( 6219919037686919957LLU), QU( 3610085377719446052LLU),
- QU( 2513925039981776336LLU), QU(16679413537926716955LLU),
- QU(12903302131714909434LLU), QU( 5581145789762985009LLU),
- QU(12325955044293303233LLU), QU(17216111180742141204LLU),
- QU( 6321919595276545740LLU), QU( 3507521147216174501LLU),
- QU( 9659194593319481840LLU), QU(11473976005975358326LLU),
- QU(14742730101435987026LLU), QU( 492845897709954780LLU),
- QU(16976371186162599676LLU), QU(17712703422837648655LLU),
- QU( 9881254778587061697LLU), QU( 8413223156302299551LLU),
- QU( 1563841828254089168LLU), QU( 9996032758786671975LLU),
- QU( 138877700583772667LLU), QU(13003043368574995989LLU),
- QU( 4390573668650456587LLU), QU( 8610287390568126755LLU),
- QU(15126904974266642199LLU), QU( 6703637238986057662LLU),
- QU( 2873075592956810157LLU), QU( 6035080933946049418LLU),
- QU(13382846581202353014LLU), QU( 7303971031814642463LLU),
- QU(18418024405307444267LLU), QU( 5847096731675404647LLU),
- QU( 4035880699639842500LLU), QU(11525348625112218478LLU),
- QU( 3041162365459574102LLU), QU( 2604734487727986558LLU),
- QU(15526341771636983145LLU), QU(14556052310697370254LLU),
- QU(12997787077930808155LLU), QU( 9601806501755554499LLU),
- QU(11349677952521423389LLU), QU(14956777807644899350LLU),
- QU(16559736957742852721LLU), QU(12360828274778140726LLU),
- QU( 6685373272009662513LLU), QU(16932258748055324130LLU),
- QU(15918051131954158508LLU), QU( 1692312913140790144LLU),
- QU( 546653826801637367LLU), QU( 5341587076045986652LLU),
- QU(14975057236342585662LLU), QU(12374976357340622412LLU),
- QU(10328833995181940552LLU), QU(12831807101710443149LLU),
- QU(10548514914382545716LLU), QU( 2217806727199715993LLU),
- QU(12627067369242845138LLU), QU( 4598965364035438158LLU),
- QU( 150923352751318171LLU), QU(14274109544442257283LLU),
- QU( 4696661475093863031LLU), QU( 1505764114384654516LLU),
- QU(10699185831891495147LLU), QU( 2392353847713620519LLU),
- QU( 3652870166711788383LLU), QU( 8640653276221911108LLU),
- QU( 3894077592275889704LLU), QU( 4918592872135964845LLU),
- QU(16379121273281400789LLU), QU(12058465483591683656LLU),
- QU(11250106829302924945LLU), QU( 1147537556296983005LLU),
- QU( 6376342756004613268LLU), QU(14967128191709280506LLU),
- QU(18007449949790627628LLU), QU( 9497178279316537841LLU),
- QU( 7920174844809394893LLU), QU(10037752595255719907LLU),
- QU(15875342784985217697LLU), QU(15311615921712850696LLU),
- QU( 9552902652110992950LLU), QU(14054979450099721140LLU),
- QU( 5998709773566417349LLU), QU(18027910339276320187LLU),
- QU( 8223099053868585554LLU), QU( 7842270354824999767LLU),
- QU( 4896315688770080292LLU), QU(12969320296569787895LLU),
- QU( 2674321489185759961LLU), QU( 4053615936864718439LLU),
- QU(11349775270588617578LLU), QU( 4743019256284553975LLU),
- QU( 5602100217469723769LLU), QU(14398995691411527813LLU),
- QU( 7412170493796825470LLU), QU( 836262406131744846LLU),
- QU( 8231086633845153022LLU), QU( 5161377920438552287LLU),
- QU( 8828731196169924949LLU), QU(16211142246465502680LLU),
- QU( 3307990879253687818LLU), QU( 5193405406899782022LLU),
- QU( 8510842117467566693LLU), QU( 6070955181022405365LLU),
- QU(14482950231361409799LLU), QU(12585159371331138077LLU),
- QU( 3511537678933588148LLU), QU( 2041849474531116417LLU),
- QU(10944936685095345792LLU), QU(18303116923079107729LLU),
- QU( 2720566371239725320LLU), QU( 4958672473562397622LLU),
- QU( 3032326668253243412LLU), QU(13689418691726908338LLU),
- QU( 1895205511728843996LLU), QU( 8146303515271990527LLU),
- QU(16507343500056113480LLU), QU( 473996939105902919LLU),
- QU( 9897686885246881481LLU), QU(14606433762712790575LLU),
- QU( 6732796251605566368LLU), QU( 1399778120855368916LLU),
- QU( 935023885182833777LLU), QU(16066282816186753477LLU),
- QU( 7291270991820612055LLU), QU(17530230393129853844LLU),
- QU(10223493623477451366LLU), QU(15841725630495676683LLU),
- QU(17379567246435515824LLU), QU( 8588251429375561971LLU),
- QU(18339511210887206423LLU), QU(17349587430725976100LLU),
- QU(12244876521394838088LLU), QU( 6382187714147161259LLU),
- QU(12335807181848950831LLU), QU(16948885622305460665LLU),
- QU(13755097796371520506LLU), QU(14806740373324947801LLU),
- QU( 4828699633859287703LLU), QU( 8209879281452301604LLU),
- QU(12435716669553736437LLU), QU(13970976859588452131LLU),
- QU( 6233960842566773148LLU), QU(12507096267900505759LLU),
- QU( 1198713114381279421LLU), QU(14989862731124149015LLU),
- QU(15932189508707978949LLU), QU( 2526406641432708722LLU),
- QU( 29187427817271982LLU), QU( 1499802773054556353LLU),
- QU(10816638187021897173LLU), QU( 5436139270839738132LLU),
- QU( 6659882287036010082LLU), QU( 2154048955317173697LLU),
- QU(10887317019333757642LLU), QU(16281091802634424955LLU),
- QU(10754549879915384901LLU), QU(10760611745769249815LLU),
- QU( 2161505946972504002LLU), QU( 5243132808986265107LLU),
- QU(10129852179873415416LLU), QU( 710339480008649081LLU),
- QU( 7802129453068808528LLU), QU(17967213567178907213LLU),
- QU(15730859124668605599LLU), QU(13058356168962376502LLU),
- QU( 3701224985413645909LLU), QU(14464065869149109264LLU),
- QU( 9959272418844311646LLU), QU(10157426099515958752LLU),
- QU(14013736814538268528LLU), QU(17797456992065653951LLU),
- QU(17418878140257344806LLU), QU(15457429073540561521LLU),
- QU( 2184426881360949378LLU), QU( 2062193041154712416LLU),
- QU( 8553463347406931661LLU), QU( 4913057625202871854LLU),
- QU( 2668943682126618425LLU), QU(17064444737891172288LLU),
- QU( 4997115903913298637LLU), QU(12019402608892327416LLU),
- QU(17603584559765897352LLU), QU(11367529582073647975LLU),
- QU( 8211476043518436050LLU), QU( 8676849804070323674LLU),
- QU(18431829230394475730LLU), QU(10490177861361247904LLU),
- QU( 9508720602025651349LLU), QU( 7409627448555722700LLU),
- QU( 5804047018862729008LLU), QU(11943858176893142594LLU),
- QU(11908095418933847092LLU), QU( 5415449345715887652LLU),
- QU( 1554022699166156407LLU), QU( 9073322106406017161LLU),
- QU( 7080630967969047082LLU), QU(18049736940860732943LLU),
- QU(12748714242594196794LLU), QU( 1226992415735156741LLU),
- QU(17900981019609531193LLU), QU(11720739744008710999LLU),
- QU( 3006400683394775434LLU), QU(11347974011751996028LLU),
- QU( 3316999628257954608LLU), QU( 8384484563557639101LLU),
- QU(18117794685961729767LLU), QU( 1900145025596618194LLU),
- QU(17459527840632892676LLU), QU( 5634784101865710994LLU),
- QU( 7918619300292897158LLU), QU( 3146577625026301350LLU),
- QU( 9955212856499068767LLU), QU( 1873995843681746975LLU),
- QU( 1561487759967972194LLU), QU( 8322718804375878474LLU),
- QU(11300284215327028366LLU), QU( 4667391032508998982LLU),
- QU( 9820104494306625580LLU), QU(17922397968599970610LLU),
- QU( 1784690461886786712LLU), QU(14940365084341346821LLU),
- QU( 5348719575594186181LLU), QU(10720419084507855261LLU),
- QU(14210394354145143274LLU), QU( 2426468692164000131LLU),
- QU(16271062114607059202LLU), QU(14851904092357070247LLU),
- QU( 6524493015693121897LLU), QU( 9825473835127138531LLU),
- QU(14222500616268569578LLU), QU(15521484052007487468LLU),
- QU(14462579404124614699LLU), QU(11012375590820665520LLU),
- QU(11625327350536084927LLU), QU(14452017765243785417LLU),
- QU( 9989342263518766305LLU), QU( 3640105471101803790LLU),
- QU( 4749866455897513242LLU), QU(13963064946736312044LLU),
- QU(10007416591973223791LLU), QU(18314132234717431115LLU),
- QU( 3286596588617483450LLU), QU( 7726163455370818765LLU),
- QU( 7575454721115379328LLU), QU( 5308331576437663422LLU),
- QU(18288821894903530934LLU), QU( 8028405805410554106LLU),
- QU(15744019832103296628LLU), QU( 149765559630932100LLU),
- QU( 6137705557200071977LLU), QU(14513416315434803615LLU),
- QU(11665702820128984473LLU), QU( 218926670505601386LLU),
- QU( 6868675028717769519LLU), QU(15282016569441512302LLU),
- QU( 5707000497782960236LLU), QU( 6671120586555079567LLU),
- QU( 2194098052618985448LLU), QU(16849577895477330978LLU),
- QU(12957148471017466283LLU), QU( 1997805535404859393LLU),
- QU( 1180721060263860490LLU), QU(13206391310193756958LLU),
- QU(12980208674461861797LLU), QU( 3825967775058875366LLU),
- QU(17543433670782042631LLU), QU( 1518339070120322730LLU),
- QU(16344584340890991669LLU), QU( 2611327165318529819LLU),
- QU(11265022723283422529LLU), QU( 4001552800373196817LLU),
- QU(14509595890079346161LLU), QU( 3528717165416234562LLU),
- QU(18153222571501914072LLU), QU( 9387182977209744425LLU),
- QU(10064342315985580021LLU), QU(11373678413215253977LLU),
- QU( 2308457853228798099LLU), QU( 9729042942839545302LLU),
- QU( 7833785471140127746LLU), QU( 6351049900319844436LLU),
- QU(14454610627133496067LLU), QU(12533175683634819111LLU),
- QU(15570163926716513029LLU), QU(13356980519185762498LLU)
+ KQU( 2100341266307895239), KQU( 8344256300489757943),
+ KQU(15687933285484243894), KQU( 8268620370277076319),
+ KQU(12371852309826545459), KQU( 8800491541730110238),
+ KQU(18113268950100835773), KQU( 2886823658884438119),
+ KQU( 3293667307248180724), KQU( 9307928143300172731),
+ KQU( 7688082017574293629), KQU( 900986224735166665),
+ KQU( 9977972710722265039), KQU( 6008205004994830552),
+ KQU( 546909104521689292), KQU( 7428471521869107594),
+ KQU(14777563419314721179), KQU(16116143076567350053),
+ KQU( 5322685342003142329), KQU( 4200427048445863473),
+ KQU( 4693092150132559146), KQU(13671425863759338582),
+ KQU( 6747117460737639916), KQU( 4732666080236551150),
+ KQU( 5912839950611941263), KQU( 3903717554504704909),
+ KQU( 2615667650256786818), KQU(10844129913887006352),
+ KQU(13786467861810997820), KQU(14267853002994021570),
+ KQU(13767807302847237439), KQU(16407963253707224617),
+ KQU( 4802498363698583497), KQU( 2523802839317209764),
+ KQU( 3822579397797475589), KQU( 8950320572212130610),
+ KQU( 3745623504978342534), KQU(16092609066068482806),
+ KQU( 9817016950274642398), KQU(10591660660323829098),
+ KQU(11751606650792815920), KQU( 5122873818577122211),
+ KQU(17209553764913936624), KQU( 6249057709284380343),
+ KQU(15088791264695071830), KQU(15344673071709851930),
+ KQU( 4345751415293646084), KQU( 2542865750703067928),
+ KQU(13520525127852368784), KQU(18294188662880997241),
+ KQU( 3871781938044881523), KQU( 2873487268122812184),
+ KQU(15099676759482679005), KQU(15442599127239350490),
+ KQU( 6311893274367710888), KQU( 3286118760484672933),
+ KQU( 4146067961333542189), KQU(13303942567897208770),
+ KQU( 8196013722255630418), KQU( 4437815439340979989),
+ KQU(15433791533450605135), KQU( 4254828956815687049),
+ KQU( 1310903207708286015), KQU(10529182764462398549),
+ KQU(14900231311660638810), KQU( 9727017277104609793),
+ KQU( 1821308310948199033), KQU(11628861435066772084),
+ KQU( 9469019138491546924), KQU( 3145812670532604988),
+ KQU( 9938468915045491919), KQU( 1562447430672662142),
+ KQU(13963995266697989134), KQU( 3356884357625028695),
+ KQU( 4499850304584309747), KQU( 8456825817023658122),
+ KQU(10859039922814285279), KQU( 8099512337972526555),
+ KQU( 348006375109672149), KQU(11919893998241688603),
+ KQU( 1104199577402948826), KQU(16689191854356060289),
+ KQU(10992552041730168078), KQU( 7243733172705465836),
+ KQU( 5668075606180319560), KQU(18182847037333286970),
+ KQU( 4290215357664631322), KQU( 4061414220791828613),
+ KQU(13006291061652989604), KQU( 7140491178917128798),
+ KQU(12703446217663283481), KQU( 5500220597564558267),
+ KQU(10330551509971296358), KQU(15958554768648714492),
+ KQU( 5174555954515360045), KQU( 1731318837687577735),
+ KQU( 3557700801048354857), KQU(13764012341928616198),
+ KQU(13115166194379119043), KQU( 7989321021560255519),
+ KQU( 2103584280905877040), KQU( 9230788662155228488),
+ KQU(16396629323325547654), KQU( 657926409811318051),
+ KQU(15046700264391400727), KQU( 5120132858771880830),
+ KQU( 7934160097989028561), KQU( 6963121488531976245),
+ KQU(17412329602621742089), KQU(15144843053931774092),
+ KQU(17204176651763054532), KQU(13166595387554065870),
+ KQU( 8590377810513960213), KQU( 5834365135373991938),
+ KQU( 7640913007182226243), KQU( 3479394703859418425),
+ KQU(16402784452644521040), KQU( 4993979809687083980),
+ KQU(13254522168097688865), KQU(15643659095244365219),
+ KQU( 5881437660538424982), KQU(11174892200618987379),
+ KQU( 254409966159711077), KQU(17158413043140549909),
+ KQU( 3638048789290376272), KQU( 1376816930299489190),
+ KQU( 4622462095217761923), KQU(15086407973010263515),
+ KQU(13253971772784692238), KQU( 5270549043541649236),
+ KQU(11182714186805411604), KQU(12283846437495577140),
+ KQU( 5297647149908953219), KQU(10047451738316836654),
+ KQU( 4938228100367874746), KQU(12328523025304077923),
+ KQU( 3601049438595312361), KQU( 9313624118352733770),
+ KQU(13322966086117661798), KQU(16660005705644029394),
+ KQU(11337677526988872373), KQU(13869299102574417795),
+ KQU(15642043183045645437), KQU( 3021755569085880019),
+ KQU( 4979741767761188161), KQU(13679979092079279587),
+ KQU( 3344685842861071743), KQU(13947960059899588104),
+ KQU( 305806934293368007), KQU( 5749173929201650029),
+ KQU(11123724852118844098), KQU(15128987688788879802),
+ KQU(15251651211024665009), KQU( 7689925933816577776),
+ KQU(16732804392695859449), KQU(17087345401014078468),
+ KQU(14315108589159048871), KQU( 4820700266619778917),
+ KQU(16709637539357958441), KQU( 4936227875177351374),
+ KQU( 2137907697912987247), KQU(11628565601408395420),
+ KQU( 2333250549241556786), KQU( 5711200379577778637),
+ KQU( 5170680131529031729), KQU(12620392043061335164),
+ KQU( 95363390101096078), KQU( 5487981914081709462),
+ KQU( 1763109823981838620), KQU( 3395861271473224396),
+ KQU( 1300496844282213595), KQU( 6894316212820232902),
+ KQU(10673859651135576674), KQU( 5911839658857903252),
+ KQU(17407110743387299102), KQU( 8257427154623140385),
+ KQU(11389003026741800267), KQU( 4070043211095013717),
+ KQU(11663806997145259025), KQU(15265598950648798210),
+ KQU( 630585789434030934), KQU( 3524446529213587334),
+ KQU( 7186424168495184211), KQU(10806585451386379021),
+ KQU(11120017753500499273), KQU( 1586837651387701301),
+ KQU(17530454400954415544), KQU( 9991670045077880430),
+ KQU( 7550997268990730180), KQU( 8640249196597379304),
+ KQU( 3522203892786893823), KQU(10401116549878854788),
+ KQU(13690285544733124852), KQU( 8295785675455774586),
+ KQU(15535716172155117603), KQU( 3112108583723722511),
+ KQU(17633179955339271113), KQU(18154208056063759375),
+ KQU( 1866409236285815666), KQU(13326075895396412882),
+ KQU( 8756261842948020025), KQU( 6281852999868439131),
+ KQU(15087653361275292858), KQU(10333923911152949397),
+ KQU( 5265567645757408500), KQU(12728041843210352184),
+ KQU( 6347959327507828759), KQU( 154112802625564758),
+ KQU(18235228308679780218), KQU( 3253805274673352418),
+ KQU( 4849171610689031197), KQU(17948529398340432518),
+ KQU(13803510475637409167), KQU(13506570190409883095),
+ KQU(15870801273282960805), KQU( 8451286481299170773),
+ KQU( 9562190620034457541), KQU( 8518905387449138364),
+ KQU(12681306401363385655), KQU( 3788073690559762558),
+ KQU( 5256820289573487769), KQU( 2752021372314875467),
+ KQU( 6354035166862520716), KQU( 4328956378309739069),
+ KQU( 449087441228269600), KQU( 5533508742653090868),
+ KQU( 1260389420404746988), KQU(18175394473289055097),
+ KQU( 1535467109660399420), KQU( 8818894282874061442),
+ KQU(12140873243824811213), KQU(15031386653823014946),
+ KQU( 1286028221456149232), KQU( 6329608889367858784),
+ KQU( 9419654354945132725), KQU( 6094576547061672379),
+ KQU(17706217251847450255), KQU( 1733495073065878126),
+ KQU(16918923754607552663), KQU( 8881949849954945044),
+ KQU(12938977706896313891), KQU(14043628638299793407),
+ KQU(18393874581723718233), KQU( 6886318534846892044),
+ KQU(14577870878038334081), KQU(13541558383439414119),
+ KQU(13570472158807588273), KQU(18300760537910283361),
+ KQU( 818368572800609205), KQU( 1417000585112573219),
+ KQU(12337533143867683655), KQU(12433180994702314480),
+ KQU( 778190005829189083), KQU(13667356216206524711),
+ KQU( 9866149895295225230), KQU(11043240490417111999),
+ KQU( 1123933826541378598), KQU( 6469631933605123610),
+ KQU(14508554074431980040), KQU(13918931242962026714),
+ KQU( 2870785929342348285), KQU(14786362626740736974),
+ KQU(13176680060902695786), KQU( 9591778613541679456),
+ KQU( 9097662885117436706), KQU( 749262234240924947),
+ KQU( 1944844067793307093), KQU( 4339214904577487742),
+ KQU( 8009584152961946551), KQU(16073159501225501777),
+ KQU( 3335870590499306217), KQU(17088312653151202847),
+ KQU( 3108893142681931848), KQU(16636841767202792021),
+ KQU(10423316431118400637), KQU( 8008357368674443506),
+ KQU(11340015231914677875), KQU(17687896501594936090),
+ KQU(15173627921763199958), KQU( 542569482243721959),
+ KQU(15071714982769812975), KQU( 4466624872151386956),
+ KQU( 1901780715602332461), KQU( 9822227742154351098),
+ KQU( 1479332892928648780), KQU( 6981611948382474400),
+ KQU( 7620824924456077376), KQU(14095973329429406782),
+ KQU( 7902744005696185404), KQU(15830577219375036920),
+ KQU(10287076667317764416), KQU(12334872764071724025),
+ KQU( 4419302088133544331), KQU(14455842851266090520),
+ KQU(12488077416504654222), KQU( 7953892017701886766),
+ KQU( 6331484925529519007), KQU( 4902145853785030022),
+ KQU(17010159216096443073), KQU(11945354668653886087),
+ KQU(15112022728645230829), KQU(17363484484522986742),
+ KQU( 4423497825896692887), KQU( 8155489510809067471),
+ KQU( 258966605622576285), KQU( 5462958075742020534),
+ KQU( 6763710214913276228), KQU( 2368935183451109054),
+ KQU(14209506165246453811), KQU( 2646257040978514881),
+ KQU( 3776001911922207672), KQU( 1419304601390147631),
+ KQU(14987366598022458284), KQU( 3977770701065815721),
+ KQU( 730820417451838898), KQU( 3982991703612885327),
+ KQU( 2803544519671388477), KQU(17067667221114424649),
+ KQU( 2922555119737867166), KQU( 1989477584121460932),
+ KQU(15020387605892337354), KQU( 9293277796427533547),
+ KQU(10722181424063557247), KQU(16704542332047511651),
+ KQU( 5008286236142089514), KQU(16174732308747382540),
+ KQU(17597019485798338402), KQU(13081745199110622093),
+ KQU( 8850305883842258115), KQU(12723629125624589005),
+ KQU( 8140566453402805978), KQU(15356684607680935061),
+ KQU(14222190387342648650), KQU(11134610460665975178),
+ KQU( 1259799058620984266), KQU(13281656268025610041),
+ KQU( 298262561068153992), KQU(12277871700239212922),
+ KQU(13911297774719779438), KQU(16556727962761474934),
+ KQU(17903010316654728010), KQU( 9682617699648434744),
+ KQU(14757681836838592850), KQU( 1327242446558524473),
+ KQU(11126645098780572792), KQU( 1883602329313221774),
+ KQU( 2543897783922776873), KQU(15029168513767772842),
+ KQU(12710270651039129878), KQU(16118202956069604504),
+ KQU(15010759372168680524), KQU( 2296827082251923948),
+ KQU(10793729742623518101), KQU(13829764151845413046),
+ KQU(17769301223184451213), KQU( 3118268169210783372),
+ KQU(17626204544105123127), KQU( 7416718488974352644),
+ KQU(10450751996212925994), KQU( 9352529519128770586),
+ KQU( 259347569641110140), KQU( 8048588892269692697),
+ KQU( 1774414152306494058), KQU(10669548347214355622),
+ KQU(13061992253816795081), KQU(18432677803063861659),
+ KQU( 8879191055593984333), KQU(12433753195199268041),
+ KQU(14919392415439730602), KQU( 6612848378595332963),
+ KQU( 6320986812036143628), KQU(10465592420226092859),
+ KQU( 4196009278962570808), KQU( 3747816564473572224),
+ KQU(17941203486133732898), KQU( 2350310037040505198),
+ KQU( 5811779859134370113), KQU(10492109599506195126),
+ KQU( 7699650690179541274), KQU( 1954338494306022961),
+ KQU(14095816969027231152), KQU( 5841346919964852061),
+ KQU(14945969510148214735), KQU( 3680200305887550992),
+ KQU( 6218047466131695792), KQU( 8242165745175775096),
+ KQU(11021371934053307357), KQU( 1265099502753169797),
+ KQU( 4644347436111321718), KQU( 3609296916782832859),
+ KQU( 8109807992218521571), KQU(18387884215648662020),
+ KQU(14656324896296392902), KQU(17386819091238216751),
+ KQU(17788300878582317152), KQU( 7919446259742399591),
+ KQU( 4466613134576358004), KQU(12928181023667938509),
+ KQU(13147446154454932030), KQU(16552129038252734620),
+ KQU( 8395299403738822450), KQU(11313817655275361164),
+ KQU( 434258809499511718), KQU( 2074882104954788676),
+ KQU( 7929892178759395518), KQU( 9006461629105745388),
+ KQU( 5176475650000323086), KQU(11128357033468341069),
+ KQU(12026158851559118955), KQU(14699716249471156500),
+ KQU( 448982497120206757), KQU( 4156475356685519900),
+ KQU( 6063816103417215727), KQU(10073289387954971479),
+ KQU( 8174466846138590962), KQU( 2675777452363449006),
+ KQU( 9090685420572474281), KQU( 6659652652765562060),
+ KQU(12923120304018106621), KQU(11117480560334526775),
+ KQU( 937910473424587511), KQU( 1838692113502346645),
+ KQU(11133914074648726180), KQU( 7922600945143884053),
+ KQU(13435287702700959550), KQU( 5287964921251123332),
+ KQU(11354875374575318947), KQU(17955724760748238133),
+ KQU(13728617396297106512), KQU( 4107449660118101255),
+ KQU( 1210269794886589623), KQU(11408687205733456282),
+ KQU( 4538354710392677887), KQU(13566803319341319267),
+ KQU(17870798107734050771), KQU( 3354318982568089135),
+ KQU( 9034450839405133651), KQU(13087431795753424314),
+ KQU( 950333102820688239), KQU( 1968360654535604116),
+ KQU(16840551645563314995), KQU( 8867501803892924995),
+ KQU(11395388644490626845), KQU( 1529815836300732204),
+ KQU(13330848522996608842), KQU( 1813432878817504265),
+ KQU( 2336867432693429560), KQU(15192805445973385902),
+ KQU( 2528593071076407877), KQU( 128459777936689248),
+ KQU( 9976345382867214866), KQU( 6208885766767996043),
+ KQU(14982349522273141706), KQU( 3099654362410737822),
+ KQU(13776700761947297661), KQU( 8806185470684925550),
+ KQU( 8151717890410585321), KQU( 640860591588072925),
+ KQU(14592096303937307465), KQU( 9056472419613564846),
+ KQU(14861544647742266352), KQU(12703771500398470216),
+ KQU( 3142372800384138465), KQU( 6201105606917248196),
+ KQU(18337516409359270184), KQU(15042268695665115339),
+ KQU(15188246541383283846), KQU(12800028693090114519),
+ KQU( 5992859621101493472), KQU(18278043971816803521),
+ KQU( 9002773075219424560), KQU( 7325707116943598353),
+ KQU( 7930571931248040822), KQU( 5645275869617023448),
+ KQU( 7266107455295958487), KQU( 4363664528273524411),
+ KQU(14313875763787479809), KQU(17059695613553486802),
+ KQU( 9247761425889940932), KQU(13704726459237593128),
+ KQU( 2701312427328909832), KQU(17235532008287243115),
+ KQU(14093147761491729538), KQU( 6247352273768386516),
+ KQU( 8268710048153268415), KQU( 7985295214477182083),
+ KQU(15624495190888896807), KQU( 3772753430045262788),
+ KQU( 9133991620474991698), KQU( 5665791943316256028),
+ KQU( 7551996832462193473), KQU(13163729206798953877),
+ KQU( 9263532074153846374), KQU( 1015460703698618353),
+ KQU(17929874696989519390), KQU(18257884721466153847),
+ KQU(16271867543011222991), KQU( 3905971519021791941),
+ KQU(16814488397137052085), KQU( 1321197685504621613),
+ KQU( 2870359191894002181), KQU(14317282970323395450),
+ KQU(13663920845511074366), KQU( 2052463995796539594),
+ KQU(14126345686431444337), KQU( 1727572121947022534),
+ KQU(17793552254485594241), KQU( 6738857418849205750),
+ KQU( 1282987123157442952), KQU(16655480021581159251),
+ KQU( 6784587032080183866), KQU(14726758805359965162),
+ KQU( 7577995933961987349), KQU(12539609320311114036),
+ KQU(10789773033385439494), KQU( 8517001497411158227),
+ KQU(10075543932136339710), KQU(14838152340938811081),
+ KQU( 9560840631794044194), KQU(17445736541454117475),
+ KQU(10633026464336393186), KQU(15705729708242246293),
+ KQU( 1117517596891411098), KQU( 4305657943415886942),
+ KQU( 4948856840533979263), KQU(16071681989041789593),
+ KQU(13723031429272486527), KQU( 7639567622306509462),
+ KQU(12670424537483090390), KQU( 9715223453097197134),
+ KQU( 5457173389992686394), KQU( 289857129276135145),
+ KQU(17048610270521972512), KQU( 692768013309835485),
+ KQU(14823232360546632057), KQU(18218002361317895936),
+ KQU( 3281724260212650204), KQU(16453957266549513795),
+ KQU( 8592711109774511881), KQU( 929825123473369579),
+ KQU(15966784769764367791), KQU( 9627344291450607588),
+ KQU(10849555504977813287), KQU( 9234566913936339275),
+ KQU( 6413807690366911210), KQU(10862389016184219267),
+ KQU(13842504799335374048), KQU( 1531994113376881174),
+ KQU( 2081314867544364459), KQU(16430628791616959932),
+ KQU( 8314714038654394368), KQU( 9155473892098431813),
+ KQU(12577843786670475704), KQU( 4399161106452401017),
+ KQU( 1668083091682623186), KQU( 1741383777203714216),
+ KQU( 2162597285417794374), KQU(15841980159165218736),
+ KQU( 1971354603551467079), KQU( 1206714764913205968),
+ KQU( 4790860439591272330), KQU(14699375615594055799),
+ KQU( 8374423871657449988), KQU(10950685736472937738),
+ KQU( 697344331343267176), KQU(10084998763118059810),
+ KQU(12897369539795983124), KQU(12351260292144383605),
+ KQU( 1268810970176811234), KQU( 7406287800414582768),
+ KQU( 516169557043807831), KQU( 5077568278710520380),
+ KQU( 3828791738309039304), KQU( 7721974069946943610),
+ KQU( 3534670260981096460), KQU( 4865792189600584891),
+ KQU(16892578493734337298), KQU( 9161499464278042590),
+ KQU(11976149624067055931), KQU(13219479887277343990),
+ KQU(14161556738111500680), KQU(14670715255011223056),
+ KQU( 4671205678403576558), KQU(12633022931454259781),
+ KQU(14821376219869187646), KQU( 751181776484317028),
+ KQU( 2192211308839047070), KQU(11787306362361245189),
+ KQU(10672375120744095707), KQU( 4601972328345244467),
+ KQU(15457217788831125879), KQU( 8464345256775460809),
+ KQU(10191938789487159478), KQU( 6184348739615197613),
+ KQU(11425436778806882100), KQU( 2739227089124319793),
+ KQU( 461464518456000551), KQU( 4689850170029177442),
+ KQU( 6120307814374078625), KQU(11153579230681708671),
+ KQU( 7891721473905347926), KQU(10281646937824872400),
+ KQU( 3026099648191332248), KQU( 8666750296953273818),
+ KQU(14978499698844363232), KQU(13303395102890132065),
+ KQU( 8182358205292864080), KQU(10560547713972971291),
+ KQU(11981635489418959093), KQU( 3134621354935288409),
+ KQU(11580681977404383968), KQU(14205530317404088650),
+ KQU( 5997789011854923157), KQU(13659151593432238041),
+ KQU(11664332114338865086), KQU( 7490351383220929386),
+ KQU( 7189290499881530378), KQU(15039262734271020220),
+ KQU( 2057217285976980055), KQU( 555570804905355739),
+ KQU(11235311968348555110), KQU(13824557146269603217),
+ KQU(16906788840653099693), KQU( 7222878245455661677),
+ KQU( 5245139444332423756), KQU( 4723748462805674292),
+ KQU(12216509815698568612), KQU(17402362976648951187),
+ KQU(17389614836810366768), KQU( 4880936484146667711),
+ KQU( 9085007839292639880), KQU(13837353458498535449),
+ KQU(11914419854360366677), KQU(16595890135313864103),
+ KQU( 6313969847197627222), KQU(18296909792163910431),
+ KQU(10041780113382084042), KQU( 2499478551172884794),
+ KQU(11057894246241189489), KQU( 9742243032389068555),
+ KQU(12838934582673196228), KQU(13437023235248490367),
+ KQU(13372420669446163240), KQU( 6752564244716909224),
+ KQU( 7157333073400313737), KQU(12230281516370654308),
+ KQU( 1182884552219419117), KQU( 2955125381312499218),
+ KQU(10308827097079443249), KQU( 1337648572986534958),
+ KQU(16378788590020343939), KQU( 108619126514420935),
+ KQU( 3990981009621629188), KQU( 5460953070230946410),
+ KQU( 9703328329366531883), KQU(13166631489188077236),
+ KQU( 1104768831213675170), KQU( 3447930458553877908),
+ KQU( 8067172487769945676), KQU( 5445802098190775347),
+ KQU( 3244840981648973873), KQU(17314668322981950060),
+ KQU( 5006812527827763807), KQU(18158695070225526260),
+ KQU( 2824536478852417853), KQU(13974775809127519886),
+ KQU( 9814362769074067392), KQU(17276205156374862128),
+ KQU(11361680725379306967), KQU( 3422581970382012542),
+ KQU(11003189603753241266), KQU(11194292945277862261),
+ KQU( 6839623313908521348), KQU(11935326462707324634),
+ KQU( 1611456788685878444), KQU(13112620989475558907),
+ KQU( 517659108904450427), KQU(13558114318574407624),
+ KQU(15699089742731633077), KQU( 4988979278862685458),
+ KQU( 8111373583056521297), KQU( 3891258746615399627),
+ KQU( 8137298251469718086), KQU(12748663295624701649),
+ KQU( 4389835683495292062), KQU( 5775217872128831729),
+ KQU( 9462091896405534927), KQU( 8498124108820263989),
+ KQU( 8059131278842839525), KQU(10503167994254090892),
+ KQU(11613153541070396656), KQU(18069248738504647790),
+ KQU( 570657419109768508), KQU( 3950574167771159665),
+ KQU( 5514655599604313077), KQU( 2908460854428484165),
+ KQU(10777722615935663114), KQU(12007363304839279486),
+ KQU( 9800646187569484767), KQU( 8795423564889864287),
+ KQU(14257396680131028419), KQU( 6405465117315096498),
+ KQU( 7939411072208774878), KQU(17577572378528990006),
+ KQU(14785873806715994850), KQU(16770572680854747390),
+ KQU(18127549474419396481), KQU(11637013449455757750),
+ KQU(14371851933996761086), KQU( 3601181063650110280),
+ KQU( 4126442845019316144), KQU(10198287239244320669),
+ KQU(18000169628555379659), KQU(18392482400739978269),
+ KQU( 6219919037686919957), KQU( 3610085377719446052),
+ KQU( 2513925039981776336), KQU(16679413537926716955),
+ KQU(12903302131714909434), KQU( 5581145789762985009),
+ KQU(12325955044293303233), KQU(17216111180742141204),
+ KQU( 6321919595276545740), KQU( 3507521147216174501),
+ KQU( 9659194593319481840), KQU(11473976005975358326),
+ KQU(14742730101435987026), KQU( 492845897709954780),
+ KQU(16976371186162599676), KQU(17712703422837648655),
+ KQU( 9881254778587061697), KQU( 8413223156302299551),
+ KQU( 1563841828254089168), KQU( 9996032758786671975),
+ KQU( 138877700583772667), KQU(13003043368574995989),
+ KQU( 4390573668650456587), KQU( 8610287390568126755),
+ KQU(15126904974266642199), KQU( 6703637238986057662),
+ KQU( 2873075592956810157), KQU( 6035080933946049418),
+ KQU(13382846581202353014), KQU( 7303971031814642463),
+ KQU(18418024405307444267), KQU( 5847096731675404647),
+ KQU( 4035880699639842500), KQU(11525348625112218478),
+ KQU( 3041162365459574102), KQU( 2604734487727986558),
+ KQU(15526341771636983145), KQU(14556052310697370254),
+ KQU(12997787077930808155), KQU( 9601806501755554499),
+ KQU(11349677952521423389), KQU(14956777807644899350),
+ KQU(16559736957742852721), KQU(12360828274778140726),
+ KQU( 6685373272009662513), KQU(16932258748055324130),
+ KQU(15918051131954158508), KQU( 1692312913140790144),
+ KQU( 546653826801637367), KQU( 5341587076045986652),
+ KQU(14975057236342585662), KQU(12374976357340622412),
+ KQU(10328833995181940552), KQU(12831807101710443149),
+ KQU(10548514914382545716), KQU( 2217806727199715993),
+ KQU(12627067369242845138), KQU( 4598965364035438158),
+ KQU( 150923352751318171), KQU(14274109544442257283),
+ KQU( 4696661475093863031), KQU( 1505764114384654516),
+ KQU(10699185831891495147), KQU( 2392353847713620519),
+ KQU( 3652870166711788383), KQU( 8640653276221911108),
+ KQU( 3894077592275889704), KQU( 4918592872135964845),
+ KQU(16379121273281400789), KQU(12058465483591683656),
+ KQU(11250106829302924945), KQU( 1147537556296983005),
+ KQU( 6376342756004613268), KQU(14967128191709280506),
+ KQU(18007449949790627628), KQU( 9497178279316537841),
+ KQU( 7920174844809394893), KQU(10037752595255719907),
+ KQU(15875342784985217697), KQU(15311615921712850696),
+ KQU( 9552902652110992950), KQU(14054979450099721140),
+ KQU( 5998709773566417349), KQU(18027910339276320187),
+ KQU( 8223099053868585554), KQU( 7842270354824999767),
+ KQU( 4896315688770080292), KQU(12969320296569787895),
+ KQU( 2674321489185759961), KQU( 4053615936864718439),
+ KQU(11349775270588617578), KQU( 4743019256284553975),
+ KQU( 5602100217469723769), KQU(14398995691411527813),
+ KQU( 7412170493796825470), KQU( 836262406131744846),
+ KQU( 8231086633845153022), KQU( 5161377920438552287),
+ KQU( 8828731196169924949), KQU(16211142246465502680),
+ KQU( 3307990879253687818), KQU( 5193405406899782022),
+ KQU( 8510842117467566693), KQU( 6070955181022405365),
+ KQU(14482950231361409799), KQU(12585159371331138077),
+ KQU( 3511537678933588148), KQU( 2041849474531116417),
+ KQU(10944936685095345792), KQU(18303116923079107729),
+ KQU( 2720566371239725320), KQU( 4958672473562397622),
+ KQU( 3032326668253243412), KQU(13689418691726908338),
+ KQU( 1895205511728843996), KQU( 8146303515271990527),
+ KQU(16507343500056113480), KQU( 473996939105902919),
+ KQU( 9897686885246881481), KQU(14606433762712790575),
+ KQU( 6732796251605566368), KQU( 1399778120855368916),
+ KQU( 935023885182833777), KQU(16066282816186753477),
+ KQU( 7291270991820612055), KQU(17530230393129853844),
+ KQU(10223493623477451366), KQU(15841725630495676683),
+ KQU(17379567246435515824), KQU( 8588251429375561971),
+ KQU(18339511210887206423), KQU(17349587430725976100),
+ KQU(12244876521394838088), KQU( 6382187714147161259),
+ KQU(12335807181848950831), KQU(16948885622305460665),
+ KQU(13755097796371520506), KQU(14806740373324947801),
+ KQU( 4828699633859287703), KQU( 8209879281452301604),
+ KQU(12435716669553736437), KQU(13970976859588452131),
+ KQU( 6233960842566773148), KQU(12507096267900505759),
+ KQU( 1198713114381279421), KQU(14989862731124149015),
+ KQU(15932189508707978949), KQU( 2526406641432708722),
+ KQU( 29187427817271982), KQU( 1499802773054556353),
+ KQU(10816638187021897173), KQU( 5436139270839738132),
+ KQU( 6659882287036010082), KQU( 2154048955317173697),
+ KQU(10887317019333757642), KQU(16281091802634424955),
+ KQU(10754549879915384901), KQU(10760611745769249815),
+ KQU( 2161505946972504002), KQU( 5243132808986265107),
+ KQU(10129852179873415416), KQU( 710339480008649081),
+ KQU( 7802129453068808528), KQU(17967213567178907213),
+ KQU(15730859124668605599), KQU(13058356168962376502),
+ KQU( 3701224985413645909), KQU(14464065869149109264),
+ KQU( 9959272418844311646), KQU(10157426099515958752),
+ KQU(14013736814538268528), KQU(17797456992065653951),
+ KQU(17418878140257344806), KQU(15457429073540561521),
+ KQU( 2184426881360949378), KQU( 2062193041154712416),
+ KQU( 8553463347406931661), KQU( 4913057625202871854),
+ KQU( 2668943682126618425), KQU(17064444737891172288),
+ KQU( 4997115903913298637), KQU(12019402608892327416),
+ KQU(17603584559765897352), KQU(11367529582073647975),
+ KQU( 8211476043518436050), KQU( 8676849804070323674),
+ KQU(18431829230394475730), KQU(10490177861361247904),
+ KQU( 9508720602025651349), KQU( 7409627448555722700),
+ KQU( 5804047018862729008), KQU(11943858176893142594),
+ KQU(11908095418933847092), KQU( 5415449345715887652),
+ KQU( 1554022699166156407), KQU( 9073322106406017161),
+ KQU( 7080630967969047082), KQU(18049736940860732943),
+ KQU(12748714242594196794), KQU( 1226992415735156741),
+ KQU(17900981019609531193), KQU(11720739744008710999),
+ KQU( 3006400683394775434), KQU(11347974011751996028),
+ KQU( 3316999628257954608), KQU( 8384484563557639101),
+ KQU(18117794685961729767), KQU( 1900145025596618194),
+ KQU(17459527840632892676), KQU( 5634784101865710994),
+ KQU( 7918619300292897158), KQU( 3146577625026301350),
+ KQU( 9955212856499068767), KQU( 1873995843681746975),
+ KQU( 1561487759967972194), KQU( 8322718804375878474),
+ KQU(11300284215327028366), KQU( 4667391032508998982),
+ KQU( 9820104494306625580), KQU(17922397968599970610),
+ KQU( 1784690461886786712), KQU(14940365084341346821),
+ KQU( 5348719575594186181), KQU(10720419084507855261),
+ KQU(14210394354145143274), KQU( 2426468692164000131),
+ KQU(16271062114607059202), KQU(14851904092357070247),
+ KQU( 6524493015693121897), KQU( 9825473835127138531),
+ KQU(14222500616268569578), KQU(15521484052007487468),
+ KQU(14462579404124614699), KQU(11012375590820665520),
+ KQU(11625327350536084927), KQU(14452017765243785417),
+ KQU( 9989342263518766305), KQU( 3640105471101803790),
+ KQU( 4749866455897513242), KQU(13963064946736312044),
+ KQU(10007416591973223791), KQU(18314132234717431115),
+ KQU( 3286596588617483450), KQU( 7726163455370818765),
+ KQU( 7575454721115379328), KQU( 5308331576437663422),
+ KQU(18288821894903530934), KQU( 8028405805410554106),
+ KQU(15744019832103296628), KQU( 149765559630932100),
+ KQU( 6137705557200071977), KQU(14513416315434803615),
+ KQU(11665702820128984473), KQU( 218926670505601386),
+ KQU( 6868675028717769519), KQU(15282016569441512302),
+ KQU( 5707000497782960236), KQU( 6671120586555079567),
+ KQU( 2194098052618985448), KQU(16849577895477330978),
+ KQU(12957148471017466283), KQU( 1997805535404859393),
+ KQU( 1180721060263860490), KQU(13206391310193756958),
+ KQU(12980208674461861797), KQU( 3825967775058875366),
+ KQU(17543433670782042631), KQU( 1518339070120322730),
+ KQU(16344584340890991669), KQU( 2611327165318529819),
+ KQU(11265022723283422529), KQU( 4001552800373196817),
+ KQU(14509595890079346161), KQU( 3528717165416234562),
+ KQU(18153222571501914072), KQU( 9387182977209744425),
+ KQU(10064342315985580021), KQU(11373678413215253977),
+ KQU( 2308457853228798099), KQU( 9729042942839545302),
+ KQU( 7833785471140127746), KQU( 6351049900319844436),
+ KQU(14454610627133496067), KQU(12533175683634819111),
+ KQU(15570163926716513029), KQU(13356980519185762498)
};
TEST_BEGIN(test_gen_rand_32)
@@ -1543,13 +1543,13 @@ TEST_BEGIN(test_gen_rand_64)
}
r = gen_rand64(ctx);
assert_u64_eq(r, array64[i],
- "Mismatch at array64[%d]=%"PRIx64", gen=%"PRIx64, i,
+ "Mismatch at array64[%d]=%"FMTx64", gen=%"FMTx64, i,
array64[i], r);
}
for (i = 0; i < COUNT_2; i++) {
r = gen_rand64(ctx);
assert_u64_eq(r, array64_2[i],
- "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64"", i,
+ "Mismatch at array64_2[%d]=%"FMTx64" gen=%"FMTx64"", i,
array64_2[i], r);
}
fini_gen_rand(ctx);
@@ -1580,13 +1580,13 @@ TEST_BEGIN(test_by_array_64)
}
r = gen_rand64(ctx);
assert_u64_eq(r, array64[i],
- "Mismatch at array64[%d]=%"PRIx64" gen=%"PRIx64, i,
+ "Mismatch at array64[%d]=%"FMTx64" gen=%"FMTx64, i,
array64[i], r);
}
for (i = 0; i < COUNT_2; i++) {
r = gen_rand64(ctx);
assert_u64_eq(r, array64_2[i],
- "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64, i,
+ "Mismatch at array64_2[%d]=%"FMTx64" gen=%"FMTx64, i,
array64_2[i], r);
}
fini_gen_rand(ctx);
diff --git a/deps/jemalloc/test/unit/atomic.c b/deps/jemalloc/test/unit/atomic.c
new file mode 100644
index 000000000..bdd74f659
--- /dev/null
+++ b/deps/jemalloc/test/unit/atomic.c
@@ -0,0 +1,122 @@
+#include "test/jemalloc_test.h"
+
+#define TEST_STRUCT(p, t) \
+struct p##_test_s { \
+ t accum0; \
+ t x; \
+ t s; \
+}; \
+typedef struct p##_test_s p##_test_t;
+
+#define TEST_BODY(p, t, tc, ta, FMT) do { \
+ const p##_test_t tests[] = { \
+ {(t)-1, (t)-1, (t)-2}, \
+ {(t)-1, (t) 0, (t)-2}, \
+ {(t)-1, (t) 1, (t)-2}, \
+ \
+ {(t) 0, (t)-1, (t)-2}, \
+ {(t) 0, (t) 0, (t)-2}, \
+ {(t) 0, (t) 1, (t)-2}, \
+ \
+ {(t) 1, (t)-1, (t)-2}, \
+ {(t) 1, (t) 0, (t)-2}, \
+ {(t) 1, (t) 1, (t)-2}, \
+ \
+ {(t)0, (t)-(1 << 22), (t)-2}, \
+ {(t)0, (t)(1 << 22), (t)-2}, \
+ {(t)(1 << 22), (t)-(1 << 22), (t)-2}, \
+ {(t)(1 << 22), (t)(1 << 22), (t)-2} \
+ }; \
+ unsigned i; \
+ \
+ for (i = 0; i < sizeof(tests)/sizeof(p##_test_t); i++) { \
+ bool err; \
+ t accum = tests[i].accum0; \
+ assert_##ta##_eq(atomic_read_##p(&accum), \
+ tests[i].accum0, \
+ "Erroneous read, i=%u", i); \
+ \
+ assert_##ta##_eq(atomic_add_##p(&accum, tests[i].x), \
+ (t)((tc)tests[i].accum0 + (tc)tests[i].x), \
+ "i=%u, accum=%"FMT", x=%"FMT, \
+ i, tests[i].accum0, tests[i].x); \
+ assert_##ta##_eq(atomic_read_##p(&accum), accum, \
+ "Erroneous add, i=%u", i); \
+ \
+ accum = tests[i].accum0; \
+ assert_##ta##_eq(atomic_sub_##p(&accum, tests[i].x), \
+ (t)((tc)tests[i].accum0 - (tc)tests[i].x), \
+ "i=%u, accum=%"FMT", x=%"FMT, \
+ i, tests[i].accum0, tests[i].x); \
+ assert_##ta##_eq(atomic_read_##p(&accum), accum, \
+ "Erroneous sub, i=%u", i); \
+ \
+ accum = tests[i].accum0; \
+ err = atomic_cas_##p(&accum, tests[i].x, tests[i].s); \
+ assert_b_eq(err, tests[i].accum0 != tests[i].x, \
+ "Erroneous cas success/failure result"); \
+ assert_##ta##_eq(accum, err ? tests[i].accum0 : \
+ tests[i].s, "Erroneous cas effect, i=%u", i); \
+ \
+ accum = tests[i].accum0; \
+ atomic_write_##p(&accum, tests[i].s); \
+ assert_##ta##_eq(accum, tests[i].s, \
+ "Erroneous write, i=%u", i); \
+ } \
+} while (0)
+
+TEST_STRUCT(uint64, uint64_t)
+TEST_BEGIN(test_atomic_uint64)
+{
+
+#if !(LG_SIZEOF_PTR == 3 || LG_SIZEOF_INT == 3)
+ test_skip("64-bit atomic operations not supported");
+#else
+ TEST_BODY(uint64, uint64_t, uint64_t, u64, FMTx64);
+#endif
+}
+TEST_END
+
+TEST_STRUCT(uint32, uint32_t)
+TEST_BEGIN(test_atomic_uint32)
+{
+
+ TEST_BODY(uint32, uint32_t, uint32_t, u32, "#"FMTx32);
+}
+TEST_END
+
+TEST_STRUCT(p, void *)
+TEST_BEGIN(test_atomic_p)
+{
+
+ TEST_BODY(p, void *, uintptr_t, ptr, "p");
+}
+TEST_END
+
+TEST_STRUCT(z, size_t)
+TEST_BEGIN(test_atomic_z)
+{
+
+ TEST_BODY(z, size_t, size_t, zu, "#zx");
+}
+TEST_END
+
+TEST_STRUCT(u, unsigned)
+TEST_BEGIN(test_atomic_u)
+{
+
+ TEST_BODY(u, unsigned, unsigned, u, "#x");
+}
+TEST_END
+
+int
+main(void)
+{
+
+ return (test(
+ test_atomic_uint64,
+ test_atomic_uint32,
+ test_atomic_p,
+ test_atomic_z,
+ test_atomic_u));
+}
diff --git a/deps/jemalloc/test/unit/bitmap.c b/deps/jemalloc/test/unit/bitmap.c
index 8086b8885..7da583d85 100644
--- a/deps/jemalloc/test/unit/bitmap.c
+++ b/deps/jemalloc/test/unit/bitmap.c
@@ -1,17 +1,11 @@
#include "test/jemalloc_test.h"
-#if (LG_BITMAP_MAXBITS > 12)
-# define MAXBITS 4500
-#else
-# define MAXBITS (1U << LG_BITMAP_MAXBITS)
-#endif
-
TEST_BEGIN(test_bitmap_size)
{
size_t i, prev_size;
prev_size = 0;
- for (i = 1; i <= MAXBITS; i++) {
+ for (i = 1; i <= BITMAP_MAXBITS; i++) {
size_t size = bitmap_size(i);
assert_true(size >= prev_size,
"Bitmap size is smaller than expected");
@@ -24,12 +18,12 @@ TEST_BEGIN(test_bitmap_init)
{
size_t i;
- for (i = 1; i <= MAXBITS; i++) {
+ for (i = 1; i <= BITMAP_MAXBITS; i++) {
bitmap_info_t binfo;
bitmap_info_init(&binfo, i);
{
size_t j;
- bitmap_t *bitmap = malloc(sizeof(bitmap_t) *
+ bitmap_t *bitmap = (bitmap_t *)malloc(sizeof(bitmap_t) *
bitmap_info_ngroups(&binfo));
bitmap_init(bitmap, &binfo);
@@ -47,12 +41,12 @@ TEST_BEGIN(test_bitmap_set)
{
size_t i;
- for (i = 1; i <= MAXBITS; i++) {
+ for (i = 1; i <= BITMAP_MAXBITS; i++) {
bitmap_info_t binfo;
bitmap_info_init(&binfo, i);
{
size_t j;
- bitmap_t *bitmap = malloc(sizeof(bitmap_t) *
+ bitmap_t *bitmap = (bitmap_t *)malloc(sizeof(bitmap_t) *
bitmap_info_ngroups(&binfo));
bitmap_init(bitmap, &binfo);
@@ -70,12 +64,12 @@ TEST_BEGIN(test_bitmap_unset)
{
size_t i;
- for (i = 1; i <= MAXBITS; i++) {
+ for (i = 1; i <= BITMAP_MAXBITS; i++) {
bitmap_info_t binfo;
bitmap_info_init(&binfo, i);
{
size_t j;
- bitmap_t *bitmap = malloc(sizeof(bitmap_t) *
+ bitmap_t *bitmap = (bitmap_t *)malloc(sizeof(bitmap_t) *
bitmap_info_ngroups(&binfo));
bitmap_init(bitmap, &binfo);
@@ -99,12 +93,12 @@ TEST_BEGIN(test_bitmap_sfu)
{
size_t i;
- for (i = 1; i <= MAXBITS; i++) {
+ for (i = 1; i <= BITMAP_MAXBITS; i++) {
bitmap_info_t binfo;
bitmap_info_init(&binfo, i);
{
ssize_t j;
- bitmap_t *bitmap = malloc(sizeof(bitmap_t) *
+ bitmap_t *bitmap = (bitmap_t *)malloc(sizeof(bitmap_t) *
bitmap_info_ngroups(&binfo));
bitmap_init(bitmap, &binfo);
diff --git a/deps/jemalloc/test/unit/ckh.c b/deps/jemalloc/test/unit/ckh.c
index b214c279a..b11759599 100644
--- a/deps/jemalloc/test/unit/ckh.c
+++ b/deps/jemalloc/test/unit/ckh.c
@@ -2,20 +2,24 @@
TEST_BEGIN(test_new_delete)
{
+ tsd_t *tsd;
ckh_t ckh;
- assert_false(ckh_new(&ckh, 2, ckh_string_hash, ckh_string_keycomp),
- "Unexpected ckh_new() error");
- ckh_delete(&ckh);
+ tsd = tsd_fetch();
- assert_false(ckh_new(&ckh, 3, ckh_pointer_hash, ckh_pointer_keycomp),
+ assert_false(ckh_new(tsd, &ckh, 2, ckh_string_hash, ckh_string_keycomp),
"Unexpected ckh_new() error");
- ckh_delete(&ckh);
+ ckh_delete(tsd, &ckh);
+
+ assert_false(ckh_new(tsd, &ckh, 3, ckh_pointer_hash,
+ ckh_pointer_keycomp), "Unexpected ckh_new() error");
+ ckh_delete(tsd, &ckh);
}
TEST_END
TEST_BEGIN(test_count_insert_search_remove)
{
+ tsd_t *tsd;
ckh_t ckh;
const char *strs[] = {
"a string",
@@ -26,7 +30,9 @@ TEST_BEGIN(test_count_insert_search_remove)
const char *missing = "A string not in the hash table.";
size_t i;
- assert_false(ckh_new(&ckh, 2, ckh_string_hash, ckh_string_keycomp),
+ tsd = tsd_fetch();
+
+ assert_false(ckh_new(tsd, &ckh, 2, ckh_string_hash, ckh_string_keycomp),
"Unexpected ckh_new() error");
assert_zu_eq(ckh_count(&ckh), 0,
"ckh_count() should return %zu, but it returned %zu", ZU(0),
@@ -34,7 +40,7 @@ TEST_BEGIN(test_count_insert_search_remove)
/* Insert. */
for (i = 0; i < sizeof(strs)/sizeof(const char *); i++) {
- ckh_insert(&ckh, strs[i], strs[i]);
+ ckh_insert(tsd, &ckh, strs[i], strs[i]);
assert_zu_eq(ckh_count(&ckh), i+1,
"ckh_count() should return %zu, but it returned %zu", i+1,
ckh_count(&ckh));
@@ -58,10 +64,10 @@ TEST_BEGIN(test_count_insert_search_remove)
ks = (i & 1) ? strs[i] : (const char *)NULL;
vs = (i & 2) ? strs[i] : (const char *)NULL;
- assert_ptr_eq((void *)ks, (void *)k.s,
- "Key mismatch, i=%zu", i);
- assert_ptr_eq((void *)vs, (void *)v.s,
- "Value mismatch, i=%zu", i);
+ assert_ptr_eq((void *)ks, (void *)k.s, "Key mismatch, i=%zu",
+ i);
+ assert_ptr_eq((void *)vs, (void *)v.s, "Value mismatch, i=%zu",
+ i);
}
assert_true(ckh_search(&ckh, missing, NULL, NULL),
"Unexpected ckh_search() success");
@@ -79,36 +85,39 @@ TEST_BEGIN(test_count_insert_search_remove)
vp = (i & 2) ? &v.p : NULL;
k.p = NULL;
v.p = NULL;
- assert_false(ckh_remove(&ckh, strs[i], kp, vp),
+ assert_false(ckh_remove(tsd, &ckh, strs[i], kp, vp),
"Unexpected ckh_remove() error");
ks = (i & 1) ? strs[i] : (const char *)NULL;
vs = (i & 2) ? strs[i] : (const char *)NULL;
- assert_ptr_eq((void *)ks, (void *)k.s,
- "Key mismatch, i=%zu", i);
- assert_ptr_eq((void *)vs, (void *)v.s,
- "Value mismatch, i=%zu", i);
+ assert_ptr_eq((void *)ks, (void *)k.s, "Key mismatch, i=%zu",
+ i);
+ assert_ptr_eq((void *)vs, (void *)v.s, "Value mismatch, i=%zu",
+ i);
assert_zu_eq(ckh_count(&ckh),
sizeof(strs)/sizeof(const char *) - i - 1,
"ckh_count() should return %zu, but it returned %zu",
- sizeof(strs)/sizeof(const char *) - i - 1,
+ sizeof(strs)/sizeof(const char *) - i - 1,
ckh_count(&ckh));
}
- ckh_delete(&ckh);
+ ckh_delete(tsd, &ckh);
}
TEST_END
TEST_BEGIN(test_insert_iter_remove)
{
#define NITEMS ZU(1000)
+ tsd_t *tsd;
ckh_t ckh;
void **p[NITEMS];
void *q, *r;
size_t i;
- assert_false(ckh_new(&ckh, 2, ckh_pointer_hash, ckh_pointer_keycomp),
- "Unexpected ckh_new() error");
+ tsd = tsd_fetch();
+
+ assert_false(ckh_new(tsd, &ckh, 2, ckh_pointer_hash,
+ ckh_pointer_keycomp), "Unexpected ckh_new() error");
for (i = 0; i < NITEMS; i++) {
p[i] = mallocx(i+1, 0);
@@ -119,7 +128,7 @@ TEST_BEGIN(test_insert_iter_remove)
size_t j;
for (j = i; j < NITEMS; j++) {
- assert_false(ckh_insert(&ckh, p[j], p[j]),
+ assert_false(ckh_insert(tsd, &ckh, p[j], p[j]),
"Unexpected ckh_insert() failure");
assert_false(ckh_search(&ckh, p[j], &q, &r),
"Unexpected ckh_search() failure");
@@ -134,13 +143,13 @@ TEST_BEGIN(test_insert_iter_remove)
for (j = i + 1; j < NITEMS; j++) {
assert_false(ckh_search(&ckh, p[j], NULL, NULL),
"Unexpected ckh_search() failure");
- assert_false(ckh_remove(&ckh, p[j], &q, &r),
+ assert_false(ckh_remove(tsd, &ckh, p[j], &q, &r),
"Unexpected ckh_remove() failure");
assert_ptr_eq(p[j], q, "Key pointer mismatch");
assert_ptr_eq(p[j], r, "Value pointer mismatch");
assert_true(ckh_search(&ckh, p[j], NULL, NULL),
"Unexpected ckh_search() success");
- assert_true(ckh_remove(&ckh, p[j], &q, &r),
+ assert_true(ckh_remove(tsd, &ckh, p[j], &q, &r),
"Unexpected ckh_remove() success");
}
@@ -150,8 +159,7 @@ TEST_BEGIN(test_insert_iter_remove)
memset(seen, 0, sizeof(seen));
- for (tabind = 0; ckh_iter(&ckh, &tabind, &q, &r) ==
- false;) {
+ for (tabind = 0; !ckh_iter(&ckh, &tabind, &q, &r);) {
size_t k;
assert_ptr_eq(q, r, "Key and val not equal");
@@ -176,21 +184,21 @@ TEST_BEGIN(test_insert_iter_remove)
for (i = 0; i < NITEMS; i++) {
assert_false(ckh_search(&ckh, p[i], NULL, NULL),
"Unexpected ckh_search() failure");
- assert_false(ckh_remove(&ckh, p[i], &q, &r),
+ assert_false(ckh_remove(tsd, &ckh, p[i], &q, &r),
"Unexpected ckh_remove() failure");
assert_ptr_eq(p[i], q, "Key pointer mismatch");
assert_ptr_eq(p[i], r, "Value pointer mismatch");
assert_true(ckh_search(&ckh, p[i], NULL, NULL),
"Unexpected ckh_search() success");
- assert_true(ckh_remove(&ckh, p[i], &q, &r),
+ assert_true(ckh_remove(tsd, &ckh, p[i], &q, &r),
"Unexpected ckh_remove() success");
dallocx(p[i], 0);
}
assert_zu_eq(ckh_count(&ckh), 0,
- "ckh_count() should return %zu, but it returned %zu", ZU(0),
- ckh_count(&ckh));
- ckh_delete(&ckh);
+ "ckh_count() should return %zu, but it returned %zu",
+ ZU(0), ckh_count(&ckh));
+ ckh_delete(tsd, &ckh);
#undef NITEMS
}
TEST_END
diff --git a/deps/jemalloc/test/unit/hash.c b/deps/jemalloc/test/unit/hash.c
index abb394ac0..77a8cede9 100644
--- a/deps/jemalloc/test/unit/hash.c
+++ b/deps/jemalloc/test/unit/hash.c
@@ -64,8 +64,8 @@ hash_variant_verify(hash_variant_t variant)
{
const size_t hashbytes = hash_variant_bits(variant) / 8;
uint8_t key[256];
- uint8_t hashes[hashbytes * 256];
- uint8_t final[hashbytes];
+ VARIABLE_ARRAY(uint8_t, hashes, hashbytes * 256);
+ VARIABLE_ARRAY(uint8_t, final, hashbytes);
unsigned i;
uint32_t computed, expected;
diff --git a/deps/jemalloc/test/unit/junk.c b/deps/jemalloc/test/unit/junk.c
index 85bbf9e2b..b23dd1e95 100644
--- a/deps/jemalloc/test/unit/junk.c
+++ b/deps/jemalloc/test/unit/junk.c
@@ -1,14 +1,26 @@
#include "test/jemalloc_test.h"
#ifdef JEMALLOC_FILL
+# ifndef JEMALLOC_TEST_JUNK_OPT
+# define JEMALLOC_TEST_JUNK_OPT "junk:true"
+# endif
const char *malloc_conf =
- "abort:false,junk:true,zero:false,redzone:true,quarantine:0";
+ "abort:false,zero:false,redzone:true,quarantine:0," JEMALLOC_TEST_JUNK_OPT;
#endif
static arena_dalloc_junk_small_t *arena_dalloc_junk_small_orig;
static arena_dalloc_junk_large_t *arena_dalloc_junk_large_orig;
static huge_dalloc_junk_t *huge_dalloc_junk_orig;
-static void *most_recently_junked;
+static void *watch_for_junking;
+static bool saw_junking;
+
+static void
+watch_junking(void *p)
+{
+
+ watch_for_junking = p;
+ saw_junking = false;
+}
static void
arena_dalloc_junk_small_intercept(void *ptr, arena_bin_info_t *bin_info)
@@ -21,7 +33,8 @@ arena_dalloc_junk_small_intercept(void *ptr, arena_bin_info_t *bin_info)
"Missing junk fill for byte %zu/%zu of deallocated region",
i, bin_info->reg_size);
}
- most_recently_junked = ptr;
+ if (ptr == watch_for_junking)
+ saw_junking = true;
}
static void
@@ -35,7 +48,8 @@ arena_dalloc_junk_large_intercept(void *ptr, size_t usize)
"Missing junk fill for byte %zu/%zu of deallocated region",
i, usize);
}
- most_recently_junked = ptr;
+ if (ptr == watch_for_junking)
+ saw_junking = true;
}
static void
@@ -48,7 +62,8 @@ huge_dalloc_junk_intercept(void *ptr, size_t usize)
* enough that it doesn't make sense to duplicate the decision logic in
* test code, so don't actually check that the region is junk-filled.
*/
- most_recently_junked = ptr;
+ if (ptr == watch_for_junking)
+ saw_junking = true;
}
static void
@@ -57,12 +72,14 @@ test_junk(size_t sz_min, size_t sz_max)
char *s;
size_t sz_prev, sz, i;
- arena_dalloc_junk_small_orig = arena_dalloc_junk_small;
- arena_dalloc_junk_small = arena_dalloc_junk_small_intercept;
- arena_dalloc_junk_large_orig = arena_dalloc_junk_large;
- arena_dalloc_junk_large = arena_dalloc_junk_large_intercept;
- huge_dalloc_junk_orig = huge_dalloc_junk;
- huge_dalloc_junk = huge_dalloc_junk_intercept;
+ if (opt_junk_free) {
+ arena_dalloc_junk_small_orig = arena_dalloc_junk_small;
+ arena_dalloc_junk_small = arena_dalloc_junk_small_intercept;
+ arena_dalloc_junk_large_orig = arena_dalloc_junk_large;
+ arena_dalloc_junk_large = arena_dalloc_junk_large_intercept;
+ huge_dalloc_junk_orig = huge_dalloc_junk;
+ huge_dalloc_junk = huge_dalloc_junk_intercept;
+ }
sz_prev = 0;
s = (char *)mallocx(sz_min, 0);
@@ -80,34 +97,35 @@ test_junk(size_t sz_min, size_t sz_max)
}
for (i = sz_prev; i < sz; i++) {
- assert_c_eq(s[i], 0xa5,
- "Newly allocated byte %zu/%zu isn't junk-filled",
- i, sz);
+ if (opt_junk_alloc) {
+ assert_c_eq(s[i], 0xa5,
+ "Newly allocated byte %zu/%zu isn't "
+ "junk-filled", i, sz);
+ }
s[i] = 'a';
}
if (xallocx(s, sz+1, 0, 0) == sz) {
- void *junked = (void *)s;
-
+ watch_junking(s);
s = (char *)rallocx(s, sz+1, 0);
assert_ptr_not_null((void *)s,
"Unexpected rallocx() failure");
- if (!config_mremap || sz+1 <= arena_maxclass) {
- assert_ptr_eq(most_recently_junked, junked,
- "Expected region of size %zu to be "
- "junk-filled",
- sz);
- }
+ assert_true(!opt_junk_free || saw_junking,
+ "Expected region of size %zu to be junk-filled",
+ sz);
}
}
+ watch_junking(s);
dallocx(s, 0);
- assert_ptr_eq(most_recently_junked, (void *)s,
+ assert_true(!opt_junk_free || saw_junking,
"Expected region of size %zu to be junk-filled", sz);
- arena_dalloc_junk_small = arena_dalloc_junk_small_orig;
- arena_dalloc_junk_large = arena_dalloc_junk_large_orig;
- huge_dalloc_junk = huge_dalloc_junk_orig;
+ if (opt_junk_free) {
+ arena_dalloc_junk_small = arena_dalloc_junk_small_orig;
+ arena_dalloc_junk_large = arena_dalloc_junk_large_orig;
+ huge_dalloc_junk = huge_dalloc_junk_orig;
+ }
}
TEST_BEGIN(test_junk_small)
@@ -122,7 +140,7 @@ TEST_BEGIN(test_junk_large)
{
test_skip_if(!config_fill);
- test_junk(SMALL_MAXCLASS+1, arena_maxclass);
+ test_junk(SMALL_MAXCLASS+1, large_maxclass);
}
TEST_END
@@ -130,20 +148,32 @@ TEST_BEGIN(test_junk_huge)
{
test_skip_if(!config_fill);
- test_junk(arena_maxclass+1, chunksize*2);
+ test_junk(large_maxclass+1, chunksize*2);
}
TEST_END
arena_ralloc_junk_large_t *arena_ralloc_junk_large_orig;
static void *most_recently_trimmed;
+static size_t
+shrink_size(size_t size)
+{
+ size_t shrink_size;
+
+ for (shrink_size = size - 1; nallocx(shrink_size, 0) == size;
+ shrink_size--)
+ ; /* Do nothing. */
+
+ return (shrink_size);
+}
+
static void
arena_ralloc_junk_large_intercept(void *ptr, size_t old_usize, size_t usize)
{
arena_ralloc_junk_large_orig(ptr, old_usize, usize);
- assert_zu_eq(old_usize, arena_maxclass, "Unexpected old_usize");
- assert_zu_eq(usize, arena_maxclass-PAGE, "Unexpected usize");
+ assert_zu_eq(old_usize, large_maxclass, "Unexpected old_usize");
+ assert_zu_eq(usize, shrink_size(large_maxclass), "Unexpected usize");
most_recently_trimmed = ptr;
}
@@ -151,13 +181,13 @@ TEST_BEGIN(test_junk_large_ralloc_shrink)
{
void *p1, *p2;
- p1 = mallocx(arena_maxclass, 0);
+ p1 = mallocx(large_maxclass, 0);
assert_ptr_not_null(p1, "Unexpected mallocx() failure");
arena_ralloc_junk_large_orig = arena_ralloc_junk_large;
arena_ralloc_junk_large = arena_ralloc_junk_large_intercept;
- p2 = rallocx(p1, arena_maxclass-PAGE, 0);
+ p2 = rallocx(p1, shrink_size(large_maxclass), 0);
assert_ptr_eq(p1, p2, "Unexpected move during shrink");
arena_ralloc_junk_large = arena_ralloc_junk_large_orig;
@@ -183,6 +213,7 @@ TEST_BEGIN(test_junk_redzone)
arena_redzone_corruption_t *arena_redzone_corruption_orig;
test_skip_if(!config_fill);
+ test_skip_if(!opt_junk_alloc || !opt_junk_free);
arena_redzone_corruption_orig = arena_redzone_corruption;
arena_redzone_corruption = arena_redzone_corruption_replacement;
@@ -213,6 +244,7 @@ int
main(void)
{
+ assert(!config_fill || opt_junk_alloc || opt_junk_free);
return (test(
test_junk_small,
test_junk_large,
diff --git a/deps/jemalloc/test/unit/junk_alloc.c b/deps/jemalloc/test/unit/junk_alloc.c
new file mode 100644
index 000000000..8db3331d2
--- /dev/null
+++ b/deps/jemalloc/test/unit/junk_alloc.c
@@ -0,0 +1,3 @@
+#define JEMALLOC_TEST_JUNK_OPT "junk:alloc"
+#include "junk.c"
+#undef JEMALLOC_TEST_JUNK_OPT
diff --git a/deps/jemalloc/test/unit/junk_free.c b/deps/jemalloc/test/unit/junk_free.c
new file mode 100644
index 000000000..482a61d07
--- /dev/null
+++ b/deps/jemalloc/test/unit/junk_free.c
@@ -0,0 +1,3 @@
+#define JEMALLOC_TEST_JUNK_OPT "junk:free"
+#include "junk.c"
+#undef JEMALLOC_TEST_JUNK_OPT
diff --git a/deps/jemalloc/test/unit/lg_chunk.c b/deps/jemalloc/test/unit/lg_chunk.c
new file mode 100644
index 000000000..7e5df3814
--- /dev/null
+++ b/deps/jemalloc/test/unit/lg_chunk.c
@@ -0,0 +1,26 @@
+#include "test/jemalloc_test.h"
+
+/*
+ * Make sure that opt.lg_chunk clamping is sufficient. In practice, this test
+ * program will fail a debug assertion during initialization and abort (rather
+ * than the test soft-failing) if clamping is insufficient.
+ */
+const char *malloc_conf = "lg_chunk:0";
+
+TEST_BEGIN(test_lg_chunk_clamp)
+{
+ void *p;
+
+ p = mallocx(1, 0);
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
+ dallocx(p, 0);
+}
+TEST_END
+
+int
+main(void)
+{
+
+ return (test(
+ test_lg_chunk_clamp));
+}
diff --git a/deps/jemalloc/test/unit/mallctl.c b/deps/jemalloc/test/unit/mallctl.c
index 31fb81057..31e354ca7 100644
--- a/deps/jemalloc/test/unit/mallctl.c
+++ b/deps/jemalloc/test/unit/mallctl.c
@@ -126,11 +126,10 @@ TEST_BEGIN(test_mallctl_config)
assert_zu_eq(sz, sizeof(oldval), "Unexpected output size"); \
} while (0)
+ TEST_MALLCTL_CONFIG(cache_oblivious);
TEST_MALLCTL_CONFIG(debug);
- TEST_MALLCTL_CONFIG(dss);
TEST_MALLCTL_CONFIG(fill);
TEST_MALLCTL_CONFIG(lazy_lock);
- TEST_MALLCTL_CONFIG(mremap);
TEST_MALLCTL_CONFIG(munmap);
TEST_MALLCTL_CONFIG(prof);
TEST_MALLCTL_CONFIG(prof_libgcc);
@@ -166,12 +165,11 @@ TEST_BEGIN(test_mallctl_opt)
TEST_MALLCTL_OPT(size_t, narenas, always);
TEST_MALLCTL_OPT(ssize_t, lg_dirty_mult, always);
TEST_MALLCTL_OPT(bool, stats_print, always);
- TEST_MALLCTL_OPT(bool, junk, fill);
+ TEST_MALLCTL_OPT(const char *, junk, fill);
TEST_MALLCTL_OPT(size_t, quarantine, fill);
TEST_MALLCTL_OPT(bool, redzone, fill);
TEST_MALLCTL_OPT(bool, zero, fill);
TEST_MALLCTL_OPT(bool, utrace, utrace);
- TEST_MALLCTL_OPT(bool, valgrind, valgrind);
TEST_MALLCTL_OPT(bool, xmalloc, xmalloc);
TEST_MALLCTL_OPT(bool, tcache, tcache);
TEST_MALLCTL_OPT(size_t, lg_tcache_max, tcache);
@@ -214,6 +212,126 @@ TEST_BEGIN(test_manpage_example)
}
TEST_END
+TEST_BEGIN(test_tcache_none)
+{
+ void *p0, *q, *p1;
+
+ test_skip_if(!config_tcache);
+
+ /* Allocate p and q. */
+ p0 = mallocx(42, 0);
+ assert_ptr_not_null(p0, "Unexpected mallocx() failure");
+ q = mallocx(42, 0);
+ assert_ptr_not_null(q, "Unexpected mallocx() failure");
+
+ /* Deallocate p and q, but bypass the tcache for q. */
+ dallocx(p0, 0);
+ dallocx(q, MALLOCX_TCACHE_NONE);
+
+ /* Make sure that tcache-based allocation returns p, not q. */
+ p1 = mallocx(42, 0);
+ assert_ptr_not_null(p1, "Unexpected mallocx() failure");
+ assert_ptr_eq(p0, p1, "Expected tcache to allocate cached region");
+
+ /* Clean up. */
+ dallocx(p1, MALLOCX_TCACHE_NONE);
+}
+TEST_END
+
+TEST_BEGIN(test_tcache)
+{
+#define NTCACHES 10
+ unsigned tis[NTCACHES];
+ void *ps[NTCACHES];
+ void *qs[NTCACHES];
+ unsigned i;
+ size_t sz, psz, qsz;
+
+ test_skip_if(!config_tcache);
+
+ psz = 42;
+ qsz = nallocx(psz, 0) + 1;
+
+ /* Create tcaches. */
+ for (i = 0; i < NTCACHES; i++) {
+ sz = sizeof(unsigned);
+ assert_d_eq(mallctl("tcache.create", &tis[i], &sz, NULL, 0), 0,
+ "Unexpected mallctl() failure, i=%u", i);
+ }
+
+ /* Exercise tcache ID recycling. */
+ for (i = 0; i < NTCACHES; i++) {
+ assert_d_eq(mallctl("tcache.destroy", NULL, NULL, &tis[i],
+ sizeof(unsigned)), 0, "Unexpected mallctl() failure, i=%u",
+ i);
+ }
+ for (i = 0; i < NTCACHES; i++) {
+ sz = sizeof(unsigned);
+ assert_d_eq(mallctl("tcache.create", &tis[i], &sz, NULL, 0), 0,
+ "Unexpected mallctl() failure, i=%u", i);
+ }
+
+ /* Flush empty tcaches. */
+ for (i = 0; i < NTCACHES; i++) {
+ assert_d_eq(mallctl("tcache.flush", NULL, NULL, &tis[i],
+ sizeof(unsigned)), 0, "Unexpected mallctl() failure, i=%u",
+ i);
+ }
+
+ /* Cache some allocations. */
+ for (i = 0; i < NTCACHES; i++) {
+ ps[i] = mallocx(psz, MALLOCX_TCACHE(tis[i]));
+ assert_ptr_not_null(ps[i], "Unexpected mallocx() failure, i=%u",
+ i);
+ dallocx(ps[i], MALLOCX_TCACHE(tis[i]));
+
+ qs[i] = mallocx(qsz, MALLOCX_TCACHE(tis[i]));
+ assert_ptr_not_null(qs[i], "Unexpected mallocx() failure, i=%u",
+ i);
+ dallocx(qs[i], MALLOCX_TCACHE(tis[i]));
+ }
+
+ /* Verify that tcaches allocate cached regions. */
+ for (i = 0; i < NTCACHES; i++) {
+ void *p0 = ps[i];
+ ps[i] = mallocx(psz, MALLOCX_TCACHE(tis[i]));
+ assert_ptr_not_null(ps[i], "Unexpected mallocx() failure, i=%u",
+ i);
+ assert_ptr_eq(ps[i], p0,
+ "Expected mallocx() to allocate cached region, i=%u", i);
+ }
+
+ /* Verify that reallocation uses cached regions. */
+ for (i = 0; i < NTCACHES; i++) {
+ void *q0 = qs[i];
+ qs[i] = rallocx(ps[i], qsz, MALLOCX_TCACHE(tis[i]));
+ assert_ptr_not_null(qs[i], "Unexpected rallocx() failure, i=%u",
+ i);
+ assert_ptr_eq(qs[i], q0,
+ "Expected rallocx() to allocate cached region, i=%u", i);
+ /* Avoid undefined behavior in case of test failure. */
+ if (qs[i] == NULL)
+ qs[i] = ps[i];
+ }
+ for (i = 0; i < NTCACHES; i++)
+ dallocx(qs[i], MALLOCX_TCACHE(tis[i]));
+
+ /* Flush some non-empty tcaches. */
+ for (i = 0; i < NTCACHES/2; i++) {
+ assert_d_eq(mallctl("tcache.flush", NULL, NULL, &tis[i],
+ sizeof(unsigned)), 0, "Unexpected mallctl() failure, i=%u",
+ i);
+ }
+
+ /* Destroy tcaches. */
+ for (i = 0; i < NTCACHES; i++) {
+ assert_d_eq(mallctl("tcache.destroy", NULL, NULL, &tis[i],
+ sizeof(unsigned)), 0, "Unexpected mallctl() failure, i=%u",
+ i);
+ }
+}
+TEST_END
+
TEST_BEGIN(test_thread_arena)
{
unsigned arena_old, arena_new, narenas;
@@ -231,6 +349,38 @@ TEST_BEGIN(test_thread_arena)
}
TEST_END
+TEST_BEGIN(test_arena_i_lg_dirty_mult)
+{
+ ssize_t lg_dirty_mult, orig_lg_dirty_mult, prev_lg_dirty_mult;
+ size_t sz = sizeof(ssize_t);
+
+ assert_d_eq(mallctl("arena.0.lg_dirty_mult", &orig_lg_dirty_mult, &sz,
+ NULL, 0), 0, "Unexpected mallctl() failure");
+
+ lg_dirty_mult = -2;
+ assert_d_eq(mallctl("arena.0.lg_dirty_mult", NULL, NULL,
+ &lg_dirty_mult, sizeof(ssize_t)), EFAULT,
+ "Unexpected mallctl() success");
+
+ lg_dirty_mult = (sizeof(size_t) << 3);
+ assert_d_eq(mallctl("arena.0.lg_dirty_mult", NULL, NULL,
+ &lg_dirty_mult, sizeof(ssize_t)), EFAULT,
+ "Unexpected mallctl() success");
+
+ for (prev_lg_dirty_mult = orig_lg_dirty_mult, lg_dirty_mult = -1;
+ lg_dirty_mult < (ssize_t)(sizeof(size_t) << 3); prev_lg_dirty_mult
+ = lg_dirty_mult, lg_dirty_mult++) {
+ ssize_t old_lg_dirty_mult;
+
+ assert_d_eq(mallctl("arena.0.lg_dirty_mult", &old_lg_dirty_mult,
+ &sz, &lg_dirty_mult, sizeof(ssize_t)), 0,
+ "Unexpected mallctl() failure");
+ assert_zd_eq(old_lg_dirty_mult, prev_lg_dirty_mult,
+ "Unexpected old arena.0.lg_dirty_mult");
+ }
+}
+TEST_END
+
TEST_BEGIN(test_arena_i_purge)
{
unsigned narenas;
@@ -255,27 +405,41 @@ TEST_BEGIN(test_arena_i_dss)
{
const char *dss_prec_old, *dss_prec_new;
size_t sz = sizeof(dss_prec_old);
+ size_t mib[3];
+ size_t miblen;
- dss_prec_new = "primary";
- assert_d_eq(mallctl("arena.0.dss", &dss_prec_old, &sz, &dss_prec_new,
+ miblen = sizeof(mib)/sizeof(size_t);
+ assert_d_eq(mallctlnametomib("arena.0.dss", mib, &miblen), 0,
+ "Unexpected mallctlnametomib() error");
+
+ dss_prec_new = "disabled";
+ assert_d_eq(mallctlbymib(mib, miblen, &dss_prec_old, &sz, &dss_prec_new,
sizeof(dss_prec_new)), 0, "Unexpected mallctl() failure");
assert_str_ne(dss_prec_old, "primary",
"Unexpected default for dss precedence");
- assert_d_eq(mallctl("arena.0.dss", &dss_prec_new, &sz, &dss_prec_old,
+ assert_d_eq(mallctlbymib(mib, miblen, &dss_prec_new, &sz, &dss_prec_old,
sizeof(dss_prec_old)), 0, "Unexpected mallctl() failure");
-}
-TEST_END
-TEST_BEGIN(test_arenas_purge)
-{
- unsigned arena = 0;
+ assert_d_eq(mallctlbymib(mib, miblen, &dss_prec_old, &sz, NULL, 0), 0,
+ "Unexpected mallctl() failure");
+ assert_str_ne(dss_prec_old, "primary",
+ "Unexpected value for dss precedence");
- assert_d_eq(mallctl("arenas.purge", NULL, NULL, &arena, sizeof(arena)),
- 0, "Unexpected mallctl() failure");
+ mib[1] = narenas_total_get();
+ dss_prec_new = "disabled";
+ assert_d_eq(mallctlbymib(mib, miblen, &dss_prec_old, &sz, &dss_prec_new,
+ sizeof(dss_prec_new)), 0, "Unexpected mallctl() failure");
+ assert_str_ne(dss_prec_old, "primary",
+ "Unexpected default for dss precedence");
- assert_d_eq(mallctl("arenas.purge", NULL, NULL, NULL, 0), 0,
+ assert_d_eq(mallctlbymib(mib, miblen, &dss_prec_new, &sz, &dss_prec_old,
+ sizeof(dss_prec_new)), 0, "Unexpected mallctl() failure");
+
+ assert_d_eq(mallctlbymib(mib, miblen, &dss_prec_old, &sz, NULL, 0), 0,
"Unexpected mallctl() failure");
+ assert_str_ne(dss_prec_old, "primary",
+ "Unexpected value for dss precedence");
}
TEST_END
@@ -287,7 +451,7 @@ TEST_BEGIN(test_arenas_initialized)
assert_d_eq(mallctl("arenas.narenas", &narenas, &sz, NULL, 0), 0,
"Unexpected mallctl() failure");
{
- bool initialized[narenas];
+ VARIABLE_ARRAY(bool, initialized, narenas);
sz = narenas * sizeof(bool);
assert_d_eq(mallctl("arenas.initialized", initialized, &sz,
@@ -296,6 +460,38 @@ TEST_BEGIN(test_arenas_initialized)
}
TEST_END
+TEST_BEGIN(test_arenas_lg_dirty_mult)
+{
+ ssize_t lg_dirty_mult, orig_lg_dirty_mult, prev_lg_dirty_mult;
+ size_t sz = sizeof(ssize_t);
+
+ assert_d_eq(mallctl("arenas.lg_dirty_mult", &orig_lg_dirty_mult, &sz,
+ NULL, 0), 0, "Unexpected mallctl() failure");
+
+ lg_dirty_mult = -2;
+ assert_d_eq(mallctl("arenas.lg_dirty_mult", NULL, NULL,
+ &lg_dirty_mult, sizeof(ssize_t)), EFAULT,
+ "Unexpected mallctl() success");
+
+ lg_dirty_mult = (sizeof(size_t) << 3);
+ assert_d_eq(mallctl("arenas.lg_dirty_mult", NULL, NULL,
+ &lg_dirty_mult, sizeof(ssize_t)), EFAULT,
+ "Unexpected mallctl() success");
+
+ for (prev_lg_dirty_mult = orig_lg_dirty_mult, lg_dirty_mult = -1;
+ lg_dirty_mult < (ssize_t)(sizeof(size_t) << 3); prev_lg_dirty_mult =
+ lg_dirty_mult, lg_dirty_mult++) {
+ ssize_t old_lg_dirty_mult;
+
+ assert_d_eq(mallctl("arenas.lg_dirty_mult", &old_lg_dirty_mult,
+ &sz, &lg_dirty_mult, sizeof(ssize_t)), 0,
+ "Unexpected mallctl() failure");
+ assert_zd_eq(old_lg_dirty_mult, prev_lg_dirty_mult,
+ "Unexpected old arenas.lg_dirty_mult");
+ }
+}
+TEST_END
+
TEST_BEGIN(test_arenas_constants)
{
@@ -310,7 +506,8 @@ TEST_BEGIN(test_arenas_constants)
TEST_ARENAS_CONSTANT(size_t, quantum, QUANTUM);
TEST_ARENAS_CONSTANT(size_t, page, PAGE);
TEST_ARENAS_CONSTANT(unsigned, nbins, NBINS);
- TEST_ARENAS_CONSTANT(size_t, nlruns, nlclasses);
+ TEST_ARENAS_CONSTANT(unsigned, nlruns, nlclasses);
+ TEST_ARENAS_CONSTANT(unsigned, nhchunks, nhclasses);
#undef TEST_ARENAS_CONSTANT
}
@@ -346,12 +543,29 @@ TEST_BEGIN(test_arenas_lrun_constants)
assert_zu_eq(name, expected, "Incorrect "#name" size"); \
} while (0)
- TEST_ARENAS_LRUN_CONSTANT(size_t, size, (1 << LG_PAGE));
+ TEST_ARENAS_LRUN_CONSTANT(size_t, size, LARGE_MINCLASS);
#undef TEST_ARENAS_LRUN_CONSTANT
}
TEST_END
+TEST_BEGIN(test_arenas_hchunk_constants)
+{
+
+#define TEST_ARENAS_HCHUNK_CONSTANT(t, name, expected) do { \
+ t name; \
+ size_t sz = sizeof(t); \
+ assert_d_eq(mallctl("arenas.hchunk.0."#name, &name, &sz, NULL, \
+ 0), 0, "Unexpected mallctl() failure"); \
+ assert_zu_eq(name, expected, "Incorrect "#name" size"); \
+} while (0)
+
+ TEST_ARENAS_HCHUNK_CONSTANT(size_t, size, chunksize);
+
+#undef TEST_ARENAS_HCHUNK_CONSTANT
+}
+TEST_END
+
TEST_BEGIN(test_arenas_extend)
{
unsigned narenas_before, arena, narenas_after;
@@ -402,14 +616,18 @@ main(void)
test_mallctl_config,
test_mallctl_opt,
test_manpage_example,
+ test_tcache_none,
+ test_tcache,
test_thread_arena,
+ test_arena_i_lg_dirty_mult,
test_arena_i_purge,
test_arena_i_dss,
- test_arenas_purge,
test_arenas_initialized,
+ test_arenas_lg_dirty_mult,
test_arenas_constants,
test_arenas_bin_constants,
test_arenas_lrun_constants,
+ test_arenas_hchunk_constants,
test_arenas_extend,
test_stats_arenas));
}
diff --git a/deps/jemalloc/test/unit/math.c b/deps/jemalloc/test/unit/math.c
index a1b288ea1..ebec77a62 100644
--- a/deps/jemalloc/test/unit/math.c
+++ b/deps/jemalloc/test/unit/math.c
@@ -3,6 +3,12 @@
#define MAX_REL_ERR 1.0e-9
#define MAX_ABS_ERR 1.0e-9
+#include <float.h>
+
+#ifndef INFINITY
+#define INFINITY (DBL_MAX + DBL_MAX)
+#endif
+
static bool
double_eq_rel(double a, double b, double max_rel_err, double max_abs_err)
{
diff --git a/deps/jemalloc/test/unit/mq.c b/deps/jemalloc/test/unit/mq.c
index f57e96af1..bde2a480b 100644
--- a/deps/jemalloc/test/unit/mq.c
+++ b/deps/jemalloc/test/unit/mq.c
@@ -54,7 +54,7 @@ thd_sender_start(void *arg)
mq_msg_t *msg;
void *p;
p = mallocx(sizeof(mq_msg_t), 0);
- assert_ptr_not_null(p, "Unexpected allocm() failure");
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
msg = (mq_msg_t *)p;
mq_put(mq, msg);
}
@@ -85,6 +85,7 @@ TEST_END
int
main(void)
{
+
return (test(
test_mq_basic,
test_mq_threaded));
diff --git a/deps/jemalloc/test/unit/prof_accum.c b/deps/jemalloc/test/unit/prof_accum.c
index 050a8a7ee..fd229e0fd 100644
--- a/deps/jemalloc/test/unit/prof_accum.c
+++ b/deps/jemalloc/test/unit/prof_accum.c
@@ -1,4 +1,9 @@
-#include "prof_accum.h"
+#include "test/jemalloc_test.h"
+
+#define NTHREADS 4
+#define NALLOCS_PER_THREAD 50
+#define DUMP_INTERVAL 1
+#define BT_COUNT_CHECK_INTERVAL 5
#ifdef JEMALLOC_PROF
const char *malloc_conf =
@@ -20,7 +25,7 @@ static void *
alloc_from_permuted_backtrace(unsigned thd_ind, unsigned iteration)
{
- return (alloc_0(thd_ind*NALLOCS_PER_THREAD + iteration));
+ return (btalloc(1, thd_ind*NALLOCS_PER_THREAD + iteration));
}
static void *
diff --git a/deps/jemalloc/test/unit/prof_accum.h b/deps/jemalloc/test/unit/prof_accum.h
deleted file mode 100644
index 109d86b59..000000000
--- a/deps/jemalloc/test/unit/prof_accum.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "test/jemalloc_test.h"
-
-#define NTHREADS 4
-#define NALLOCS_PER_THREAD 50
-#define DUMP_INTERVAL 1
-#define BT_COUNT_CHECK_INTERVAL 5
-
-#define alloc_n_proto(n) \
-void *alloc_##n(unsigned bits);
-alloc_n_proto(0)
-alloc_n_proto(1)
-
-#define alloc_n_gen(n) \
-void * \
-alloc_##n(unsigned bits) \
-{ \
- void *p; \
- \
- if (bits == 0) \
- p = mallocx(1, 0); \
- else { \
- switch (bits & 0x1U) { \
- case 0: \
- p = (alloc_0(bits >> 1)); \
- break; \
- case 1: \
- p = (alloc_1(bits >> 1)); \
- break; \
- default: not_reached(); \
- } \
- } \
- /* Intentionally sabotage tail call optimization. */ \
- assert_ptr_not_null(p, "Unexpected mallocx() failure"); \
- return (p); \
-}
diff --git a/deps/jemalloc/test/unit/prof_accum_a.c b/deps/jemalloc/test/unit/prof_accum_a.c
deleted file mode 100644
index 42ad521d8..000000000
--- a/deps/jemalloc/test/unit/prof_accum_a.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "prof_accum.h"
-
-alloc_n_gen(0)
diff --git a/deps/jemalloc/test/unit/prof_accum_b.c b/deps/jemalloc/test/unit/prof_accum_b.c
deleted file mode 100644
index 60d9dab6a..000000000
--- a/deps/jemalloc/test/unit/prof_accum_b.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "prof_accum.h"
-
-alloc_n_gen(1)
diff --git a/deps/jemalloc/test/unit/prof_active.c b/deps/jemalloc/test/unit/prof_active.c
new file mode 100644
index 000000000..814909572
--- /dev/null
+++ b/deps/jemalloc/test/unit/prof_active.c
@@ -0,0 +1,136 @@
+#include "test/jemalloc_test.h"
+
+#ifdef JEMALLOC_PROF
+const char *malloc_conf =
+ "prof:true,prof_thread_active_init:false,lg_prof_sample:0";
+#endif
+
+static void
+mallctl_bool_get(const char *name, bool expected, const char *func, int line)
+{
+ bool old;
+ size_t sz;
+
+ sz = sizeof(old);
+ assert_d_eq(mallctl(name, &old, &sz, NULL, 0), 0,
+ "%s():%d: Unexpected mallctl failure reading %s", func, line, name);
+ assert_b_eq(old, expected, "%s():%d: Unexpected %s value", func, line,
+ name);
+}
+
+static void
+mallctl_bool_set(const char *name, bool old_expected, bool val_new,
+ const char *func, int line)
+{
+ bool old;
+ size_t sz;
+
+ sz = sizeof(old);
+ assert_d_eq(mallctl(name, &old, &sz, &val_new, sizeof(val_new)), 0,
+ "%s():%d: Unexpected mallctl failure reading/writing %s", func,
+ line, name);
+ assert_b_eq(old, old_expected, "%s():%d: Unexpected %s value", func,
+ line, name);
+}
+
+static void
+mallctl_prof_active_get_impl(bool prof_active_old_expected, const char *func,
+ int line)
+{
+
+ mallctl_bool_get("prof.active", prof_active_old_expected, func, line);
+}
+#define mallctl_prof_active_get(a) \
+ mallctl_prof_active_get_impl(a, __func__, __LINE__)
+
+static void
+mallctl_prof_active_set_impl(bool prof_active_old_expected,
+ bool prof_active_new, const char *func, int line)
+{
+
+ mallctl_bool_set("prof.active", prof_active_old_expected,
+ prof_active_new, func, line);
+}
+#define mallctl_prof_active_set(a, b) \
+ mallctl_prof_active_set_impl(a, b, __func__, __LINE__)
+
+static void
+mallctl_thread_prof_active_get_impl(bool thread_prof_active_old_expected,
+ const char *func, int line)
+{
+
+ mallctl_bool_get("thread.prof.active", thread_prof_active_old_expected,
+ func, line);
+}
+#define mallctl_thread_prof_active_get(a) \
+ mallctl_thread_prof_active_get_impl(a, __func__, __LINE__)
+
+static void
+mallctl_thread_prof_active_set_impl(bool thread_prof_active_old_expected,
+ bool thread_prof_active_new, const char *func, int line)
+{
+
+ mallctl_bool_set("thread.prof.active", thread_prof_active_old_expected,
+ thread_prof_active_new, func, line);
+}
+#define mallctl_thread_prof_active_set(a, b) \
+ mallctl_thread_prof_active_set_impl(a, b, __func__, __LINE__)
+
+static void
+prof_sampling_probe_impl(bool expect_sample, const char *func, int line)
+{
+ void *p;
+ size_t expected_backtraces = expect_sample ? 1 : 0;
+
+ assert_zu_eq(prof_bt_count(), 0, "%s():%d: Expected 0 backtraces", func,
+ line);
+ p = mallocx(1, 0);
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
+ assert_zu_eq(prof_bt_count(), expected_backtraces,
+ "%s():%d: Unexpected backtrace count", func, line);
+ dallocx(p, 0);
+}
+#define prof_sampling_probe(a) \
+ prof_sampling_probe_impl(a, __func__, __LINE__)
+
+TEST_BEGIN(test_prof_active)
+{
+
+ test_skip_if(!config_prof);
+
+ mallctl_prof_active_get(true);
+ mallctl_thread_prof_active_get(false);
+
+ mallctl_prof_active_set(true, true);
+ mallctl_thread_prof_active_set(false, false);
+ /* prof.active, !thread.prof.active. */
+ prof_sampling_probe(false);
+
+ mallctl_prof_active_set(true, false);
+ mallctl_thread_prof_active_set(false, false);
+ /* !prof.active, !thread.prof.active. */
+ prof_sampling_probe(false);
+
+ mallctl_prof_active_set(false, false);
+ mallctl_thread_prof_active_set(false, true);
+ /* !prof.active, thread.prof.active. */
+ prof_sampling_probe(false);
+
+ mallctl_prof_active_set(false, true);
+ mallctl_thread_prof_active_set(true, true);
+ /* prof.active, thread.prof.active. */
+ prof_sampling_probe(true);
+
+ /* Restore settings. */
+ mallctl_prof_active_set(true, true);
+ mallctl_thread_prof_active_set(true, false);
+}
+TEST_END
+
+int
+main(void)
+{
+
+ return (test(
+ test_prof_active));
+}
diff --git a/deps/jemalloc/test/unit/prof_gdump.c b/deps/jemalloc/test/unit/prof_gdump.c
index a00b1054f..a0e6ee921 100644
--- a/deps/jemalloc/test/unit/prof_gdump.c
+++ b/deps/jemalloc/test/unit/prof_gdump.c
@@ -21,8 +21,9 @@ prof_dump_open_intercept(bool propagate_err, const char *filename)
TEST_BEGIN(test_gdump)
{
- bool active;
- void *p, *q;
+ bool active, gdump, gdump_old;
+ void *p, *q, *r, *s;
+ size_t sz;
test_skip_if(!config_prof);
@@ -42,8 +43,32 @@ TEST_BEGIN(test_gdump)
assert_ptr_not_null(q, "Unexpected mallocx() failure");
assert_true(did_prof_dump_open, "Expected a profile dump");
+ gdump = false;
+ sz = sizeof(gdump_old);
+ assert_d_eq(mallctl("prof.gdump", &gdump_old, &sz, &gdump,
+ sizeof(gdump)), 0,
+ "Unexpected mallctl failure while disabling prof.gdump");
+ assert(gdump_old);
+ did_prof_dump_open = false;
+ r = mallocx(chunksize, 0);
+ assert_ptr_not_null(q, "Unexpected mallocx() failure");
+ assert_false(did_prof_dump_open, "Unexpected profile dump");
+
+ gdump = true;
+ sz = sizeof(gdump_old);
+ assert_d_eq(mallctl("prof.gdump", &gdump_old, &sz, &gdump,
+ sizeof(gdump)), 0,
+ "Unexpected mallctl failure while enabling prof.gdump");
+ assert(!gdump_old);
+ did_prof_dump_open = false;
+ s = mallocx(chunksize, 0);
+ assert_ptr_not_null(q, "Unexpected mallocx() failure");
+ assert_true(did_prof_dump_open, "Expected a profile dump");
+
dallocx(p, 0);
dallocx(q, 0);
+ dallocx(r, 0);
+ dallocx(s, 0);
}
TEST_END
diff --git a/deps/jemalloc/test/unit/prof_reset.c b/deps/jemalloc/test/unit/prof_reset.c
new file mode 100644
index 000000000..69983e5e5
--- /dev/null
+++ b/deps/jemalloc/test/unit/prof_reset.c
@@ -0,0 +1,302 @@
+#include "test/jemalloc_test.h"
+
+#ifdef JEMALLOC_PROF
+const char *malloc_conf =
+ "prof:true,prof_active:false,lg_prof_sample:0";
+#endif
+
+static int
+prof_dump_open_intercept(bool propagate_err, const char *filename)
+{
+ int fd;
+
+ fd = open("/dev/null", O_WRONLY);
+ assert_d_ne(fd, -1, "Unexpected open() failure");
+
+ return (fd);
+}
+
+static void
+set_prof_active(bool active)
+{
+
+ assert_d_eq(mallctl("prof.active", NULL, NULL, &active, sizeof(active)),
+ 0, "Unexpected mallctl failure");
+}
+
+static size_t
+get_lg_prof_sample(void)
+{
+ size_t lg_prof_sample;
+ size_t sz = sizeof(size_t);
+
+ assert_d_eq(mallctl("prof.lg_sample", &lg_prof_sample, &sz, NULL, 0), 0,
+ "Unexpected mallctl failure while reading profiling sample rate");
+ return (lg_prof_sample);
+}
+
+static void
+do_prof_reset(size_t lg_prof_sample)
+{
+ assert_d_eq(mallctl("prof.reset", NULL, NULL,
+ &lg_prof_sample, sizeof(size_t)), 0,
+ "Unexpected mallctl failure while resetting profile data");
+ assert_zu_eq(lg_prof_sample, get_lg_prof_sample(),
+ "Expected profile sample rate change");
+}
+
+TEST_BEGIN(test_prof_reset_basic)
+{
+ size_t lg_prof_sample_orig, lg_prof_sample, lg_prof_sample_next;
+ size_t sz;
+ unsigned i;
+
+ test_skip_if(!config_prof);
+
+ sz = sizeof(size_t);
+ assert_d_eq(mallctl("opt.lg_prof_sample", &lg_prof_sample_orig, &sz,
+ NULL, 0), 0,
+ "Unexpected mallctl failure while reading profiling sample rate");
+ assert_zu_eq(lg_prof_sample_orig, 0,
+ "Unexpected profiling sample rate");
+ lg_prof_sample = get_lg_prof_sample();
+ assert_zu_eq(lg_prof_sample_orig, lg_prof_sample,
+ "Unexpected disagreement between \"opt.lg_prof_sample\" and "
+ "\"prof.lg_sample\"");
+
+ /* Test simple resets. */
+ for (i = 0; i < 2; i++) {
+ assert_d_eq(mallctl("prof.reset", NULL, NULL, NULL, 0), 0,
+ "Unexpected mallctl failure while resetting profile data");
+ lg_prof_sample = get_lg_prof_sample();
+ assert_zu_eq(lg_prof_sample_orig, lg_prof_sample,
+ "Unexpected profile sample rate change");
+ }
+
+ /* Test resets with prof.lg_sample changes. */
+ lg_prof_sample_next = 1;
+ for (i = 0; i < 2; i++) {
+ do_prof_reset(lg_prof_sample_next);
+ lg_prof_sample = get_lg_prof_sample();
+ assert_zu_eq(lg_prof_sample, lg_prof_sample_next,
+ "Expected profile sample rate change");
+ lg_prof_sample_next = lg_prof_sample_orig;
+ }
+
+ /* Make sure the test code restored prof.lg_sample. */
+ lg_prof_sample = get_lg_prof_sample();
+ assert_zu_eq(lg_prof_sample_orig, lg_prof_sample,
+ "Unexpected disagreement between \"opt.lg_prof_sample\" and "
+ "\"prof.lg_sample\"");
+}
+TEST_END
+
+bool prof_dump_header_intercepted = false;
+prof_cnt_t cnt_all_copy = {0, 0, 0, 0};
+static bool
+prof_dump_header_intercept(bool propagate_err, const prof_cnt_t *cnt_all)
+{
+
+ prof_dump_header_intercepted = true;
+ memcpy(&cnt_all_copy, cnt_all, sizeof(prof_cnt_t));
+
+ return (false);
+}
+
+TEST_BEGIN(test_prof_reset_cleanup)
+{
+ void *p;
+ prof_dump_header_t *prof_dump_header_orig;
+
+ test_skip_if(!config_prof);
+
+ set_prof_active(true);
+
+ assert_zu_eq(prof_bt_count(), 0, "Expected 0 backtraces");
+ p = mallocx(1, 0);
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
+ assert_zu_eq(prof_bt_count(), 1, "Expected 1 backtrace");
+
+ prof_dump_header_orig = prof_dump_header;
+ prof_dump_header = prof_dump_header_intercept;
+ assert_false(prof_dump_header_intercepted, "Unexpected intercept");
+
+ assert_d_eq(mallctl("prof.dump", NULL, NULL, NULL, 0),
+ 0, "Unexpected error while dumping heap profile");
+ assert_true(prof_dump_header_intercepted, "Expected intercept");
+ assert_u64_eq(cnt_all_copy.curobjs, 1, "Expected 1 allocation");
+
+ assert_d_eq(mallctl("prof.reset", NULL, NULL, NULL, 0), 0,
+ "Unexpected error while resetting heap profile data");
+ assert_d_eq(mallctl("prof.dump", NULL, NULL, NULL, 0),
+ 0, "Unexpected error while dumping heap profile");
+ assert_u64_eq(cnt_all_copy.curobjs, 0, "Expected 0 allocations");
+ assert_zu_eq(prof_bt_count(), 1, "Expected 1 backtrace");
+
+ prof_dump_header = prof_dump_header_orig;
+
+ dallocx(p, 0);
+ assert_zu_eq(prof_bt_count(), 0, "Expected 0 backtraces");
+
+ set_prof_active(false);
+}
+TEST_END
+
+#define NTHREADS 4
+#define NALLOCS_PER_THREAD (1U << 13)
+#define OBJ_RING_BUF_COUNT 1531
+#define RESET_INTERVAL (1U << 10)
+#define DUMP_INTERVAL 3677
+static void *
+thd_start(void *varg)
+{
+ unsigned thd_ind = *(unsigned *)varg;
+ unsigned i;
+ void *objs[OBJ_RING_BUF_COUNT];
+
+ memset(objs, 0, sizeof(objs));
+
+ for (i = 0; i < NALLOCS_PER_THREAD; i++) {
+ if (i % RESET_INTERVAL == 0) {
+ assert_d_eq(mallctl("prof.reset", NULL, NULL, NULL, 0),
+ 0, "Unexpected error while resetting heap profile "
+ "data");
+ }
+
+ if (i % DUMP_INTERVAL == 0) {
+ assert_d_eq(mallctl("prof.dump", NULL, NULL, NULL, 0),
+ 0, "Unexpected error while dumping heap profile");
+ }
+
+ {
+ void **pp = &objs[i % OBJ_RING_BUF_COUNT];
+ if (*pp != NULL) {
+ dallocx(*pp, 0);
+ *pp = NULL;
+ }
+ *pp = btalloc(1, thd_ind*NALLOCS_PER_THREAD + i);
+ assert_ptr_not_null(*pp,
+ "Unexpected btalloc() failure");
+ }
+ }
+
+ /* Clean up any remaining objects. */
+ for (i = 0; i < OBJ_RING_BUF_COUNT; i++) {
+ void **pp = &objs[i % OBJ_RING_BUF_COUNT];
+ if (*pp != NULL) {
+ dallocx(*pp, 0);
+ *pp = NULL;
+ }
+ }
+
+ return (NULL);
+}
+
+TEST_BEGIN(test_prof_reset)
+{
+ size_t lg_prof_sample_orig;
+ thd_t thds[NTHREADS];
+ unsigned thd_args[NTHREADS];
+ unsigned i;
+ size_t bt_count, tdata_count;
+
+ test_skip_if(!config_prof);
+
+ bt_count = prof_bt_count();
+ assert_zu_eq(bt_count, 0,
+ "Unexpected pre-existing tdata structures");
+ tdata_count = prof_tdata_count();
+
+ lg_prof_sample_orig = get_lg_prof_sample();
+ do_prof_reset(5);
+
+ set_prof_active(true);
+
+ for (i = 0; i < NTHREADS; i++) {
+ thd_args[i] = i;
+ thd_create(&thds[i], thd_start, (void *)&thd_args[i]);
+ }
+ for (i = 0; i < NTHREADS; i++)
+ thd_join(thds[i], NULL);
+
+ assert_zu_eq(prof_bt_count(), bt_count,
+ "Unexpected bactrace count change");
+ assert_zu_eq(prof_tdata_count(), tdata_count,
+ "Unexpected remaining tdata structures");
+
+ set_prof_active(false);
+
+ do_prof_reset(lg_prof_sample_orig);
+}
+TEST_END
+#undef NTHREADS
+#undef NALLOCS_PER_THREAD
+#undef OBJ_RING_BUF_COUNT
+#undef RESET_INTERVAL
+#undef DUMP_INTERVAL
+
+/* Test sampling at the same allocation site across resets. */
+#define NITER 10
+TEST_BEGIN(test_xallocx)
+{
+ size_t lg_prof_sample_orig;
+ unsigned i;
+ void *ptrs[NITER];
+
+ test_skip_if(!config_prof);
+
+ lg_prof_sample_orig = get_lg_prof_sample();
+ set_prof_active(true);
+
+ /* Reset profiling. */
+ do_prof_reset(0);
+
+ for (i = 0; i < NITER; i++) {
+ void *p;
+ size_t sz, nsz;
+
+ /* Reset profiling. */
+ do_prof_reset(0);
+
+ /* Allocate small object (which will be promoted). */
+ p = ptrs[i] = mallocx(1, 0);
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
+
+ /* Reset profiling. */
+ do_prof_reset(0);
+
+ /* Perform successful xallocx(). */
+ sz = sallocx(p, 0);
+ assert_zu_eq(xallocx(p, sz, 0, 0), sz,
+ "Unexpected xallocx() failure");
+
+ /* Perform unsuccessful xallocx(). */
+ nsz = nallocx(sz+1, 0);
+ assert_zu_eq(xallocx(p, nsz, 0, 0), sz,
+ "Unexpected xallocx() success");
+ }
+
+ for (i = 0; i < NITER; i++) {
+ /* dallocx. */
+ dallocx(ptrs[i], 0);
+ }
+
+ set_prof_active(false);
+ do_prof_reset(lg_prof_sample_orig);
+}
+TEST_END
+#undef NITER
+
+int
+main(void)
+{
+
+ /* Intercept dumping prior to running any tests. */
+ prof_dump_open = prof_dump_open_intercept;
+
+ return (test(
+ test_prof_reset_basic,
+ test_prof_reset_cleanup,
+ test_prof_reset,
+ test_xallocx));
+}
diff --git a/deps/jemalloc/test/unit/prof_thread_name.c b/deps/jemalloc/test/unit/prof_thread_name.c
new file mode 100644
index 000000000..f501158d7
--- /dev/null
+++ b/deps/jemalloc/test/unit/prof_thread_name.c
@@ -0,0 +1,129 @@
+#include "test/jemalloc_test.h"
+
+#ifdef JEMALLOC_PROF
+const char *malloc_conf = "prof:true,prof_active:false";
+#endif
+
+static void
+mallctl_thread_name_get_impl(const char *thread_name_expected, const char *func,
+ int line)
+{
+ const char *thread_name_old;
+ size_t sz;
+
+ sz = sizeof(thread_name_old);
+ assert_d_eq(mallctl("thread.prof.name", &thread_name_old, &sz, NULL, 0),
+ 0, "%s():%d: Unexpected mallctl failure reading thread.prof.name",
+ func, line);
+ assert_str_eq(thread_name_old, thread_name_expected,
+ "%s():%d: Unexpected thread.prof.name value", func, line);
+}
+#define mallctl_thread_name_get(a) \
+ mallctl_thread_name_get_impl(a, __func__, __LINE__)
+
+static void
+mallctl_thread_name_set_impl(const char *thread_name, const char *func,
+ int line)
+{
+
+ assert_d_eq(mallctl("thread.prof.name", NULL, NULL, &thread_name,
+ sizeof(thread_name)), 0,
+ "%s():%d: Unexpected mallctl failure reading thread.prof.name",
+ func, line);
+ mallctl_thread_name_get_impl(thread_name, func, line);
+}
+#define mallctl_thread_name_set(a) \
+ mallctl_thread_name_set_impl(a, __func__, __LINE__)
+
+TEST_BEGIN(test_prof_thread_name_validation)
+{
+ const char *thread_name;
+
+ test_skip_if(!config_prof);
+
+ mallctl_thread_name_get("");
+ mallctl_thread_name_set("hi there");
+
+ /* NULL input shouldn't be allowed. */
+ thread_name = NULL;
+ assert_d_eq(mallctl("thread.prof.name", NULL, NULL, &thread_name,
+ sizeof(thread_name)), EFAULT,
+ "Unexpected mallctl result writing \"%s\" to thread.prof.name",
+ thread_name);
+
+ /* '\n' shouldn't be allowed. */
+ thread_name = "hi\nthere";
+ assert_d_eq(mallctl("thread.prof.name", NULL, NULL, &thread_name,
+ sizeof(thread_name)), EFAULT,
+ "Unexpected mallctl result writing \"%s\" to thread.prof.name",
+ thread_name);
+
+ /* Simultaneous read/write shouldn't be allowed. */
+ {
+ const char *thread_name_old;
+ size_t sz;
+
+ sz = sizeof(thread_name_old);
+ assert_d_eq(mallctl("thread.prof.name", &thread_name_old, &sz,
+ &thread_name, sizeof(thread_name)), EPERM,
+ "Unexpected mallctl result writing \"%s\" to "
+ "thread.prof.name", thread_name);
+ }
+
+ mallctl_thread_name_set("");
+}
+TEST_END
+
+#define NTHREADS 4
+#define NRESET 25
+static void *
+thd_start(void *varg)
+{
+ unsigned thd_ind = *(unsigned *)varg;
+ char thread_name[16] = "";
+ unsigned i;
+
+ malloc_snprintf(thread_name, sizeof(thread_name), "thread %u", thd_ind);
+
+ mallctl_thread_name_get("");
+ mallctl_thread_name_set(thread_name);
+
+ for (i = 0; i < NRESET; i++) {
+ assert_d_eq(mallctl("prof.reset", NULL, NULL, NULL, 0), 0,
+ "Unexpected error while resetting heap profile data");
+ mallctl_thread_name_get(thread_name);
+ }
+
+ mallctl_thread_name_set(thread_name);
+ mallctl_thread_name_set("");
+
+ return (NULL);
+}
+
+TEST_BEGIN(test_prof_thread_name_threaded)
+{
+ thd_t thds[NTHREADS];
+ unsigned thd_args[NTHREADS];
+ unsigned i;
+
+ test_skip_if(!config_prof);
+
+ for (i = 0; i < NTHREADS; i++) {
+ thd_args[i] = i;
+ thd_create(&thds[i], thd_start, (void *)&thd_args[i]);
+ }
+ for (i = 0; i < NTHREADS; i++)
+ thd_join(thds[i], NULL);
+}
+TEST_END
+#undef NTHREADS
+#undef NRESET
+
+int
+main(void)
+{
+
+ return (test(
+ test_prof_thread_name_validation,
+ test_prof_thread_name_threaded));
+}
diff --git a/deps/jemalloc/test/unit/rb.c b/deps/jemalloc/test/unit/rb.c
index b737485a7..b38eb0e33 100644
--- a/deps/jemalloc/test/unit/rb.c
+++ b/deps/jemalloc/test/unit/rb.c
@@ -5,7 +5,7 @@
for (rbp_bh_t = (a_rbt)->rbt_root, (r_height) = 0; \
rbp_bh_t != &(a_rbt)->rbt_nil; \
rbp_bh_t = rbtn_left_get(a_type, a_field, rbp_bh_t)) { \
- if (rbtn_red_get(a_type, a_field, rbp_bh_t) == false) { \
+ if (!rbtn_red_get(a_type, a_field, rbp_bh_t)) { \
(r_height)++; \
} \
} \
@@ -49,6 +49,7 @@ TEST_BEGIN(test_rb_empty)
tree_new(&tree);
+ assert_true(tree_empty(&tree), "Tree should be empty");
assert_ptr_null(tree_first(&tree), "Unexpected node");
assert_ptr_null(tree_last(&tree), "Unexpected node");
@@ -74,7 +75,7 @@ tree_recurse(node_t *node, unsigned black_height, unsigned black_depth,
node_t *left_node = rbtn_left_get(node_t, link, node);
node_t *right_node = rbtn_right_get(node_t, link, node);
- if (rbtn_red_get(node_t, link, node) == false)
+ if (!rbtn_red_get(node_t, link, node))
black_depth++;
/* Red nodes must be interleaved with black nodes. */
@@ -265,6 +266,8 @@ TEST_BEGIN(test_rb_random)
assert_u_eq(tree_iterate_reverse(&tree), k+1,
"Unexpected node iteration count");
+ assert_false(tree_empty(&tree),
+ "Tree should not be empty");
assert_ptr_not_null(tree_first(&tree),
"Tree should not be empty");
assert_ptr_not_null(tree_last(&tree),
diff --git a/deps/jemalloc/test/unit/rtree.c b/deps/jemalloc/test/unit/rtree.c
index 5463055fe..b54b3e86f 100644
--- a/deps/jemalloc/test/unit/rtree.c
+++ b/deps/jemalloc/test/unit/rtree.c
@@ -1,14 +1,30 @@
#include "test/jemalloc_test.h"
+static rtree_node_elm_t *
+node_alloc(size_t nelms)
+{
+
+ return ((rtree_node_elm_t *)calloc(nelms, sizeof(rtree_node_elm_t)));
+}
+
+static void
+node_dalloc(rtree_node_elm_t *node)
+{
+
+ free(node);
+}
+
TEST_BEGIN(test_rtree_get_empty)
{
unsigned i;
for (i = 1; i <= (sizeof(uintptr_t) << 3); i++) {
- rtree_t *rtree = rtree_new(i, imalloc, idalloc);
- assert_u_eq(rtree_get(rtree, 0), 0,
+ rtree_t rtree;
+ assert_false(rtree_new(&rtree, i, node_alloc, node_dalloc),
+ "Unexpected rtree_new() failure");
+ assert_ptr_null(rtree_get(&rtree, 0, false),
"rtree_get() should return NULL for empty tree");
- rtree_delete(rtree);
+ rtree_delete(&rtree);
}
}
TEST_END
@@ -16,19 +32,24 @@ TEST_END
TEST_BEGIN(test_rtree_extrema)
{
unsigned i;
+ extent_node_t node_a, node_b;
for (i = 1; i <= (sizeof(uintptr_t) << 3); i++) {
- rtree_t *rtree = rtree_new(i, imalloc, idalloc);
+ rtree_t rtree;
+ assert_false(rtree_new(&rtree, i, node_alloc, node_dalloc),
+ "Unexpected rtree_new() failure");
- rtree_set(rtree, 0, 1);
- assert_u_eq(rtree_get(rtree, 0), 1,
+ assert_false(rtree_set(&rtree, 0, &node_a),
+ "Unexpected rtree_set() failure");
+ assert_ptr_eq(rtree_get(&rtree, 0, true), &node_a,
"rtree_get() should return previously set value");
- rtree_set(rtree, ~((uintptr_t)0), 1);
- assert_u_eq(rtree_get(rtree, ~((uintptr_t)0)), 1,
+ assert_false(rtree_set(&rtree, ~((uintptr_t)0), &node_b),
+ "Unexpected rtree_set() failure");
+ assert_ptr_eq(rtree_get(&rtree, ~((uintptr_t)0), true), &node_b,
"rtree_get() should return previously set value");
- rtree_delete(rtree);
+ rtree_delete(&rtree);
}
}
TEST_END
@@ -40,26 +61,32 @@ TEST_BEGIN(test_rtree_bits)
for (i = 1; i < (sizeof(uintptr_t) << 3); i++) {
uintptr_t keys[] = {0, 1,
(((uintptr_t)1) << (sizeof(uintptr_t)*8-i)) - 1};
- rtree_t *rtree = rtree_new(i, imalloc, idalloc);
+ extent_node_t node;
+ rtree_t rtree;
+
+ assert_false(rtree_new(&rtree, i, node_alloc, node_dalloc),
+ "Unexpected rtree_new() failure");
for (j = 0; j < sizeof(keys)/sizeof(uintptr_t); j++) {
- rtree_set(rtree, keys[j], 1);
+ assert_false(rtree_set(&rtree, keys[j], &node),
+ "Unexpected rtree_set() failure");
for (k = 0; k < sizeof(keys)/sizeof(uintptr_t); k++) {
- assert_u_eq(rtree_get(rtree, keys[k]), 1,
- "rtree_get() should return previously set "
- "value and ignore insignificant key bits; "
- "i=%u, j=%u, k=%u, set key=%#"PRIxPTR", "
- "get key=%#"PRIxPTR, i, j, k, keys[j],
- keys[k]);
+ assert_ptr_eq(rtree_get(&rtree, keys[k], true),
+ &node, "rtree_get() should return "
+ "previously set value and ignore "
+ "insignificant key bits; i=%u, j=%u, k=%u, "
+ "set key=%#"FMTxPTR", get key=%#"FMTxPTR, i,
+ j, k, keys[j], keys[k]);
}
- assert_u_eq(rtree_get(rtree,
- (((uintptr_t)1) << (sizeof(uintptr_t)*8-i))), 0,
+ assert_ptr_null(rtree_get(&rtree,
+ (((uintptr_t)1) << (sizeof(uintptr_t)*8-i)), false),
"Only leftmost rtree leaf should be set; "
"i=%u, j=%u", i, j);
- rtree_set(rtree, keys[j], 0);
+ assert_false(rtree_set(&rtree, keys[j], NULL),
+ "Unexpected rtree_set() failure");
}
- rtree_delete(rtree);
+ rtree_delete(&rtree);
}
}
TEST_END
@@ -68,37 +95,43 @@ TEST_BEGIN(test_rtree_random)
{
unsigned i;
sfmt_t *sfmt;
-#define NSET 100
+#define NSET 16
#define SEED 42
sfmt = init_gen_rand(SEED);
for (i = 1; i <= (sizeof(uintptr_t) << 3); i++) {
- rtree_t *rtree = rtree_new(i, imalloc, idalloc);
uintptr_t keys[NSET];
+ extent_node_t node;
unsigned j;
+ rtree_t rtree;
+
+ assert_false(rtree_new(&rtree, i, node_alloc, node_dalloc),
+ "Unexpected rtree_new() failure");
for (j = 0; j < NSET; j++) {
keys[j] = (uintptr_t)gen_rand64(sfmt);
- rtree_set(rtree, keys[j], 1);
- assert_u_eq(rtree_get(rtree, keys[j]), 1,
+ assert_false(rtree_set(&rtree, keys[j], &node),
+ "Unexpected rtree_set() failure");
+ assert_ptr_eq(rtree_get(&rtree, keys[j], true), &node,
"rtree_get() should return previously set value");
}
for (j = 0; j < NSET; j++) {
- assert_u_eq(rtree_get(rtree, keys[j]), 1,
+ assert_ptr_eq(rtree_get(&rtree, keys[j], true), &node,
"rtree_get() should return previously set value");
}
for (j = 0; j < NSET; j++) {
- rtree_set(rtree, keys[j], 0);
- assert_u_eq(rtree_get(rtree, keys[j]), 0,
+ assert_false(rtree_set(&rtree, keys[j], NULL),
+ "Unexpected rtree_set() failure");
+ assert_ptr_null(rtree_get(&rtree, keys[j], true),
"rtree_get() should return previously set value");
}
for (j = 0; j < NSET; j++) {
- assert_u_eq(rtree_get(rtree, keys[j]), 0,
+ assert_ptr_null(rtree_get(&rtree, keys[j], true),
"rtree_get() should return previously set value");
}
- rtree_delete(rtree);
+ rtree_delete(&rtree);
}
fini_gen_rand(sfmt);
#undef NSET
diff --git a/deps/jemalloc/test/unit/size_classes.c b/deps/jemalloc/test/unit/size_classes.c
new file mode 100644
index 000000000..d3aaebd77
--- /dev/null
+++ b/deps/jemalloc/test/unit/size_classes.c
@@ -0,0 +1,89 @@
+#include "test/jemalloc_test.h"
+
+static size_t
+get_max_size_class(void)
+{
+ unsigned nhchunks;
+ size_t mib[4];
+ size_t sz, miblen, max_size_class;
+
+ sz = sizeof(unsigned);
+ assert_d_eq(mallctl("arenas.nhchunks", &nhchunks, &sz, NULL, 0), 0,
+ "Unexpected mallctl() error");
+
+ miblen = sizeof(mib) / sizeof(size_t);
+ assert_d_eq(mallctlnametomib("arenas.hchunk.0.size", mib, &miblen), 0,
+ "Unexpected mallctlnametomib() error");
+ mib[2] = nhchunks - 1;
+
+ sz = sizeof(size_t);
+ assert_d_eq(mallctlbymib(mib, miblen, &max_size_class, &sz, NULL, 0), 0,
+ "Unexpected mallctlbymib() error");
+
+ return (max_size_class);
+}
+
+TEST_BEGIN(test_size_classes)
+{
+ size_t size_class, max_size_class;
+ szind_t index, max_index;
+
+ max_size_class = get_max_size_class();
+ max_index = size2index(max_size_class);
+
+ for (index = 0, size_class = index2size(index); index < max_index ||
+ size_class < max_size_class; index++, size_class =
+ index2size(index)) {
+ assert_true(index < max_index,
+ "Loop conditionals should be equivalent; index=%u, "
+ "size_class=%zu (%#zx)", index, size_class, size_class);
+ assert_true(size_class < max_size_class,
+ "Loop conditionals should be equivalent; index=%u, "
+ "size_class=%zu (%#zx)", index, size_class, size_class);
+
+ assert_u_eq(index, size2index(size_class),
+ "size2index() does not reverse index2size(): index=%u -->"
+ " size_class=%zu --> index=%u --> size_class=%zu", index,
+ size_class, size2index(size_class),
+ index2size(size2index(size_class)));
+ assert_zu_eq(size_class, index2size(size2index(size_class)),
+ "index2size() does not reverse size2index(): index=%u -->"
+ " size_class=%zu --> index=%u --> size_class=%zu", index,
+ size_class, size2index(size_class),
+ index2size(size2index(size_class)));
+
+ assert_u_eq(index+1, size2index(size_class+1),
+ "Next size_class does not round up properly");
+
+ assert_zu_eq(size_class, (index > 0) ?
+ s2u(index2size(index-1)+1) : s2u(1),
+ "s2u() does not round up to size class");
+ assert_zu_eq(size_class, s2u(size_class-1),
+ "s2u() does not round up to size class");
+ assert_zu_eq(size_class, s2u(size_class),
+ "s2u() does not compute same size class");
+ assert_zu_eq(s2u(size_class+1), index2size(index+1),
+ "s2u() does not round up to next size class");
+ }
+
+ assert_u_eq(index, size2index(index2size(index)),
+ "size2index() does not reverse index2size()");
+ assert_zu_eq(max_size_class, index2size(size2index(max_size_class)),
+ "index2size() does not reverse size2index()");
+
+ assert_zu_eq(size_class, s2u(index2size(index-1)+1),
+ "s2u() does not round up to size class");
+ assert_zu_eq(size_class, s2u(size_class-1),
+ "s2u() does not round up to size class");
+ assert_zu_eq(size_class, s2u(size_class),
+ "s2u() does not compute same size class");
+}
+TEST_END
+
+int
+main(void)
+{
+
+ return (test(
+ test_size_classes));
+}
diff --git a/deps/jemalloc/test/unit/stats.c b/deps/jemalloc/test/unit/stats.c
index 03a55c7fd..8e4bc631e 100644
--- a/deps/jemalloc/test/unit/stats.c
+++ b/deps/jemalloc/test/unit/stats.c
@@ -3,7 +3,7 @@
TEST_BEGIN(test_stats_summary)
{
size_t *cactive;
- size_t sz, allocated, active, mapped;
+ size_t sz, allocated, active, resident, mapped;
int expected = config_stats ? 0 : ENOENT;
sz = sizeof(cactive);
@@ -15,6 +15,8 @@ TEST_BEGIN(test_stats_summary)
expected, "Unexpected mallctl() result");
assert_d_eq(mallctl("stats.active", &active, &sz, NULL, 0), expected,
"Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.resident", &resident, &sz, NULL, 0),
+ expected, "Unexpected mallctl() result");
assert_d_eq(mallctl("stats.mapped", &mapped, &sz, NULL, 0), expected,
"Unexpected mallctl() result");
@@ -23,34 +25,10 @@ TEST_BEGIN(test_stats_summary)
"active should be no larger than cactive");
assert_zu_le(allocated, active,
"allocated should be no larger than active");
- assert_zu_le(active, mapped,
- "active should be no larger than mapped");
- }
-}
-TEST_END
-
-TEST_BEGIN(test_stats_chunks)
-{
- size_t current, high;
- uint64_t total;
- size_t sz;
- int expected = config_stats ? 0 : ENOENT;
-
- sz = sizeof(size_t);
- assert_d_eq(mallctl("stats.chunks.current", &current, &sz, NULL, 0),
- expected, "Unexpected mallctl() result");
- sz = sizeof(uint64_t);
- assert_d_eq(mallctl("stats.chunks.total", &total, &sz, NULL, 0),
- expected, "Unexpected mallctl() result");
- sz = sizeof(size_t);
- assert_d_eq(mallctl("stats.chunks.high", &high, &sz, NULL, 0), expected,
- "Unexpected mallctl() result");
-
- if (config_stats) {
- assert_zu_le(current, high,
- "current should be no larger than high");
- assert_u64_le((uint64_t)high, total,
- "high should be no larger than total");
+ assert_zu_lt(active, resident,
+ "active should be less than resident");
+ assert_zu_lt(active, mapped,
+ "active should be less than mapped");
}
}
TEST_END
@@ -60,30 +38,34 @@ TEST_BEGIN(test_stats_huge)
void *p;
uint64_t epoch;
size_t allocated;
- uint64_t nmalloc, ndalloc;
+ uint64_t nmalloc, ndalloc, nrequests;
size_t sz;
int expected = config_stats ? 0 : ENOENT;
- p = mallocx(arena_maxclass+1, 0);
+ p = mallocx(large_maxclass+1, 0);
assert_ptr_not_null(p, "Unexpected mallocx() failure");
assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
"Unexpected mallctl() failure");
sz = sizeof(size_t);
- assert_d_eq(mallctl("stats.huge.allocated", &allocated, &sz, NULL, 0),
- expected, "Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.arenas.0.huge.allocated", &allocated, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
sz = sizeof(uint64_t);
- assert_d_eq(mallctl("stats.huge.nmalloc", &nmalloc, &sz, NULL, 0),
- expected, "Unexpected mallctl() result");
- assert_d_eq(mallctl("stats.huge.ndalloc", &ndalloc, &sz, NULL, 0),
- expected, "Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.arenas.0.huge.nmalloc", &nmalloc, &sz, NULL,
+ 0), expected, "Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.arenas.0.huge.ndalloc", &ndalloc, &sz, NULL,
+ 0), expected, "Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.arenas.0.huge.nrequests", &nrequests, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
if (config_stats) {
assert_zu_gt(allocated, 0,
"allocated should be greater than zero");
assert_u64_ge(nmalloc, ndalloc,
"nmalloc should be at least as large as ndalloc");
+ assert_u64_le(nmalloc, nrequests,
+ "nmalloc should no larger than nrequests");
}
dallocx(p, 0);
@@ -93,7 +75,7 @@ TEST_END
TEST_BEGIN(test_stats_arenas_summary)
{
unsigned arena;
- void *small, *large;
+ void *little, *large, *huge;
uint64_t epoch;
size_t sz;
int expected = config_stats ? 0 : ENOENT;
@@ -104,10 +86,12 @@ TEST_BEGIN(test_stats_arenas_summary)
assert_d_eq(mallctl("thread.arena", NULL, NULL, &arena, sizeof(arena)),
0, "Unexpected mallctl() failure");
- small = mallocx(SMALL_MAXCLASS, 0);
- assert_ptr_not_null(small, "Unexpected mallocx() failure");
- large = mallocx(arena_maxclass, 0);
+ little = mallocx(SMALL_MAXCLASS, 0);
+ assert_ptr_not_null(little, "Unexpected mallocx() failure");
+ large = mallocx(large_maxclass, 0);
assert_ptr_not_null(large, "Unexpected mallocx() failure");
+ huge = mallocx(chunksize, 0);
+ assert_ptr_not_null(huge, "Unexpected mallocx() failure");
assert_d_eq(mallctl("arena.0.purge", NULL, NULL, NULL, 0), 0,
"Unexpected mallctl() failure");
@@ -133,8 +117,9 @@ TEST_BEGIN(test_stats_arenas_summary)
"nmadvise should be no greater than purged");
}
- dallocx(small, 0);
+ dallocx(little, 0);
dallocx(large, 0);
+ dallocx(huge, 0);
}
TEST_END
@@ -215,7 +200,7 @@ TEST_BEGIN(test_stats_arenas_large)
assert_d_eq(mallctl("thread.arena", NULL, NULL, &arena, sizeof(arena)),
0, "Unexpected mallctl() failure");
- p = mallocx(arena_maxclass, 0);
+ p = mallocx(large_maxclass, 0);
assert_ptr_not_null(p, "Unexpected mallocx() failure");
assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
@@ -247,11 +232,51 @@ TEST_BEGIN(test_stats_arenas_large)
}
TEST_END
+TEST_BEGIN(test_stats_arenas_huge)
+{
+ unsigned arena;
+ void *p;
+ size_t sz, allocated;
+ uint64_t epoch, nmalloc, ndalloc;
+ int expected = config_stats ? 0 : ENOENT;
+
+ arena = 0;
+ assert_d_eq(mallctl("thread.arena", NULL, NULL, &arena, sizeof(arena)),
+ 0, "Unexpected mallctl() failure");
+
+ p = mallocx(chunksize, 0);
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
+
+ assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
+ "Unexpected mallctl() failure");
+
+ sz = sizeof(size_t);
+ assert_d_eq(mallctl("stats.arenas.0.huge.allocated", &allocated, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
+ sz = sizeof(uint64_t);
+ assert_d_eq(mallctl("stats.arenas.0.huge.nmalloc", &nmalloc, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.arenas.0.huge.ndalloc", &ndalloc, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
+
+ if (config_stats) {
+ assert_zu_gt(allocated, 0,
+ "allocated should be greater than zero");
+ assert_zu_gt(nmalloc, 0,
+ "nmalloc should be greater than zero");
+ assert_zu_ge(nmalloc, ndalloc,
+ "nmalloc should be at least as large as ndalloc");
+ }
+
+ dallocx(p, 0);
+}
+TEST_END
+
TEST_BEGIN(test_stats_arenas_bins)
{
unsigned arena;
void *p;
- size_t sz, allocated, curruns;
+ size_t sz, curruns, curregs;
uint64_t epoch, nmalloc, ndalloc, nrequests, nfills, nflushes;
uint64_t nruns, nreruns;
int expected = config_stats ? 0 : ENOENT;
@@ -269,9 +294,6 @@ TEST_BEGIN(test_stats_arenas_bins)
assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
"Unexpected mallctl() failure");
- sz = sizeof(size_t);
- assert_d_eq(mallctl("stats.arenas.0.bins.0.allocated", &allocated, &sz,
- NULL, 0), expected, "Unexpected mallctl() result");
sz = sizeof(uint64_t);
assert_d_eq(mallctl("stats.arenas.0.bins.0.nmalloc", &nmalloc, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
@@ -279,7 +301,11 @@ TEST_BEGIN(test_stats_arenas_bins)
NULL, 0), expected, "Unexpected mallctl() result");
assert_d_eq(mallctl("stats.arenas.0.bins.0.nrequests", &nrequests, &sz,
NULL, 0), expected, "Unexpected mallctl() result");
+ sz = sizeof(size_t);
+ assert_d_eq(mallctl("stats.arenas.0.bins.0.curregs", &curregs, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
+ sz = sizeof(uint64_t);
assert_d_eq(mallctl("stats.arenas.0.bins.0.nfills", &nfills, &sz,
NULL, 0), config_tcache ? expected : ENOENT,
"Unexpected mallctl() result");
@@ -296,14 +322,14 @@ TEST_BEGIN(test_stats_arenas_bins)
NULL, 0), expected, "Unexpected mallctl() result");
if (config_stats) {
- assert_zu_gt(allocated, 0,
- "allocated should be greater than zero");
assert_u64_gt(nmalloc, 0,
"nmalloc should be greater than zero");
assert_u64_ge(nmalloc, ndalloc,
"nmalloc should be at least as large as ndalloc");
assert_u64_gt(nrequests, 0,
"nrequests should be greater than zero");
+ assert_zu_gt(curregs, 0,
+ "allocated should be greater than zero");
if (config_tcache) {
assert_u64_gt(nfills, 0,
"At least one fill should have occurred");
@@ -332,7 +358,7 @@ TEST_BEGIN(test_stats_arenas_lruns)
assert_d_eq(mallctl("thread.arena", NULL, NULL, &arena, sizeof(arena)),
0, "Unexpected mallctl() failure");
- p = mallocx(SMALL_MAXCLASS+1, 0);
+ p = mallocx(LARGE_MINCLASS, 0);
assert_ptr_not_null(p, "Unexpected mallocx() failure");
assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
@@ -364,17 +390,58 @@ TEST_BEGIN(test_stats_arenas_lruns)
}
TEST_END
+TEST_BEGIN(test_stats_arenas_hchunks)
+{
+ unsigned arena;
+ void *p;
+ uint64_t epoch, nmalloc, ndalloc;
+ size_t curhchunks, sz;
+ int expected = config_stats ? 0 : ENOENT;
+
+ arena = 0;
+ assert_d_eq(mallctl("thread.arena", NULL, NULL, &arena, sizeof(arena)),
+ 0, "Unexpected mallctl() failure");
+
+ p = mallocx(chunksize, 0);
+ assert_ptr_not_null(p, "Unexpected mallocx() failure");
+
+ assert_d_eq(mallctl("epoch", NULL, NULL, &epoch, sizeof(epoch)), 0,
+ "Unexpected mallctl() failure");
+
+ sz = sizeof(uint64_t);
+ assert_d_eq(mallctl("stats.arenas.0.hchunks.0.nmalloc", &nmalloc, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
+ assert_d_eq(mallctl("stats.arenas.0.hchunks.0.ndalloc", &ndalloc, &sz,
+ NULL, 0), expected, "Unexpected mallctl() result");
+ sz = sizeof(size_t);
+ assert_d_eq(mallctl("stats.arenas.0.hchunks.0.curhchunks", &curhchunks,
+ &sz, NULL, 0), expected, "Unexpected mallctl() result");
+
+ if (config_stats) {
+ assert_u64_gt(nmalloc, 0,
+ "nmalloc should be greater than zero");
+ assert_u64_ge(nmalloc, ndalloc,
+ "nmalloc should be at least as large as ndalloc");
+ assert_u64_gt(curhchunks, 0,
+ "At least one chunk should be currently allocated");
+ }
+
+ dallocx(p, 0);
+}
+TEST_END
+
int
main(void)
{
return (test(
test_stats_summary,
- test_stats_chunks,
test_stats_huge,
test_stats_arenas_summary,
test_stats_arenas_small,
test_stats_arenas_large,
+ test_stats_arenas_huge,
test_stats_arenas_bins,
- test_stats_arenas_lruns));
+ test_stats_arenas_lruns,
+ test_stats_arenas_hchunks));
}
diff --git a/deps/jemalloc/test/unit/tsd.c b/deps/jemalloc/test/unit/tsd.c
index f421c1a3c..8be787fda 100644
--- a/deps/jemalloc/test/unit/tsd.c
+++ b/deps/jemalloc/test/unit/tsd.c
@@ -6,29 +6,64 @@ typedef unsigned int data_t;
static bool data_cleanup_executed;
+malloc_tsd_types(data_, data_t)
+malloc_tsd_protos(, data_, data_t)
+
void
data_cleanup(void *arg)
{
data_t *data = (data_t *)arg;
- assert_x_eq(*data, THREAD_DATA,
- "Argument passed into cleanup function should match tsd value");
+ if (!data_cleanup_executed) {
+ assert_x_eq(*data, THREAD_DATA,
+ "Argument passed into cleanup function should match tsd "
+ "value");
+ }
data_cleanup_executed = true;
+
+ /*
+ * Allocate during cleanup for two rounds, in order to assure that
+ * jemalloc's internal tsd reinitialization happens.
+ */
+ switch (*data) {
+ case THREAD_DATA:
+ *data = 1;
+ data_tsd_set(data);
+ break;
+ case 1:
+ *data = 2;
+ data_tsd_set(data);
+ break;
+ case 2:
+ return;
+ default:
+ not_reached();
+ }
+
+ {
+ void *p = mallocx(1, 0);
+ assert_ptr_not_null(p, "Unexpeced mallocx() failure");
+ dallocx(p, 0);
+ }
}
-malloc_tsd_protos(, data, data_t)
-malloc_tsd_externs(data, data_t)
+malloc_tsd_externs(data_, data_t)
#define DATA_INIT 0x12345678
-malloc_tsd_data(, data, data_t, DATA_INIT)
-malloc_tsd_funcs(, data, data_t, DATA_INIT, data_cleanup)
+malloc_tsd_data(, data_, data_t, DATA_INIT)
+malloc_tsd_funcs(, data_, data_t, DATA_INIT, data_cleanup)
static void *
thd_start(void *arg)
{
data_t d = (data_t)(uintptr_t)arg;
+ void *p;
+
assert_x_eq(*data_tsd_get(), DATA_INIT,
"Initial tsd get should return initialization value");
+ p = malloc(1);
+ assert_ptr_not_null(p, "Unexpected malloc() failure");
+
data_tsd_set(&d);
assert_x_eq(*data_tsd_get(), d,
"After tsd set, tsd get should return value that was set");
@@ -37,6 +72,7 @@ thd_start(void *arg)
assert_x_eq(*data_tsd_get(), (data_t)(uintptr_t)arg,
"Resetting local data should have no effect on tsd");
+ free(p);
return (NULL);
}
diff --git a/deps/jemalloc/test/unit/util.c b/deps/jemalloc/test/unit/util.c
index dc3cfe8a9..8ab39a458 100644
--- a/deps/jemalloc/test/unit/util.c
+++ b/deps/jemalloc/test/unit/util.c
@@ -52,8 +52,8 @@ TEST_BEGIN(test_malloc_strtoumax)
const char *expected_errno_name;
uintmax_t expected_x;
};
-#define ERR(e) e, #e
-#define UMAX(x) ((uintmax_t)x##ULL)
+#define ERR(e) e, #e
+#define KUMAX(x) ((uintmax_t)x##ULL)
struct test_s tests[] = {
{"0", "0", -1, ERR(EINVAL), UINTMAX_MAX},
{"0", "0", 1, ERR(EINVAL), UINTMAX_MAX},
@@ -64,51 +64,51 @@ TEST_BEGIN(test_malloc_strtoumax)
{"++3", "++3", 0, ERR(EINVAL), UINTMAX_MAX},
{"-", "-", 0, ERR(EINVAL), UINTMAX_MAX},
- {"42", "", 0, ERR(0), UMAX(42)},
- {"+42", "", 0, ERR(0), UMAX(42)},
- {"-42", "", 0, ERR(0), UMAX(-42)},
- {"042", "", 0, ERR(0), UMAX(042)},
- {"+042", "", 0, ERR(0), UMAX(042)},
- {"-042", "", 0, ERR(0), UMAX(-042)},
- {"0x42", "", 0, ERR(0), UMAX(0x42)},
- {"+0x42", "", 0, ERR(0), UMAX(0x42)},
- {"-0x42", "", 0, ERR(0), UMAX(-0x42)},
-
- {"0", "", 0, ERR(0), UMAX(0)},
- {"1", "", 0, ERR(0), UMAX(1)},
-
- {"42", "", 0, ERR(0), UMAX(42)},
- {" 42", "", 0, ERR(0), UMAX(42)},
- {"42 ", " ", 0, ERR(0), UMAX(42)},
- {"0x", "x", 0, ERR(0), UMAX(0)},
- {"42x", "x", 0, ERR(0), UMAX(42)},
-
- {"07", "", 0, ERR(0), UMAX(7)},
- {"010", "", 0, ERR(0), UMAX(8)},
- {"08", "8", 0, ERR(0), UMAX(0)},
- {"0_", "_", 0, ERR(0), UMAX(0)},
-
- {"0x", "x", 0, ERR(0), UMAX(0)},
- {"0X", "X", 0, ERR(0), UMAX(0)},
- {"0xg", "xg", 0, ERR(0), UMAX(0)},
- {"0XA", "", 0, ERR(0), UMAX(10)},
-
- {"010", "", 10, ERR(0), UMAX(10)},
- {"0x3", "x3", 10, ERR(0), UMAX(0)},
-
- {"12", "2", 2, ERR(0), UMAX(1)},
- {"78", "8", 8, ERR(0), UMAX(7)},
- {"9a", "a", 10, ERR(0), UMAX(9)},
- {"9A", "A", 10, ERR(0), UMAX(9)},
- {"fg", "g", 16, ERR(0), UMAX(15)},
- {"FG", "G", 16, ERR(0), UMAX(15)},
- {"0xfg", "g", 16, ERR(0), UMAX(15)},
- {"0XFG", "G", 16, ERR(0), UMAX(15)},
- {"z_", "_", 36, ERR(0), UMAX(35)},
- {"Z_", "_", 36, ERR(0), UMAX(35)}
+ {"42", "", 0, ERR(0), KUMAX(42)},
+ {"+42", "", 0, ERR(0), KUMAX(42)},
+ {"-42", "", 0, ERR(0), KUMAX(-42)},
+ {"042", "", 0, ERR(0), KUMAX(042)},
+ {"+042", "", 0, ERR(0), KUMAX(042)},
+ {"-042", "", 0, ERR(0), KUMAX(-042)},
+ {"0x42", "", 0, ERR(0), KUMAX(0x42)},
+ {"+0x42", "", 0, ERR(0), KUMAX(0x42)},
+ {"-0x42", "", 0, ERR(0), KUMAX(-0x42)},
+
+ {"0", "", 0, ERR(0), KUMAX(0)},
+ {"1", "", 0, ERR(0), KUMAX(1)},
+
+ {"42", "", 0, ERR(0), KUMAX(42)},
+ {" 42", "", 0, ERR(0), KUMAX(42)},
+ {"42 ", " ", 0, ERR(0), KUMAX(42)},
+ {"0x", "x", 0, ERR(0), KUMAX(0)},
+ {"42x", "x", 0, ERR(0), KUMAX(42)},
+
+ {"07", "", 0, ERR(0), KUMAX(7)},
+ {"010", "", 0, ERR(0), KUMAX(8)},
+ {"08", "8", 0, ERR(0), KUMAX(0)},
+ {"0_", "_", 0, ERR(0), KUMAX(0)},
+
+ {"0x", "x", 0, ERR(0), KUMAX(0)},
+ {"0X", "X", 0, ERR(0), KUMAX(0)},
+ {"0xg", "xg", 0, ERR(0), KUMAX(0)},
+ {"0XA", "", 0, ERR(0), KUMAX(10)},
+
+ {"010", "", 10, ERR(0), KUMAX(10)},
+ {"0x3", "x3", 10, ERR(0), KUMAX(0)},
+
+ {"12", "2", 2, ERR(0), KUMAX(1)},
+ {"78", "8", 8, ERR(0), KUMAX(7)},
+ {"9a", "a", 10, ERR(0), KUMAX(9)},
+ {"9A", "A", 10, ERR(0), KUMAX(9)},
+ {"fg", "g", 16, ERR(0), KUMAX(15)},
+ {"FG", "G", 16, ERR(0), KUMAX(15)},
+ {"0xfg", "g", 16, ERR(0), KUMAX(15)},
+ {"0XFG", "G", 16, ERR(0), KUMAX(15)},
+ {"z_", "_", 36, ERR(0), KUMAX(35)},
+ {"Z_", "_", 36, ERR(0), KUMAX(35)}
};
#undef ERR
-#undef UMAX
+#undef KUMAX
unsigned i;
for (i = 0; i < sizeof(tests)/sizeof(struct test_s); i++) {
@@ -141,8 +141,8 @@ TEST_BEGIN(test_malloc_snprintf_truncated)
char buf[BUFLEN];
int result;
size_t len;
-#define TEST(expected_str_untruncated, fmt...) do { \
- result = malloc_snprintf(buf, len, fmt); \
+#define TEST(expected_str_untruncated, ...) do { \
+ result = malloc_snprintf(buf, len, __VA_ARGS__); \
assert_d_eq(strncmp(buf, expected_str_untruncated, len-1), 0, \
"Unexpected string inequality (\"%s\" vs \"%s\")", \
buf, expected_str_untruncated); \
@@ -173,8 +173,8 @@ TEST_BEGIN(test_malloc_snprintf)
#define BUFLEN 128
char buf[BUFLEN];
int result;
-#define TEST(expected_str, fmt...) do { \
- result = malloc_snprintf(buf, sizeof(buf), fmt); \
+#define TEST(expected_str, ...) do { \
+ result = malloc_snprintf(buf, sizeof(buf), __VA_ARGS__); \
assert_str_eq(buf, expected_str, "Unexpected output"); \
assert_d_eq(result, strlen(expected_str), "Unexpected result"); \
} while (0)
diff --git a/deps/jemalloc/test/unit/zero.c b/deps/jemalloc/test/unit/zero.c
index 65a8f0c9c..93afc2b87 100644
--- a/deps/jemalloc/test/unit/zero.c
+++ b/deps/jemalloc/test/unit/zero.c
@@ -55,7 +55,7 @@ TEST_BEGIN(test_zero_large)
{
test_skip_if(!config_fill);
- test_zero(SMALL_MAXCLASS+1, arena_maxclass);
+ test_zero(SMALL_MAXCLASS+1, large_maxclass);
}
TEST_END
@@ -63,7 +63,7 @@ TEST_BEGIN(test_zero_huge)
{
test_skip_if(!config_fill);
- test_zero(arena_maxclass+1, chunksize*2);
+ test_zero(large_maxclass+1, chunksize*2);
}
TEST_END