From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22105 invoked from network); 1 Apr 1997 00:11:54 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 1 Apr 1997 00:11:54 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id TAA10819; Mon, 31 Mar 1997 19:01:45 -0500 (EST) Resent-Date: Mon, 31 Mar 1997 19:01:45 -0500 (EST) Date: Tue, 1 Apr 1997 01:04:36 +0100 (BST) From: Zefram Message-Id: <16776.199704010004@stone.dcs.warwick.ac.uk> Subject: modifying hash tables during scanhashtable X-Patch: 244 Resent-Message-ID: <"00aQK3.0.xe2.e15Gp"@euclid> To: zsh-workers@math.gatech.edu Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3058 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- This patch makes it possible to add, replace or remove hashtable elements during a scan of the hashtable. This removes the need for temporary linked lists in a couple of places. The original code had separate scan loops for each of the four cases of which sets of flags are specified. I combined these into one more maintainable loop (or rather three, as there were originally three of these sets of four), on the grounds that the few additional bit-twiddling operations in common cases are insignificant compared to the significant number of memory accesses in the loop. (Oh yes, I reduced the number of those as well for sorted scans.) I also corrected the comments around scanhashtable(), concerning the meaning of flags1. They indicated that *all* these flags had to be set, but the actual behaviour was to accept *any* of them being set. The only caller that actually used more than one bit set in flags1 is bin_typeset(), which actually wants this behaviour. The header changes are not visible outside hashtable.c. -zefram begin 644 scanht_patch.gz M'XL("/,O/S,"`W-C86YH=%]P871C:`#E&VMSVL;V,_D52SN3"A`8`3;&-)E) M&K?)C)-V8G#WH-F\8._66]D]X>,?C+&Q-OO\R?GSBR=/ MSTYAY.LP\N8KG[.O/J1!)_@*)S-VT-SQ.:!)[`<>\23TV'/`E5T@LFRZBKPL MC*.4R4D[(2'!@/BPQ^"JO8FXPO!;+XZFX:P3/(:[-#`%FMBOY\^)HK?/3I_^ M_`/>9Y)43:<8>OOR].73T]?G[#\P"3]`P$N^F/`D9?&4I5FR\C*FV@.CA.`R`^G ME1`,!VZ$-*U2EL*E8A'=0#;3719?(GE!F!HR7>-U M-;[P+[M>?T\"KAI$D)]^+$1_&9V.;H$=YA M!%*(9PE/TPYCOP0\@CE-`,>:8@(\FV2I3:+OT)T%J;&I#DJ":G42=XH2CH'' M"IQX(.6PSD7@9@K.A).&Q5'[U<]G9\P/4Z&O@%+X`8?D0KGZ"G#YPM85H>T3 MK7S.%QQ6;RARU`WF`F8^_,JX;QL0)3C4=II&RX$<!,! M$#NNXN@;$%BV6I#,)3A@0$QSY(H*C0Z[W0<4MH72W=2+/W$A^*`)I7$":XSE MG56$]H7C-?D872OG\2H&U4&;'ZN[",++Z.<-2^FOGKA24&_$Y0U^?6JO719^ MAB/[>"#"#SIUQQG83J^KW3I\@JS].`(:4O:(63GE#?;!`^<8>Q8H&$<]AS_Q M5,]H-,8&@(`F/:))YGW@ZB/65)^0T.X=.=O8#2(T$74\.E62V'Y MR*`#HG8#G\8U^/NE&_G:C*P@(\)K`FE%PHT(TC*$D6?V`NZ]0Q11OZ=A`O$& M,5$!(Q6V@2'C';\6,M8T@4)ZBZ45+`%[=V$S(LU=-)#2=H%2F@*7VZF58].$ MM.FE'>:8:NJ507$(\L\*-F>"S M6-ANCQDMJE:%YW\+WY#>+\5`3=U25`E_1GPMH+GJK,SGU@9NI7"EACX8VLY1 MP="#Y9JJXP>CMS6&V_#_#QJWBQ.EX/:Q*%JDPJIH[(]\3&BU\F=%$N5`3F;M MIEI9?U^!>D)`9B'\R83*)J"H*I93CJIUU$1O0Q7'Z\Y\TPZ5GF]U>>I388!$ M!#F)4=_N=8>%./)19;15#K,8T@AM@U\XVW=ZP'UD4%II]H9VK]_/@WUOZ-B] MXX*02OTDND+(<'.7B?GHPLU@4KK#1^[TCZ;_`S&%V8F:ZV7@D_Y1;E%$NSLX M1M.KJ*1G68AFI7+M@UP'`],?WLFLMIB41M!P<$).!<@9@,:-"AKW MJ5`E'T`:MHE:*5>/CNU!OZ>X*C)LU'50'(`9P-*(BM&"H$2BV71MMGES@H;[ MIS1WR:0/@AAK%:7A+(+B1K01&LQJN@U)8-G@1`Q2-+D1=2]6K9@WHXF*7#V, M9)4J&P/@*P8SE[XF)E%DL;G[LSL&M$M@DWP`5BS9?R[`"0 MX5A[$0":!47=TDWQ88`7N-%,%'AZ!0O$)I?UL9948._[(\&^F,HB#C3`H?(T MHAL,:L8DY%26&DR9<-`^P0]LT'3V`=NUF2]J51/N3D@58"UBH\,>LVY#XJND MI"3DB@PUCN;7TB&G2D92+IT*L+T[@'WUXX4"+<%>!)0F^Z$H.MU)?"DZ)(*$ M`[GD`J/G),X"X`D#.^"=ZIK<-*O+./0?"-7*0UK>I0LRVZC1Q;58V+CNV60& MWR.)2@7E8TIC33O4D2*(;-8,(H0-Z^)UMM2Q6<0)G26@'\H#3AVS>?G<1GTL MRF,9UBL*9/1%Y`)A2B)&E+5:ND$'''_`U>S+.0]8OPP7_^W[AM;NG=[`W-;.57YL9!)%@!X:UF@ M(J```J+-S%\-<-72;9+O0B#@N%[,HEAV@J3G.5!585U:!V9`0L"2YSGU.[A& M0;S50E*6DG,UI1D6,L0V5&.,F;Z.V]HVBZNW">D?T6S0I')7!T_(!Z19(B'M M.^#:QBP%T"`\P><+[CR4JXAQ!+XW/08[;T%/S_0']T53O9RJ7N.69%7BORD. MFV+@QR.I2DZD/W>]@KHDNFX0L:]]YH1] M6KIP1;RS;M-L71OVH)OM1_>&TI<*]1/17M^D'HVA?@OR68FNW]D-:'*V4-U6 M$7LOBMNJ8`4/42)QX1U*F='>IO^JJ!(9E,C^\5WESNP_+:3_:.7BU:U\\BH( MO8`M.#`$P9$7B"&/N:)WF4F8\21T3S836J921%H5.P:4"%*7@*#,YO$$:H4, M`$1L%EY"2CJY9O_UXL4WG9TY,:(B"XY(R5,DFF8"++$HSW\W06OP4@0 M=RM%F'KM]S=K)#/CEK7BI3M?<=6/B5;JU:%LPG1V9M=8M`JSHD?*LNOOXL42 M\K7%O>?6A4S:EBI!;WU,CQU^E+"SGB[N8[+B&7)3?DS86K+3:`O^=!MJSBY? M11,(1*LE;MPH?.CBIM@1H)GE`6V+]M]+'/M(C$(\RMS>YV;@ANW?2T#\B$PL MCQ%?DAK:VG/1Q?X,WXNIMV6HDN1M%7,KK]GVB%RK:1ZW%7=9SMV;XNMLR669 MPDAGS4ZIJ5_8K\71!,TVR*N+JO MHF].UN=,])Q=C5*WLDLZ^6@M4M4656'J;S5(!9"*#(`&UQN/=>H\WK:AJ:'D M*=5:.]`D=*TE"'3-N2M?]\33TL:MV3;$W3Y`?7'-WBW7A"QMCZ7,#N4=NY,F MMS.BP9URS,]O#PL8]O2=JFL0+=A5F06BHAZ(2U.&U>-;/ MG[@*@5!WN>2@KO+5&FU\X>]=+P-6Q)''[1P6VO4E3U+)+R6>4,M)JN!!-6[B^)),]\7T3BT4X"S(D3EP@O$V;1$(]FID/_4S=7);ZVU<8^72YJW1A!5=X#3K MY&]-QO*.?%EJ4F(.$5\E3XUM6P_33+5V=_)BO9%F1&TDD")T54^MQ?(4C1*: M+1VV'3U?P8.-K6=P[T.QVX;O]13M%9IAO/@UE5#M?LNE7]0BM;U."U_QT)1, M=Q>O336K:-(0`?BJ.5EA<&.]7:Y7=#5-.57V. M?7I>1J>K5K%+\.:!WLWQ+VB(0`*(=[?V0_X%#9'T'],0V>8*BGN*2[V!`E'H MGE3'15VS;7B0M7VV#PNS=_B1/7W(6O^GZ$8D4A6>9&NK=+65JZB;M(S3-(7>85G.%) M=UB^]W)TZ-C.:-@M[(MAIT"FRP@:QQ,JJ1G>$V.YJ+&^[&JM5MYI\\\@4%"(32'V%Q@B/B67[)YV*# M4M[%`+W-DOA:[.8C;"Y=\.)"0NBQ(>7W$NZBV>A,&)80[\_F?&IT+WXZ??WR MR=G9C]\)W=<(HX'P*SQ-A+\L$<:*"3/A3HE%5_W#"4`5K88*2T]A&J(!Z05L M>AFH)AOIQ]F3\PO"J*"-LM:7`CPJ5OOW)<"["4@E`;?D4)'(E"FYE>#(X/ND.P*T<#K1;69NF3D`Z1Z72.3H^M(]&A^;^Q>^!51@] M*+BJ'=3;SL#A'-5+*$1\=?:,(-%).0%JYWFZ(K#\9.-4'ISS+?-8)O4-U4#Q MM%SCWDXF92-PL[A;`V*0<;2X)+-5G-^; MJP+_!H=@VT-MVI4/2"L_/#ET2JW\^,@> M%1C%/=E+Q!M"822M*6YLZO0AV0NI9J2*JN)/MSH9GD%)"`UP;Q% M3X\0Q18NY1.N>O<9OJX((8QLPQ8RVGXGOF,9KV*U<]>G*."/Y-16XL'J-;)#=37 M\*B%\`$S'5-IS49#MR]6T22,?(&^!=[3:1@M&BZ"KVS)-.6SVS,B4W50+T;' MMM,=F![F_USN=Y5=*2=+3F"<'F_DYQ%40"J?A5O)K[ M..W*Q8@CO;ANT@B.+$!`R;4HJU8I[]RZ09$?8;'J%A1Z`H>\NOSEQ;,?3B_0 H3SUD)1X1EB82M"SQP#M>.VOR3>5!FD!4,^!_9%NPX3$,````` ` end -----BEGIN PGP SIGNATURE----- Version: 2.6.3ia Charset: ascii iQCVAwUBMz82OHD/+HJTpU/hAQF2agP/dkixTQh4Htec7EioSwoJdgJ/sx4tv/t/ hdYDZIlyYyE80ptpTxnie1P7zrepMUVn+nzAX8F00/79hab4yEOUDgeRbTZ91Mc+ rXa8UZ4g9ssDiyPE4DQBqGO5duiF4AAWMhFyxfizUq7l9zCWxzxiS6OqC1LTYLue ZAfRzyoMh1E= =DdQK -----END PGP SIGNATURE-----