picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

commit f71cfa018162755bb49ddd55ed25b215c5f5468b
parent e9016c5ac0dbb0197a6602768ed3ec3f9324ff32
Author: Alexander Burger <abu@software-lab.de>
Date:   Fri, 24 May 2013 10:04:07 +0200

Allow unlimited number of coroutines
Diffstat:
MCHANGES | 1+
Mlib/map | 24++++++++++++------------
Msrc64/err.l | 30++++++++++--------------------
Msrc64/flow.l | 224+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc64/gc.l | 51+++++++++++++++++++++++----------------------------
Msrc64/glob.l | 4++--
Msrc64/main.l | 12++++++------
Msrc64/tags | 942++++++++++++++++++++++++++++++++++++++++----------------------------------------
8 files changed, 630 insertions(+), 658 deletions(-)

diff --git a/CHANGES b/CHANGES @@ -1,4 +1,5 @@ * DDjun13 picoLisp-3.1.3 + Allow unlimited number of coroutines Default coroutine stack segment size 1 MB JavaScript canvas library '+OnClick' GUI prefix class diff --git a/lib/map b/lib/map @@ -1,5 +1,5 @@ -! (2872 . "@src64/flow.l") -$ (2974 . "@src64/flow.l") +! (2858 . "@src64/flow.l") +$ (2960 . "@src64/flow.l") % (2572 . "@src64/big.l") & (2807 . "@src64/big.l") * (2389 . "@src64/big.l") @@ -46,7 +46,7 @@ bool (1724 . "@src64/flow.l") box (828 . "@src64/flow.l") box? (1131 . "@src64/sym.l") by (1669 . "@src64/apply.l") -bye (3422 . "@src64/flow.l") +bye (3408 . "@src64/flow.l") bytes (2973 . "@src64/subr.l") caaaar (271 . "@src64/subr.l") caaadr (288 . "@src64/subr.l") @@ -62,7 +62,7 @@ caddar (409 . "@src64/subr.l") cadddr (435 . "@src64/subr.l") caddr (156 . "@src64/subr.l") cadr (45 . "@src64/subr.l") -call (3074 . "@src64/flow.l") +call (3060 . "@src64/flow.l") car (5 . "@src64/subr.l") case (1965 . "@src64/flow.l") catch (2467 . "@src64/flow.l") @@ -115,7 +115,7 @@ diff (2590 . "@src64/subr.l") dir (3153 . "@src64/main.l") dm (545 . "@src64/flow.l") do (2141 . "@src64/flow.l") -e (2935 . "@src64/flow.l") +e (2921 . "@src64/flow.l") echo (4434 . "@src64/io.l") env (608 . "@src64/main.l") eof (3549 . "@src64/io.l") @@ -141,13 +141,13 @@ flip (1700 . "@src64/subr.l") flush (5143 . "@src64/io.l") fold (3521 . "@src64/sym.l") for (2230 . "@src64/flow.l") -fork (3248 . "@src64/flow.l") +fork (3234 . "@src64/flow.l") format (2089 . "@src64/big.l") free (1960 . "@src64/db.l") from (3568 . "@src64/io.l") full (1076 . "@src64/subr.l") fun? (750 . "@src64/sym.l") -gc (436 . "@src64/gc.l") +gc (431 . "@src64/gc.l") ge0 (2707 . "@src64/big.l") get (2903 . "@src64/sym.l") getd (758 . "@src64/sym.l") @@ -169,12 +169,12 @@ inc (2256 . "@src64/big.l") index (2638 . "@src64/subr.l") info (3055 . "@src64/main.l") intern (1007 . "@src64/sym.l") -ipid (3193 . "@src64/flow.l") +ipid (3179 . "@src64/flow.l") isa (967 . "@src64/flow.l") job (1429 . "@src64/flow.l") journal (971 . "@src64/db.l") key (3401 . "@src64/io.l") -kill (3225 . "@src64/flow.l") +kill (3211 . "@src64/flow.l") last (2045 . "@src64/subr.l") le0 (2693 . "@src64/big.l") length (2742 . "@src64/subr.l") @@ -239,7 +239,7 @@ on (1717 . "@src64/sym.l") onOff (1747 . "@src64/sym.l") one (1780 . "@src64/sym.l") open (4360 . "@src64/io.l") -opid (3209 . "@src64/flow.l") +opid (3195 . "@src64/flow.l") opt (3344 . "@src64/main.l") or (1640 . "@src64/flow.l") out (4236 . "@src64/io.l") @@ -324,7 +324,7 @@ tail (1912 . "@src64/subr.l") tell (3285 . "@src64/io.l") text (1407 . "@src64/sym.l") throw (2493 . "@src64/flow.l") -tick (3161 . "@src64/flow.l") +tick (3147 . "@src64/flow.l") till (3635 . "@src64/io.l") time (2860 . "@src64/main.l") touch (1181 . "@src64/sym.l") @@ -352,7 +352,7 @@ wr (5268 . "@src64/io.l") xchg (1672 . "@src64/sym.l") xor (1701 . "@src64/flow.l") x| (2887 . "@src64/big.l") -yield (2720 . "@src64/flow.l") +yield (2709 . "@src64/flow.l") yoke (1197 . "@src64/subr.l") zap (1195 . "@src64/sym.l") zero (1765 . "@src64/sym.l") diff --git a/src64/err.l b/src64/err.l @@ -1,4 +1,4 @@ -# 21may13abu +# 24may13abu # (c) Software Lab. Alexander Burger # Debug print routine @@ -258,17 +258,12 @@ cmp Z (X (pack III "+(EnvCo7-Env)")) # Skipped? while ne # Yes ld C (Stack1) # Find stack segment - ld A 1 do cmp C (Z II) # Found 'seg'? while ne # No sub C (StkSize) # Next segment - add A A loop - xor (Stacks) A # Clear in segment bitmask - if z # Last coroutine? - ld (StkLimit) 0 # Yes: Clear stack limit - end + ld (C -I) 0 # Mark segment as unused ld Z (Z) # Next coroutine loop load (Env) (EnvEnd) (X III) # Restore environment @@ -322,23 +317,18 @@ call popCtlFiles # Clean up loop ld X (Stack1) # Search through stack segments - ld C (Stacks) # Segment bitmask - ld A 1 + ld C (Stacks) # Segment count do - shr C 1 # In use? - if c # Yes + dec C # Any? + while ns # Yes + null (X -I) # In use? + if nz # Yes null (X -II) # Active? - if z # Yes: Discard coroutine - xor (Stacks) A # Clear in segment bitmask - if z # Stopped last coroutine? - ld (StkLimit) 0 # Yes: Clear stack limit - end - ret - end # nz + if z # Yes + ld (X -I) 0 # Mark segment as unused + end end - while nz sub X (StkSize) # Next segment - add A A loop ret diff --git a/src64/flow.l b/src64/flow.l @@ -1,4 +1,4 @@ -# 23may13abu +# 24may13abu # (c) Software Lab. Alexander Burger (code 'redefMsgEC) @@ -2556,86 +2556,83 @@ push L sub S "EnvMid-EnvCo" # Space for env ld Y (Stack1) # Search through stack segments - ld C (Stacks) # Segment bitmask + ld C (Stacks) # Segment count do - shr C 1 # In use? - if c # Yes - cmp E (Y -I) # Found tag? - if eq # Yes - null (Y -II) # Already active? - jz reentErrEX # Yes - push Y # Resume coroutine: Save 'seg' - push (StkLimit) # and 'lim' - push (EnvCo7) # Link - ld (EnvCo7) S # Close coroutine frame - ld Z S # Point Z to main frame - save (EnvCo) (EnvMid) (Z III) # Save environment + dec C # Any? + while ns # Yes + cmp E (Y -I) # Found tag? + if eq # Yes + null (Y -II) # Already active? + jz reentErrEX # Yes + push Y # Resume coroutine: Save 'seg' + push (StkLimit) # and 'lim' + push (EnvCo7) # Link + ld (EnvCo7) S # Close coroutine frame + ld Z S # Point Z to main frame + save (EnvCo) (EnvMid) (Z III) # Save environment : resumeCoroutine - ld S (Y -II) # Restore stack pointer - ld (Y -II) 0 # Mark as active - lea A (Y 4096) # Set stack limit - sub A (StkSize) - ld (StkLimit) A - load (EnvCo) (EnvMid) (Y (pack -II "-(EnvMid-EnvCo)")) # Restore environment - ld X (EnvBind) # Reversed bindings - ld C (Z (pack III "+(EnvBind-EnvCo)")) # Main bindings - do - null X # More reversed bindings? - while nz # Yes - ld Y (X) # Link address in Y - null (X -I) # Env swap zero? - if z # Yes - lea A (Y -II) # End of bindings in A - do - xchg ((A)) (A I) # Exchange symbol value with saved value - sub A II - cmp A X # More? - until lt # No - end - ld A (Y I) # Get down link - ld (Y I) C # Undo reversal - ld C X - ld X A - loop - ld (EnvBind) C # Set local bindings - ld X EnvInFrames # Pointer to input frames - ld C (Z (pack III "+(EnvInFrames-EnvCo)")) # Local input frames - call joinLocalCX # Join locals - ld X EnvOutFrames # Pointer to output frames - ld C (Z (pack III "+(EnvOutFrames-EnvCo)")) # Local output frames - call joinLocalCX # Join locals - ld X EnvApply # Local apply stack - do - null (X) # Any? - while nz # Yes - ld X ((X)) # Follow link - loop - ld (X) (Z (pack III "+(EnvApply-EnvCo)")) # Join - pop X # Get saved L - null X # Any? - if nz # Yes - ld Y (X) # Pointer to link + ld S (Y -II) # Restore stack pointer + ld (Y -II) 0 # Mark as active + lea A (Y 4096) # Set stack limit + sub A (StkSize) + ld (StkLimit) A + load (EnvCo) (EnvMid) (Y (pack -II "-(EnvMid-EnvCo)")) # Restore environment + ld X (EnvBind) # Reversed bindings + ld C (Z (pack III "+(EnvBind-EnvCo)")) # Main bindings + do + null X # More reversed bindings? + while nz # Yes + ld Y (X) # Link address in Y + null (X -I) # Env swap zero? + if z # Yes + lea A (Y -II) # End of bindings in A do - ld A (Y) # Get link - null A # Found end? - while nz # No - ld Y (A) # Next frame - loop - ld (Y) (Z (pack III "+(EnvMid-EnvCo)")) # Link to main stack - ld L X + xchg ((A)) (A I) # Exchange symbol value with saved value + sub A II + cmp A X # More? + until lt # No end - pop Z - pop Y - pop X - ret - end # nz + ld A (Y I) # Get down link + ld (Y I) C # Undo reversal + ld C X + ld X A + loop + ld (EnvBind) C # Set local bindings + ld X EnvInFrames # Pointer to input frames + ld C (Z (pack III "+(EnvInFrames-EnvCo)")) # Local input frames + call joinLocalCX # Join locals + ld X EnvOutFrames # Pointer to output frames + ld C (Z (pack III "+(EnvOutFrames-EnvCo)")) # Local output frames + call joinLocalCX # Join locals + ld X EnvApply # Local apply stack + do + null (X) # Any? + while nz # Yes + ld X ((X)) # Follow link + loop + ld (X) (Z (pack III "+(EnvApply-EnvCo)")) # Join + pop X # Get saved L + null X # Any? + if nz # Yes + ld Y (X) # Pointer to link + do + ld A (Y) # Get link + null A # Found end? + while nz # No + ld Y (A) # Next frame + loop + ld (Y) (Z (pack III "+(EnvMid-EnvCo)")) # Link to main stack + ld L X + end + pop Z + pop Y + pop X + ret end - while nz sub Y (StkSize) # Next segment loop ld Y (Stack1) # Find unused stack segment - ld Z 1 # New mask - ld C (Stacks) # Segment bitmask + ld C (Stacks) # Segment count null C # Starting first coroutine? if z # Yes ld A Y # Set stack limit @@ -2645,13 +2642,15 @@ ld (StkLimit) A end do - test C Z # Free? + dec C # More stack segments? + if s # No + inc (Stacks) # Increment segment count + break T + end + null (Y -I) # Found free segment? while nz # No - add Z Z # Next bit - jc stkErrEX # Overflow sub Y (StkSize) # Next segment loop - or (Stacks) Z # Mark segment as used push Y # Save 'seg' push (StkLimit) # and 'lim' push (EnvCo7) # Link @@ -2668,14 +2667,11 @@ sub S "EnvMid-EnvCo" # Space for 'env' ld X (X CDR) # Run 'prg' prog X - ld S (EnvCo7) # Not yielded: Restore stack pointer + ld (Y -I) 0 # Not yielded: Mark segment as unused + ld S (EnvCo7) # Restore stack pointer load (EnvCo) (EnvMid) (S III) # Restore environment pop (EnvCo7) # Restore coroutine link pop (StkLimit) # 'lim' - xor (Stacks) Z # Mark segment as unused - if z # Last coroutine? - ld (StkLimit) 0 # Yes: Clear stack limit - end add S (pack I "+(EnvMid-EnvCo)") # Clean up pop L pop Z @@ -2684,33 +2680,26 @@ ret end ld X (Stack1) # Search through stack segments - ld C (Stacks) # Segment bitmask - ld A 1 + ld C (Stacks) # Segment count do - shr C 1 # In use? - if c # Yes - cmp E (X -I) # Found tag? - if eq # Yes - null (X -II) # Active? - ldz E Nil - if nz # No - xor (Stacks) A # Clear in segment bitmask - if z # Stopped last coroutine? - ld (StkLimit) 0 # Yes: Clear stack limit - end - ld C (X (pack -II "-(EnvMid-EnvInFrames)")) # Open input frames - call closeCoFilesC - ld C (X (pack -II "-(EnvMid-EnvOutFrames)")) # Open output frames - call closeCoFilesC - ld E TSym # Return T - end - pop X - ret - end # nz + dec C # Any? + while ns # Yes + cmp E (X -I) # Found tag? + if eq # Yes + null (X -II) # Active? + ldz E Nil + if nz # No + ld (X -I) 0 # Mark segment as unused + ld C (X (pack -II "-(EnvMid-EnvInFrames)")) # Open input frames + call closeCoFilesC + ld C (X (pack -II "-(EnvMid-EnvOutFrames)")) # Open output frames + call closeCoFilesC + ld E TSym # Return T + end + pop X + ret end - while nz sub X (StkSize) # Next segment - add A A loop ld E Nil # Return NIL pop X @@ -2738,19 +2727,16 @@ cmp E Nil # Any? if ne # Yes ld Y (Stack1) # Search for target coroutine - ld C (Stacks) # Segment bitmask + ld C (Stacks) # Segment count do - shr C 1 # In use? - if c # Yes - cmp E (Y -I) # Found tag? - jne 10 # No - null (Y -II) # Already active? - jz reentErrEX # Yes - break T - end - jz yieldErrEX -10 sub Y (StkSize) # Next segment + dec C # Any? + js yieldErrEX # No + cmp E (Y -I) # Found tag? + while ne # No + sub Y (StkSize) # Next segment loop + null (Y -II) # Already active? + jz reentErrEX # Yes end ld E (L I) # Get result drop @@ -2764,7 +2750,7 @@ do ld A (X) # Get link null A # Any? - jz 20 # No + jz 10 # No cmp A C # Reached main routine's link? while ne # No ld X A # Follow link @@ -2772,7 +2758,7 @@ ld (X) 0 # Clear link end end -20 push L # End of segment +10 push L # End of segment push Y # Save taget coroutine ld X EnvApply # Pointer to apply stack do diff --git a/src64/gc.l b/src64/gc.l @@ -1,4 +1,4 @@ -# 19may13abu +# 24may13abu # (c) Software Lab. Alexander Burger # Mark data @@ -132,8 +132,10 @@ ld Y (Stack1) # Search through stack segments ld C (Stacks) # Segment bitmask do - shr C 1 # In use? - if c # Yes + dec C # Any? + while ns # Yes + null (Y -I) # In use? + if nz # Yes push C null (Y -II) # Active? if z # Yes @@ -158,10 +160,8 @@ pop Y end pop C - jmp 10 end - while nz -10 sub Y (StkSize) # Next segment + sub Y (StkSize) # Next segment loop # Mark externals ld Y Extern @@ -210,7 +210,7 @@ do ld A Z # TOS null A # Empty? - jeq 20 # Done + jeq 10 # Done sym A # Second visit? if z # Yes ld C (A CDR) # Nodes @@ -227,7 +227,7 @@ loop loop loop -20 ld A Db1 # DB root object +10 ld A Db1 # DB root object ld (DB) A # Restore '*DB' test (A) 1 # Marked? if nz # No @@ -236,7 +236,7 @@ end ld Y Extern # Clean up ld Z 0 # Clear TOS -30 do +20 do do ld A (Y CDR) atom (A CDR) # Right subtree? @@ -254,19 +254,19 @@ if nz # No or (Y CDR) 1 # Set mark bit again ld Y A # Use NIL - jmp 50 # Already traversed + jmp 40 # Already traversed end atom (A) # Left branch? if nz # No or (Y CDR) 1 # Set mark bit again ld Y (A CDR) # Use right branch - jmp 50 # Already traversed + jmp 40 # Already traversed end atom (A CDR) # Right branch? if nz # No or (Y CDR) 1 # Set mark bit again ld Y (A) # Use left branch - jmp 30 + jmp 20 end ld A (A CDR) # A on right branch ld X (A CDR) # X on sub-branches @@ -274,7 +274,7 @@ if nz # No ld (Y) (A) # Insert right sub-branch ld ((Y CDR) CDR) (X CDR) - jmp 40 # Traverse left branch + jmp 30 # Traverse left branch end ld X (X) # Left sub-branch do @@ -287,7 +287,7 @@ ld (Y) (X) # Insert left sub-branch ld ((A CDR)) (C CDR) end -40 ld A (Y CDR) # Left subtree? +30 ld A (Y CDR) # Left subtree? atom (A) if z # Yes ld C Y # Go left @@ -297,10 +297,10 @@ ld Z C break T end -50 do +40 do ld A Z # TOS null A # Empty? - jeq 60 # Done + jeq 50 # Done sym A # Second visit? if z # Yes ld C (A CDR) # Nodes @@ -317,19 +317,17 @@ loop loop loop -60 ### Clean up ### +50 ### Clean up ### ld Y (Stack1) # Search through stack segments ld C (Stacks) # Segment bitmask - ld A 1 do - shr C 1 # In use? - if c # Yes + dec C # Any? + while ns # Yes + null (Y -I) # In use? + if nz # Yes test ((Y -I)) 1 # 'tag' symbol gone? if nz # Yes - xor (Stacks) A # Clear in segment bitmask - if z # Last coroutine? - ld (StkLimit) 0 # Yes: Clear stack limit - end + ld (Y -I) 0 # Mark segment as unused else null (Y -II) # Active? if nz # No @@ -348,11 +346,8 @@ loop end end - jmp 70 end - while nz -70 sub Y (StkSize) # Next segment - add A A + sub Y (StkSize) # Next segment loop ld Y (EnvApply) # Apply stack do diff --git a/src64/glob.l b/src64/glob.l @@ -1,4 +1,4 @@ -# 23may13abu +# 24may13abu # (c) Software Lab. Alexander Burger (data 'Data) @@ -14,7 +14,7 @@ : Stack0 word 0 # Initial stack pointer : Stack1 word 0 # Coroutine stack base -: Stacks word 0 # Stack segment bitmask +: Stacks word 0 # Coroutine stack segment count : StkSize word STACK # Coroutine stack segment size : StkLimit word 0 # Stack limit: StackN-Size+4096 : Termio word 0 # Raw mode terminal I/O diff --git a/src64/main.l b/src64/main.l @@ -1,4 +1,4 @@ -# 19may13abu +# 24may13abu # (c) Software Lab. Alexander Burger (code 'Code) @@ -577,16 +577,16 @@ ld X (Stack1) # Collect coroutines ld C (Stacks) # Segment bitmask do - shr C 1 # In use? - if c # Yes + dec C # Any? + while ns # Yes + null (X -I) # In use? + if nz # Yes call consE_A # Cons 'tag' ld (A) (X -I) ld (A CDR) E ld E A - jmp 10 end - while nz -10 sub X (StkSize) # Next segment + sub X (StkSize) # Next segment loop pop X ret diff --git a/src64/tags b/src64/tags @@ -173,242 +173,242 @@ sys/x86-64.linux.defs.l,1959 Stack015,412 Stack116,469 Stacks17,525 -StkSize18,582 -StkLimit19,646 -Termio20,711 -Tv21,768 -Time23,846 -USec24,907 -TtyPid25,963 -InFDs26,1018 -InFiles27,1082 -OutFDs28,1129 -OutFiles29,1194 -PutBinBZ30,1242 -GetBinZ_FB31,1300 -Seed32,1357 -TickU34,1460 -TickS35,1514 -Slot36,1570 -Spkr37,1617 -Mic38,1668 -SpMiPipe39,1718 -Hear40,1777 -Tell41,1825 -TellBuf42,1876 -Talking43,1922 -Children44,1970 -Child45,2031 -ExtN46,2078 -Extn47,2136 -StrX48,2159 -StrC49,2208 -LineC50,2231 -Break51,2255 -GcCount52,2301 -Sep053,2352 -Sep354,2405 -BufEnd55,2459 -Penv57,2521 -Pnl58,2574 -Signal61,2610 -DBs64,2657 -DbFile65,2718 -DbFiles66,2761 -DbBlock67,2805 -MaxBlkSize68,2853 -BlkIndex69,2907 -BlkLink70,2954 -DbJnl71,3000 -DbLog72,3048 -GcMark75,3124 -Transient76,3133 -Alarm78,3246 -Sigio79,3295 -LineX80,3344 -Lisp81,3392 -LispEnd129,4917 -GcMarkEnd130,4927 -SymTab134,4956 -Nil135,4973 -Pico138,5130 -pico143,5272 -CPU144,5310 -OS145,5349 -DB146,5387 -Meth147,5424 -Quote148,5464 -TSym149,5505 -ISym152,5564 -NSym153,5601 -SSym154,5638 -CSym155,5675 -BSym156,5712 -Solo157,5749 -PPid158,5787 -Pid159,5824 -At160,5859 -At2161,5896 -At3162,5933 -This163,5970 -Prompt164,6007 -Dbg165,6044 -Zap166,6081 -Ext167,6118 -Scl168,6155 -Class169,6193 -Run170,6230 -Hup171,6267 -Sig1172,6304 -Sig2173,6341 -Up174,6378 -Err175,6415 -Msg176,6452 -Uni177,6489 -Led178,6526 -Tsm179,6563 -Adr180,6600 -Fork181,6637 -Bye182,6674 -SymTabEnd561,21236 -TgCPU564,21269 -TgOS565,21311 -Db1569,21402 -Extern571,21429 -GcSymEnd575,21500 -Version578,21529 -EnvCo589,21736 -Chr590,21769 -PutB591,21823 -Get_A592,21884 -InFile593,21944 -OutFile594,21990 -Link595,22037 -Catch596,22092 -Env597,22140 -EnvBind598,22173 -EnvInFrames599,22246 -EnvOutFrames600,22294 -EnvErrFrames601,22343 -EnvCtlFrames602,22391 -EnvIntern603,22441 -EnvArgs604,22514 -EnvNext605,22563 -EnvCls606,22610 -EnvKey607,22658 -EnvApply608,22704 -EnvMake609,22752 -EnvYoke610,22798 -EnvParseX611,22821 -EnvParseC612,22870 -EnvParseEOF613,22893 -EnvMid614,22917 -EnvCo7615,22945 -EnvTask616,22991 -EnvProtect617,23036 -EnvTrace618,23089 -EnvEnd619,23136 -OrgTermio621,23165 -Flock622,23226 -Tms623,23281 -Addr624,23334 -TBuf626,23394 -CaseBlocks631,23531 -CaseData761,38914 -CaseUpper1098,78795 -CaseLower1122,80621 -Tio1147,82327 -Repl1149,82376 -PRepl1150,82421 -Jam1151,82468 -InBye1152,82513 -Sync1153,82560 -Month1154,82622 -_r_1157,82688 -_w_1158,82705 -_a_1159,82722 -_ap_1160,82739 -_dot_1161,82758 -Giveup1165,82811 -ExecErr1166,82837 -AllocErr1167,82873 -PidSigMsg1168,82902 -QuitMsg1169,82935 -CbErr1170,82956 -HashBlank1172,83000 -Redefined1173,83023 -SuperErr1174,83057 -ExtraErr1175,83086 -ThrowErr1176,83115 -Trc11177,83148 -Trc21178,83166 -SetFD1180,83192 -Delim1181,83217 -DelimEnd1182,83258 -Arrow1183,83269 -RolbLog1185,83296 -IgnLog1186,83357 -CircFree1187,83411 -BadChain1188,83449 -BadCount1189,83478 -ErrTok1191,83515 -Dashes1192,83536 -ProtErr1193,83558 -SymNsErr1194,83593 -StkErr1195,83633 -ArgErr1196,83665 -NumErr1197,83695 -CntErr1198,83728 -SymErr1199,83767 -ExtErr1200,83800 -PairErr1201,83842 -AtomErr1202,83879 -LstErr1203,83911 -VarErr1204,83942 -DivErr1205,83977 -RenErr1206,84000 -MakeErr1207,84030 -ReentErr1208,84059 -YieldErr1209,84098 -MsgErr1210,84130 -BrkErr1211,84159 -OpenErr1212,84185 -CloseErr1213,84218 -PipeErr1214,84253 -ForkErr1215,84286 -WaitPidErr1216,84315 -BadFdErr1217,84345 -NoFdErr1218,84371 -EofErr1219,84403 -SuparErr1220,84432 -BadInput1221,84478 -BadDot1222,84512 -SelectErr1223,84545 -WrBytesErr1224,84582 -WrChildErr1225,84619 -WrSyncErr1226,84656 -WrJnlErr1227,84691 -WrLogErr1228,84728 -TruncErr1229,84761 -DbSyncErr1230,84803 -TrSyncErr1231,84842 -LockErr1232,84890 -DbfErr1233,84922 -JnlErr1234,84951 -IdErr1235,84980 -DbRdErr1236,85003 -DbWrErr1237,85033 -DbSizErr1238,85064 -TellErr1239,85095 -IpSocketErr1240,85127 -IpGetsocknameErr1241,85169 -IpV6onlyErr1242,85221 -IpReuseaddrErr1243,85268 -IpBindErr1244,85319 -IpListenErr1245,85357 -UdpOvflErr1246,85399 -UndefErr1247,85433 -DlErr1248,85462 +StkSize18,590 +StkLimit19,654 +Termio20,719 +Tv21,776 +Time23,854 +USec24,915 +TtyPid25,971 +InFDs26,1026 +InFiles27,1090 +OutFDs28,1137 +OutFiles29,1202 +PutBinBZ30,1250 +GetBinZ_FB31,1308 +Seed32,1365 +TickU34,1468 +TickS35,1522 +Slot36,1578 +Spkr37,1625 +Mic38,1676 +SpMiPipe39,1726 +Hear40,1785 +Tell41,1833 +TellBuf42,1884 +Talking43,1930 +Children44,1978 +Child45,2039 +ExtN46,2086 +Extn47,2144 +StrX48,2167 +StrC49,2216 +LineC50,2239 +Break51,2263 +GcCount52,2309 +Sep053,2360 +Sep354,2413 +BufEnd55,2467 +Penv57,2529 +Pnl58,2582 +Signal61,2618 +DBs64,2665 +DbFile65,2726 +DbFiles66,2769 +DbBlock67,2813 +MaxBlkSize68,2861 +BlkIndex69,2915 +BlkLink70,2962 +DbJnl71,3008 +DbLog72,3056 +GcMark75,3132 +Transient76,3141 +Alarm78,3254 +Sigio79,3303 +LineX80,3352 +Lisp81,3400 +LispEnd129,4925 +GcMarkEnd130,4935 +SymTab134,4964 +Nil135,4981 +Pico138,5138 +pico143,5280 +CPU144,5318 +OS145,5357 +DB146,5395 +Meth147,5432 +Quote148,5472 +TSym149,5513 +ISym152,5572 +NSym153,5609 +SSym154,5646 +CSym155,5683 +BSym156,5720 +Solo157,5757 +PPid158,5795 +Pid159,5832 +At160,5867 +At2161,5904 +At3162,5941 +This163,5978 +Prompt164,6015 +Dbg165,6052 +Zap166,6089 +Ext167,6126 +Scl168,6163 +Class169,6201 +Run170,6238 +Hup171,6275 +Sig1172,6312 +Sig2173,6349 +Up174,6386 +Err175,6423 +Msg176,6460 +Uni177,6497 +Led178,6534 +Tsm179,6571 +Adr180,6608 +Fork181,6645 +Bye182,6682 +SymTabEnd561,21244 +TgCPU564,21277 +TgOS565,21319 +Db1569,21410 +Extern571,21437 +GcSymEnd575,21508 +Version578,21537 +EnvCo589,21744 +Chr590,21777 +PutB591,21831 +Get_A592,21892 +InFile593,21952 +OutFile594,21998 +Link595,22045 +Catch596,22100 +Env597,22148 +EnvBind598,22181 +EnvInFrames599,22254 +EnvOutFrames600,22302 +EnvErrFrames601,22351 +EnvCtlFrames602,22399 +EnvIntern603,22449 +EnvArgs604,22522 +EnvNext605,22571 +EnvCls606,22618 +EnvKey607,22666 +EnvApply608,22712 +EnvMake609,22760 +EnvYoke610,22806 +EnvParseX611,22829 +EnvParseC612,22878 +EnvParseEOF613,22901 +EnvMid614,22925 +EnvCo7615,22953 +EnvTask616,22999 +EnvProtect617,23044 +EnvTrace618,23097 +EnvEnd619,23144 +OrgTermio621,23173 +Flock622,23234 +Tms623,23289 +Addr624,23342 +TBuf626,23402 +CaseBlocks631,23539 +CaseData761,38922 +CaseUpper1098,78803 +CaseLower1122,80629 +Tio1147,82335 +Repl1149,82384 +PRepl1150,82429 +Jam1151,82476 +InBye1152,82521 +Sync1153,82568 +Month1154,82630 +_r_1157,82696 +_w_1158,82713 +_a_1159,82730 +_ap_1160,82747 +_dot_1161,82766 +Giveup1165,82819 +ExecErr1166,82845 +AllocErr1167,82881 +PidSigMsg1168,82910 +QuitMsg1169,82943 +CbErr1170,82964 +HashBlank1172,83008 +Redefined1173,83031 +SuperErr1174,83065 +ExtraErr1175,83094 +ThrowErr1176,83123 +Trc11177,83156 +Trc21178,83174 +SetFD1180,83200 +Delim1181,83225 +DelimEnd1182,83266 +Arrow1183,83277 +RolbLog1185,83304 +IgnLog1186,83365 +CircFree1187,83419 +BadChain1188,83457 +BadCount1189,83486 +ErrTok1191,83523 +Dashes1192,83544 +ProtErr1193,83566 +SymNsErr1194,83601 +StkErr1195,83641 +ArgErr1196,83673 +NumErr1197,83703 +CntErr1198,83736 +SymErr1199,83775 +ExtErr1200,83808 +PairErr1201,83850 +AtomErr1202,83887 +LstErr1203,83919 +VarErr1204,83950 +DivErr1205,83985 +RenErr1206,84008 +MakeErr1207,84038 +ReentErr1208,84067 +YieldErr1209,84106 +MsgErr1210,84138 +BrkErr1211,84167 +OpenErr1212,84193 +CloseErr1213,84226 +PipeErr1214,84261 +ForkErr1215,84294 +WaitPidErr1216,84323 +BadFdErr1217,84353 +NoFdErr1218,84379 +EofErr1219,84411 +SuparErr1220,84440 +BadInput1221,84486 +BadDot1222,84520 +SelectErr1223,84553 +WrBytesErr1224,84590 +WrChildErr1225,84627 +WrSyncErr1226,84664 +WrJnlErr1227,84699 +WrLogErr1228,84736 +TruncErr1229,84769 +DbSyncErr1230,84811 +TrSyncErr1231,84850 +LockErr1232,84898 +DbfErr1233,84930 +JnlErr1234,84959 +IdErr1235,84988 +DbRdErr1236,85011 +DbWrErr1237,85041 +DbSizErr1238,85072 +TellErr1239,85103 +IpSocketErr1240,85135 +IpGetsocknameErr1241,85177 +IpV6onlyErr1242,85229 +IpReuseaddrErr1243,85276 +IpBindErr1244,85327 +IpListenErr1245,85365 +UdpOvflErr1246,85407 +UndefErr1247,85441 +DlErr1248,85470 ./main.l,2242 Code4,51 @@ -446,89 +446,89 @@ sys/x86-64.linux.defs.l,1959 doProtect513,13329 doHeap523,13489 doStack552,14113 -doAdr596,15163 -doEnv608,15381 -doTrail707,18091 -doUp775,19689 -doSys855,21404 -circE_YF883,22063 -equalAE_F915,22803 -compareAE_F1048,26012 -binSizeX_A1210,29488 -memberXY_FY1305,32098 -doQuit1323,32449 -evExprCE_E1341,32866 -evListE_E1489,36500 -sharedLibC_FA1542,37636 -doErrno1613,39280 -doNative1621,39444 -natBufACZ_CZ1825,45246 -natRetACE_CE1924,47731 -doStruct2073,53131 -fetchCharC_AC2116,54011 -cbl2151,54880 -cbl12184,55596 -cbl22188,55712 -cbl32192,55758 -cbl42196,55810 -cbl52200,55862 -cbl62204,55914 -cbl72208,55966 -cbl82212,56018 -cbl92216,56070 -cbl102220,56122 -cbl112224,56175 -cbl122228,56229 -cbl132232,56283 -cbl142236,56337 -cbl152240,56391 -cbl162244,56445 -cbl172248,56499 -cbl182252,56553 -cbl192256,56607 -cbl202260,56661 -cbl212264,56715 -cbl222268,56769 -cbl232272,56823 -cbl242276,56877 -doLisp2282,56960 -lisp2326,57986 -execE2372,59100 -runE_E2384,59255 -funqE_FE2396,59407 -evSymX_E2458,60830 -evSymY_E2461,60888 -evSymE_E2463,60930 -xSymE_E2465,60967 -evCntXY_FE2486,61332 -evCntEX_FE2488,61376 -xCntEX_FE2490,61415 -xCntCX_FC2499,61592 -xCntAX_FA2508,61769 -boxE_E2517,61946 -putStringB2537,62403 -begString2549,62617 -endString_E2560,62843 -doArgs2589,63500 -doNext2596,63614 -doArg2613,63930 -doRest2642,64572 -tmDateC_E2656,64819 -dateXYZ_E2666,64996 -doDate2727,66357 -tmTimeY_E2843,69968 -doTime2860,70301 -doUsec2964,73279 -doPwd2982,73696 -doCd2993,73951 -doCtty3018,74567 -doInfo3055,75501 -doFile3100,76596 -doDir3153,77832 -doCmd3223,79450 -doArgv3241,79909 -doOpt3344,82455 -doVersion3358,82786 +doAdr596,15179 +doEnv608,15397 +doTrail707,18107 +doUp775,19705 +doSys855,21420 +circE_YF883,22079 +equalAE_F915,22819 +compareAE_F1048,26028 +binSizeX_A1210,29504 +memberXY_FY1305,32114 +doQuit1323,32465 +evExprCE_E1341,32882 +evListE_E1489,36516 +sharedLibC_FA1542,37652 +doErrno1613,39296 +doNative1621,39460 +natBufACZ_CZ1825,45262 +natRetACE_CE1924,47747 +doStruct2073,53147 +fetchCharC_AC2116,54027 +cbl2151,54896 +cbl12184,55612 +cbl22188,55728 +cbl32192,55774 +cbl42196,55826 +cbl52200,55878 +cbl62204,55930 +cbl72208,55982 +cbl82212,56034 +cbl92216,56086 +cbl102220,56138 +cbl112224,56191 +cbl122228,56245 +cbl132232,56299 +cbl142236,56353 +cbl152240,56407 +cbl162244,56461 +cbl172248,56515 +cbl182252,56569 +cbl192256,56623 +cbl202260,56677 +cbl212264,56731 +cbl222268,56785 +cbl232272,56839 +cbl242276,56893 +doLisp2282,56976 +lisp2326,58002 +execE2372,59116 +runE_E2384,59271 +funqE_FE2396,59423 +evSymX_E2458,60846 +evSymY_E2461,60904 +evSymE_E2463,60946 +xSymE_E2465,60983 +evCntXY_FE2486,61348 +evCntEX_FE2488,61392 +xCntEX_FE2490,61431 +xCntCX_FC2499,61608 +xCntAX_FA2508,61785 +boxE_E2517,61962 +putStringB2537,62419 +begString2549,62633 +endString_E2560,62859 +doArgs2589,63516 +doNext2596,63630 +doArg2613,63946 +doRest2642,64588 +tmDateC_E2656,64835 +dateXYZ_E2666,65012 +doDate2727,66373 +tmTimeY_E2843,69984 +doTime2860,70317 +doUsec2964,73295 +doPwd2982,73712 +doCd2993,73967 +doCtty3018,74583 +doInfo3055,75517 +doFile3100,76612 +doDir3153,77848 +doCmd3223,79466 +doArgv3241,79925 +doOpt3344,82471 +doVersion3358,82802 ./big.l,1059 zapZeroA_A6,106 @@ -749,102 +749,102 @@ sys/x86-64.linux.defs.l,1959 fishAXY1640,41196 doBy1669,41750 -./err.l,1927 +./err.l,1925 dbgS5,73 errnoEXY24,572 errEXYZ33,734 unwindC_Z169,4297 -needSymAX346,9296 -needSymEX358,9495 -needVarAX369,9684 -needVarEX379,9861 -checkVarAX388,10028 -checkVarYX396,10164 -checkVarEX404,10300 -protErrEX409,10408 -symNsErrEX413,10458 -stkErr418,10533 -stkErrE420,10558 -stkErrX422,10584 -stkErrEX424,10610 -argErrAX429,10698 -argErrEX431,10725 -numErrAX435,10773 -numErrEX437,10800 -cntErrAX441,10848 -cntErrCX443,10875 -cntErrEX445,10902 -symErrAX449,10950 -symErrYX451,10977 -symErrEX453,11004 -extErrEX457,11052 -pairErrAX461,11100 -pairErrEX463,11128 -atomErrAX467,11178 -atomErrEX469,11206 -lstErrAX473,11256 -lstErrEX475,11283 -varErrAX479,11331 -varErrEX481,11358 -divErrX485,11406 -renErrEX490,11463 -makeErrX494,11511 -reentErrEX499,11570 -yieldErrX503,11622 -yieldErrEX505,11650 -msgErrYX509,11702 -msgErrAX511,11729 -msgErrEX513,11756 -brkErrX517,11804 -openErrEX523,11874 -closeErrX527,11925 -closeErrEX529,11953 -pipeErrX533,12006 -forkErrX538,12066 -waitPidErrX543,12125 -badFdErrEX548,12191 -noFdErrX552,12243 -eofErr557,12302 -suparErrE563,12368 -badInputErrB568,12429 -badDotErrE576,12520 -selectErrX581,12580 -wrBytesErr586,12644 -wrChildErr592,12719 -wrSyncErrX598,12794 -wrJnlErr603,12858 -wrLogErr609,12929 -truncErrX615,13000 -dbSyncErrX620,13062 -trSyncErrX625,13126 -lockErr630,13190 -dbfErrX636,13259 -jnlErrX641,13316 -idErrXL646,13373 -dbRdErr651,13447 -dbWrErr657,13516 -dbSizErr663,13585 -tellErr669,13655 -ipSocketErrX675,13723 -ipGetsocknameErrX680,13791 -ipV6onlyErrX685,13869 -ipReuseaddrErrX690,13937 -ipBindErrX695,14011 -ipListenErrX700,14075 -udpOvflErr705,14143 -undefinedCE712,14242 -undefinedCX714,14272 -undefinedEX716,14302 -dlErrX720,14355 -ret728,14501 -retc730,14522 -retnc733,14552 -retz736,14583 -retnz739,14613 -retNull742,14644 -retNil745,14679 -retT748,14715 -retE_E751,14750 +needSymAX336,8998 +needSymEX348,9197 +needVarAX359,9386 +needVarEX369,9563 +checkVarAX378,9730 +checkVarYX386,9866 +checkVarEX394,10002 +protErrEX399,10110 +symNsErrEX403,10160 +stkErr408,10235 +stkErrE410,10260 +stkErrX412,10286 +stkErrEX414,10312 +argErrAX419,10400 +argErrEX421,10427 +numErrAX425,10475 +numErrEX427,10502 +cntErrAX431,10550 +cntErrCX433,10577 +cntErrEX435,10604 +symErrAX439,10652 +symErrYX441,10679 +symErrEX443,10706 +extErrEX447,10754 +pairErrAX451,10802 +pairErrEX453,10830 +atomErrAX457,10880 +atomErrEX459,10908 +lstErrAX463,10958 +lstErrEX465,10985 +varErrAX469,11033 +varErrEX471,11060 +divErrX475,11108 +renErrEX480,11165 +makeErrX484,11213 +reentErrEX489,11272 +yieldErrX493,11324 +yieldErrEX495,11352 +msgErrYX499,11404 +msgErrAX501,11431 +msgErrEX503,11458 +brkErrX507,11506 +openErrEX513,11576 +closeErrX517,11627 +closeErrEX519,11655 +pipeErrX523,11708 +forkErrX528,11768 +waitPidErrX533,11827 +badFdErrEX538,11893 +noFdErrX542,11945 +eofErr547,12004 +suparErrE553,12070 +badInputErrB558,12131 +badDotErrE566,12222 +selectErrX571,12282 +wrBytesErr576,12346 +wrChildErr582,12421 +wrSyncErrX588,12496 +wrJnlErr593,12560 +wrLogErr599,12631 +truncErrX605,12702 +dbSyncErrX610,12764 +trSyncErrX615,12828 +lockErr620,12892 +dbfErrX626,12961 +jnlErrX631,13018 +idErrXL636,13075 +dbRdErr641,13149 +dbWrErr647,13218 +dbSizErr653,13287 +tellErr659,13357 +ipSocketErrX665,13425 +ipGetsocknameErrX670,13493 +ipV6onlyErrX675,13571 +ipReuseaddrErrX680,13639 +ipBindErrX685,13713 +ipListenErrX690,13777 +udpOvflErr695,13845 +undefinedCE702,13944 +undefinedCX704,13974 +undefinedEX706,14004 +dlErrX710,14057 +ret718,14203 +retc720,14224 +retnc723,14254 +retz726,14285 +retnz729,14315 +retNull732,14346 +retNil735,14381 +retT738,14417 +retE_E741,14452 ./sym.l,1776 cmpLongAX_F5,78 @@ -999,46 +999,46 @@ sys/x86-64.linux.defs.l,1959 markE5,63 needC54,1336 gc65,1529 -doGc436,11229 -cons_A459,11750 -cons_C471,12014 -cons_E483,12278 -cons_X495,12542 -cons_Y507,12806 -cons_Z519,13070 -consA_A531,13334 -consC_A547,13657 -consE_A563,13966 -consX_A579,14275 -consA_C595,14584 -consC_C611,14893 -consE_C627,15216 -consA_E643,15525 -consC_E659,15834 -consE_E675,16143 -consX_E691,16466 -consA_X707,16775 -consE_X723,17084 -consY_X739,17393 -consA_Y755,17702 -consA_Z771,18011 -consAC_E787,18320 -consSymX_E805,18673 -boxNum_A825,19123 -boxNum_C837,19408 -boxNum_E849,19693 -boxNum_X861,19978 -boxNumA_A873,20263 -boxNumE_E887,20592 -consNumAC_A901,20921 -consNumAE_A919,21297 -consNumCA_C937,21673 -consNumCE_A955,22049 -consNumCE_C972,22416 -consNumCE_E990,22792 -consNumEA_A1007,23142 -consNumEA_E1024,23492 -consNumEC_E1042,23868 +doGc431,11123 +cons_A454,11644 +cons_C466,11908 +cons_E478,12172 +cons_X490,12436 +cons_Y502,12700 +cons_Z514,12964 +consA_A526,13228 +consC_A542,13551 +consE_A558,13860 +consX_A574,14169 +consA_C590,14478 +consC_C606,14787 +consE_C622,15110 +consA_E638,15419 +consC_E654,15728 +consE_E670,16037 +consX_E686,16360 +consA_X702,16669 +consE_X718,16978 +consY_X734,17287 +consA_Y750,17596 +consA_Z766,17905 +consAC_E782,18214 +consSymX_E800,18567 +boxNum_A820,19017 +boxNum_C832,19302 +boxNum_E844,19587 +boxNum_X856,19872 +boxNumA_A868,20157 +boxNumE_E882,20486 +consNumAC_A896,20815 +consNumAE_A914,21191 +consNumCA_C932,21567 +consNumCE_A950,21943 +consNumCE_C967,22310 +consNumCE_E985,22686 +consNumEA_A1002,23036 +consNumEA_E1019,23386 +consNumEC_E1037,23762 ./flow.l,1658 redefMsgEC4,51 @@ -1107,26 +1107,26 @@ sys/x86-64.linux.defs.l,1959 throwErrZX2518,58492 doFinally2524,58583 doCo2548,59123 -resumeCoroutine2573,59938 -doYield2720,64881 -cutLocalCX2835,68049 -joinLocalCX2848,68279 -closeCoFilesC2858,68442 -doBreak2872,68705 -brkLoadE_E2880,68857 -doE2935,70457 -doTrace2974,71223 -traceCY3046,73138 -doCall3074,73626 -doTick3161,75818 -doIpid3193,76815 -doOpid3209,77103 -doKill3225,77398 -doFork3248,77833 -forkLispX_FE3261,78054 -doBye3422,82614 -byeE3434,82786 -finishE3446,83097 +resumeCoroutine2573,59902 +doYield2709,64337 +cutLocalCX2821,67431 +joinLocalCX2834,67661 +closeCoFilesC2844,67824 +doBreak2858,68087 +brkLoadE_E2866,68239 +doE2921,69839 +doTrace2960,70605 +traceCY3032,72520 +doCall3060,73008 +doTick3147,75200 +doIpid3179,76197 +doOpid3195,76485 +doKill3211,76780 +doFork3234,77215 +forkLispX_FE3247,77436 +doBye3408,81996 +byeE3420,82168 +finishE3432,82479 ./subr.l,2147 doCar5,71