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:
M | CHANGES | | | 1 | + |
M | lib/map | | | 24 | ++++++++++++------------ |
M | src64/err.l | | | 30 | ++++++++++-------------------- |
M | src64/flow.l | | | 224 | +++++++++++++++++++++++++++++++++++++------------------------------------------ |
M | src64/gc.l | | | 51 | +++++++++++++++++++++++---------------------------- |
M | src64/glob.l | | | 4 | ++-- |
M | src64/main.l | | | 12 | ++++++------ |
M | src64/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