From 392b9a8114931d3ab1e2bde5619a0813b23e0f57 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 9 Jun 2020 12:04:45 -0500 Subject: [PATCH] Another tiny bugfix on bh_hash implementation --- include/bh.h | 42 +++++++----------------------------------- onyx | Bin 103264 -> 103288 bytes 2 files changed, 7 insertions(+), 35 deletions(-) diff --git a/include/bh.h b/include/bh.h index d07b0e42..57c04f28 100644 --- a/include/bh.h +++ b/include/bh.h @@ -1635,6 +1635,12 @@ add_new_element: i32 byte_len = bh_arr_length(arrptr); if (byte_len == 0) byte_len = sizeof(u64); key_length = strlen(key) + 1; + + // NOTE: Align to 16 bytes + if ((key_length + 2) % 16 != 0) { + key_length = ((((key_length + 2) >> 4) + 1) << 4) - 2; + } + bh__arr_grow(table->allocator, &arrptr, 1, byte_len + elemsize + sizeof(u16) + key_length); bh__arrhead(arrptr)->length = byte_len + elemsize + sizeof(u16) + key_length; table->arrs[index] = arrptr; @@ -1648,30 +1654,6 @@ add_new_element: found_matching: return bh_pointer_add(arrptr, -(sizeof(u16) + elemsize)); - -// OLD: -// elemsize += BH__HASH_STORED_KEY_SIZE; -// -// ptr arrptr = table->arrs[index]; -// i32 len = bh_arr_length(arrptr); -// -// while (len--) { -// if (strncmp(key, (char *) arrptr, BH__HASH_STORED_KEY_SIZE) == 0) goto found_matching; -// arrptr = bh_pointer_add(arrptr, elemsize); -// } -// -// // Didn't find it in the array, make a new one -// arrptr = table->arrs[index]; -// len = bh_arr_length(arrptr); -// bh__arr_grow(table->allocator, &arrptr, elemsize, len + 1); -// bh__arrhead(arrptr)->length++; -// table->arrs[index] = arrptr; -// -// arrptr = bh_pointer_add(arrptr, elemsize * len); -// strncpy(arrptr, key, BH__HASH_STORED_KEY_SIZE); -// -//found_matching: -// return bh_pointer_add(arrptr, BH__HASH_STORED_KEY_SIZE); } b32 bh__hash_has(bh__hash *table, i32 elemsize, char *key) { @@ -1740,6 +1722,7 @@ void bh__hash_delete(bh__hash *table, i32 elemsize, char *key) { delete_len = elemsize + sizeof(u16) + key_length; goto found_matching; } + walker = bh_pointer_add(walker, key_length); byte_offset += elemsize + sizeof(u16) + key_length; } @@ -1750,17 +1733,6 @@ found_matching: bh__arr_deleten((void **) &arrptr, 1, byte_offset, delete_len); table->arrs[index] = arrptr; (*(u64 *) arrptr)--; - -// OLD: -// while (len && strncmp(key, (char *) walker, BH__HASH_STORED_KEY_SIZE) != 0) { -// walker = bh_pointer_add(walker, stride); -// i++, len--; -// } -// -// if (len == 0) return; // Didn't exist -// -// bh__arr_deleten((void **) &arrptr, stride, i, 1); -// table->arrs[index] = arrptr; } bh_hash_iterator bh__hash_iter_setup(bh__hash *table, i32 elemsize) { diff --git a/onyx b/onyx index b8520ee29480186e49bfe37a59199c74c5dea7a3..07abf01edf8a8635341611f0f918a97748de66a3 100755 GIT binary patch delta 2172 zcmZ8hc}x^n7@u!;XIPG9xkNzZupBOji;ATbjBbUx9OA8z5VZ-%+N#x-idPvHSaD0C zyS(b4;SZ=r&@^h@)m0q_ukCF zL3aEgYo7{T4*f09t7|E7U3L1yIS4xON!8`#6LA~YYv1=993JmNiIr!ig_385IWNo_^@cL! zG!{X>Q~Oqw8b+Mc-tN`XQxehm(g^5tPFz;0Cy74$cx$xIm3^bOo30(uS-UGH%IM6v zy0#n645({|Xr!)6gAkNiRS(P1`Kn}fSv$t)G?zpd|B6PqXq3g}1CJbBA$*SRa+}~s zR9w9U4xy{nv2X`Htxkbflw>goyd{DD`!U*OiStY)l`feedjK7^#D*-y7>|J6)Q~-1 zVoFrUP9^iHV1`PZ_bhrE>QQiATp04Fs4ih{Lrs5S+y&%q_?Vi&HngH{y1(vEj7^PJ z>NzpCo}otrsHJX-U-e;;O(FROmPdVc2LE%vh~yR7b?`d!vL?YXlxB_gE0OjnIiLoa ztr_VH&WZsWW%BwtA)9sJnaIwS)2MndCL;_YA`~hI-L!@T%pe=&`0nWx{reERGb*6y zib(gkX)}6b=js%*8$TZu^RJQfpM5Ii|EP_mDscPU7(_igXM6j*2?x^EM|%(ZDz!>c zMt!LFMK?C0)%EjyI5&PcfR5Bp_AYl5edt>K9Pem1u0~P2%DIzTC86(tsH$34_45-^ zRg0-H`oNEJ0yBOag_KOjW)d3V0e-GmrVrxe+&LXz|0mdc7 zW;ylyZfhqmp-F9{uis93o|aWDpnW_vR5+m?kqJFQ`p!sl+jBZ2qYJNNyh^yFZr>tM ze3y~w?m;%<`xG4_&op$AJk4mhb3WLe(+`cQq1PFGWYB|dPeDdH*co=BEe+b8-;Q?a z06Qz5`2Y+e%X1T0QQz}fG+U1VPl4Z24335MC>N)3{VcPFRNr4i6p&RcC?N}4<47wB zYbz+|XZ6B6?Jy_$1(BWGEacWoUKFF5&rp|-AX|Rn?Zhl#G{2X1WqKWJ6Sf7WTqW!3^oBDX4!QjHW?zkMEshB7a7I{DMwgV z$Vj9aeiQIf1!pC%<4QMB@RgFV(6C?V) z;UxB^ya}!M1C@!`*>GthCaEzy8!ySolKQfRj*r>mGmv0)ApBDaU|wtS=$9!FRI$1RFzd#y`svZ z?8~a^UQks!iKtp6&8lyQBuD&u$SbrKOrZF=G&HCySr~I&rlBa^<2d<^si+ftR00IK z=4HaLcUV9r6JEhEnM`CJ6H~z?WHN?K#y69By^^11f;WB4ni|GaH7SY#O*y~W1f!{5 zQOpEQIiuF(F{)f9Fq837ZMHLBxr{!K(b);A{F2d}VrZ4t&IGI0PGdkdnRn#C1$yrX zuEJaxig0DEg-n26m*rhp=mFiXpEki`2z~WiiXmS`0Hvkw@Pi*h2XVJmKo5Ajuehsd zGjMd+BAe8Dsbr{TjT9D9<9e_K;sBQLq1zxHFmK!jV{|y@nz0=&1%Q=@CNOyR%Hh4P u^d{(0!37?gAr1cE)0<%q6!2RGGnYRpm}C4CVm#lmk=seuV&3>EME(!4X2iz; delta 2057 zcmZ8heNYr-7~f~_b~)tZ`2I@aF!?y(JP4H(NG?zhG?i4urb(O;0d<%d5k-sRfCF#n z?9NwQD*iwe#gb$?<3LPE6x5jzoxU6`#mXRKgt8zfe0%ry_D0)3_SxU>`T9N2ySvjT z*n1~fb2Kztly_ZQizxfmYW0SG@T>MT@6g6J1cW403EekSrq90KkZK*Ji$mp$3Moo! z^5`w#P3m@Qe)vWoNJ3vED(D|qqPvNo!)Da5U>?xu+=6lGL>5IM)xr?#<%Q#Jpg~s6 zCOBjDcvT^V0qgwbS3KyM7&N^u6k4r;>-Q*0q4(b{N2-cMNJU#J>YyBrRj8mI1?tqa z{uc783`a$}Rd614>T;nQ$tz1>66q`V!Vr2=83A{YLLU!@QMO*q^ZFRtZ5p-fBOwmm z(MJSr#27yWv$lTO^j2-GG$NXeT*{1Etie@E8qT8hn#hnoZ;I;TS25c23&veQp2j+) z1b&68YZAOu?qjSq8K|ek7zangN6_V(xnAub+u3+hpJy+jsT#HS#CLXb*b(Y^3ndxi z;0LtT5bk9We3T>M3~DeWd+)nwPk7rwGMCVZ!7nR*5Mx7MsUPW@<|tJ*fbrNcO-`WR zaBl|V3%p*w@n#ZBP9@k&oMF%|cUgzF-gIvUHP`t0)DGK29?Qj$29#gB*}cJuWACHk z+93D+PQv9rdR&|8_KK6ZfKuwh)d5a?XoQrkH(Vh~wDpv{GfgV*>@yA!A%A;{U5e3r zb?NS>omeq~Zr9CmJM1K;kmSHpx7AMEj$S)Z;P${nERc+P4}`Aizs{>Sh&vtn+787v z_6ks3U{9ajE1pW#Njq$IEb;JNjM0{*{!0oujIZ`@lZRzc)SvRuCz_3`OsPE!C`yx) zY5Z2RA=CJmX1&Jv?*^?&b(+xYRw-w+)xXO|&sZyrRV+&LiT}(z;ktPLD8|Rh+mk+q z@g-uze#7`@Vs}5pSn5MjPl%mIY|c2w8N?p{1LLj4`dO79{^T)7Mb4AbczV^+=^m^k zns#@QQL_p4n5^JBQnrP`9+cS@7M}P$#yR|J>5R<=F?Ky!UlB5r*dcU^+-ISy{iW)*y%#L}h{61&-0A@8^@W=DQG1>I~i`Gb*&MxEL> zkd!{hvazHxZOKy`d3>H_ciOR59XiX7Ulj0K^)xS~k7fCaM4I|GkG~XghH9rSznFr4 zv0$$H7(dGZ%lg`-U(m%K4JO1lEbP)dhK_IKH`2l~e2-q8z}|57(m0#UVA*wwXn z1UdGvhde^lYJZALqoH0}!ooG%bs9D;b~!@+RT8R`Q^bIuEjvTaO?>{1aPgU5m z_QQ}5Y~X?qg4(swC~Tt9mVFQgC2)!hJ_Jc{k;^^=OW`HX!kcLB25%ZUZ$wNcmyICm EKU6WFumAu6 -- 2.25.1