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 256e488c82d15b0f26ae09f942ff009df2d03fbf
parent 8612883c26040fbf8e72165d237cdd17da0584d4
Author: Alexander Burger <abu@software-lab.de>
Date:   Sun, 19 May 2013 18:19:58 +0200

Default coroutine stack segment size 1 MB
Diffstat:
MCHANGES | 1+
Mdoc/refS.html | 39+++++++++++++++++----------------------
Mlib/map | 90++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc64/defs.l | 4++--
Msrc64/err.l | 6+++---
Msrc64/flow.l | 174++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc64/gc.l | 41+++++++++++++++++++++--------------------
Msrc64/glob.l | 7++++---
Msrc64/main.l | 20++++++++++++++------
Msrc64/tags | 901++++++++++++++++++++++++++++++++++++++++---------------------------------------
10 files changed, 646 insertions(+), 637 deletions(-)

diff --git a/CHANGES b/CHANGES @@ -1,4 +1,5 @@ * DDjun13 picoLisp-3.1.3 + Default coroutine stack segment size 1 MB JavaScript canvas library '+OnClick' GUI prefix class Flight Simulator in "misc/rcsim.l" (64-bit) diff --git a/doc/refS.html b/doc/refS.html @@ -602,32 +602,27 @@ href="refS.html#stem">stem</a></code>. </code></pre> <dt><a name="stack"><code>(stack ['cnt]) -> cnt | (.. sym . cnt)</code></a> -<dd>(64-bit version only) Maintains the stack segment size for coroutines. If -called without a <code>cnt</code> argument, or if already one or more <a -href="ref.html#coroutines">coroutines</a> are running, the current size in -megabytes is returned. Otherwise, the stack segment size is set to the new value -(default 4 MB). If there are running coroutines, their tags will be <code><a -href="refC.html#cons">cons</a></code>ed in front of the size. See also <code><a -href="refH.html#heap">heap</a></code>. +<dd>(64-bit version only) Maintains the stack segment size for <a +href="ref.html#coroutines">coroutines</a> (the main stack segment is limited - +while at least one coroutine is running - to four times that size). If called +without a <code>cnt</code> argument, or if already one or more coroutines are +running, the current size in megabytes is returned. Otherwise, the stack segment +size is set to the new value (default 1 MB). If there are running coroutines, +their tags will be <code><a href="refC.html#cons">cons</a></code>ed in front of +the size. See also <code><a href="refH.html#heap">heap</a></code>. <pre><code> -: (stack) # Get current stack segment size +$ ulimit -s unlimited && pil + # Guarantee stack space +: (stack) # Current size +-> 1 +: (stack 4) # Set to 4 MB -> 4 -: (stack 10) # Set to 10 MB --> 10 -: (let N 0 (recur (N) (recurse (inc N)))) -!? (recurse (inc N)) -Stack overflow -? N --> 109181 -? - -: (co "routine" (yield 7)) # Create two coroutines --> 7 -: (co "routine2" (yield 8)) --> 8 +: (co 'inc (let N 0 (loop (yield (inc 'N))))) # Create two coroutines +-> 1 +: (co 'dec (let N 0 (loop (yield (dec 'N))))) +-> -1 : (stack) --> ("routine2" "routine" . 4) +-> (dec inc . 4) </code></pre> <dt><a name="stamp"><code>(stamp ['dat 'tim]|['T]) -> sym</code></a> diff --git a/lib/map b/lib/map @@ -1,5 +1,5 @@ -! (2865 . "@src64/flow.l") -$ (2967 . "@src64/flow.l") +! (2867 . "@src64/flow.l") +$ (2969 . "@src64/flow.l") % (2572 . "@src64/big.l") & (2807 . "@src64/big.l") * (2389 . "@src64/big.l") @@ -25,16 +25,16 @@ $ (2967 . "@src64/flow.l") >> (2627 . "@src64/big.l") abs (2731 . "@src64/big.l") accept (148 . "@src64/net.l") -adr (588 . "@src64/main.l") -alarm (474 . "@src64/main.l") +adr (596 . "@src64/main.l") +alarm (477 . "@src64/main.l") all (788 . "@src64/sym.l") and (1624 . "@src64/flow.l") any (3999 . "@src64/io.l") append (1339 . "@src64/subr.l") apply (713 . "@src64/apply.l") -arg (2605 . "@src64/main.l") -args (2581 . "@src64/main.l") -argv (3233 . "@src64/main.l") +arg (2613 . "@src64/main.l") +args (2589 . "@src64/main.l") +argv (3241 . "@src64/main.l") as (139 . "@src64/flow.l") asoq (3021 . "@src64/subr.l") assoc (2986 . "@src64/subr.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 (3415 . "@src64/flow.l") +bye (3417 . "@src64/flow.l") bytes (2973 . "@src64/subr.l") caaaar (271 . "@src64/subr.l") caaadr (288 . "@src64/subr.l") @@ -62,11 +62,11 @@ caddar (409 . "@src64/subr.l") cadddr (435 . "@src64/subr.l") caddr (156 . "@src64/subr.l") cadr (45 . "@src64/subr.l") -call (3067 . "@src64/flow.l") +call (3069 . "@src64/flow.l") car (5 . "@src64/subr.l") case (1965 . "@src64/flow.l") catch (2467 . "@src64/flow.l") -cd (2985 . "@src64/main.l") +cd (2993 . "@src64/main.l") cdaaar (464 . "@src64/subr.l") cdaadr (487 . "@src64/subr.l") cdaar (179 . "@src64/subr.l") @@ -89,7 +89,7 @@ circ (817 . "@src64/subr.l") circ? (2403 . "@src64/subr.l") clip (1800 . "@src64/subr.l") close (4412 . "@src64/io.l") -cmd (3215 . "@src64/main.l") +cmd (3223 . "@src64/main.l") cnt (1413 . "@src64/apply.l") co (2548 . "@src64/flow.l") commit (1403 . "@src64/db.l") @@ -100,9 +100,9 @@ connect (227 . "@src64/net.l") cons (747 . "@src64/subr.l") copy (1226 . "@src64/subr.l") ctl (4285 . "@src64/io.l") -ctty (3010 . "@src64/main.l") +ctty (3018 . "@src64/main.l") cut (1931 . "@src64/sym.l") -date (2719 . "@src64/main.l") +date (2727 . "@src64/main.l") dbck (2018 . "@src64/db.l") de (532 . "@src64/flow.l") dec (2323 . "@src64/big.l") @@ -112,16 +112,16 @@ del (1986 . "@src64/sym.l") delete (1402 . "@src64/subr.l") delq (1453 . "@src64/subr.l") diff (2590 . "@src64/subr.l") -dir (3145 . "@src64/main.l") +dir (3153 . "@src64/main.l") dm (545 . "@src64/flow.l") do (2141 . "@src64/flow.l") -e (2928 . "@src64/flow.l") +e (2930 . "@src64/flow.l") echo (4443 . "@src64/io.l") -env (600 . "@src64/main.l") +env (608 . "@src64/main.l") eof (3558 . "@src64/io.l") eol (3549 . "@src64/io.l") err (4265 . "@src64/io.l") -errno (1605 . "@src64/main.l") +errno (1613 . "@src64/main.l") eval (175 . "@src64/flow.l") ext (5177 . "@src64/io.l") ext? (1166 . "@src64/sym.l") @@ -129,7 +129,7 @@ extern (1032 . "@src64/sym.l") extra (1269 . "@src64/flow.l") extract (1218 . "@src64/apply.l") fifo (2097 . "@src64/sym.l") -file (3092 . "@src64/main.l") +file (3100 . "@src64/main.l") fill (3256 . "@src64/subr.l") filter (1161 . "@src64/apply.l") fin (2034 . "@src64/subr.l") @@ -141,13 +141,13 @@ flip (1700 . "@src64/subr.l") flush (5152 . "@src64/io.l") fold (3521 . "@src64/sym.l") for (2230 . "@src64/flow.l") -fork (3241 . "@src64/flow.l") +fork (3243 . "@src64/flow.l") format (2089 . "@src64/big.l") free (1960 . "@src64/db.l") from (3577 . "@src64/io.l") full (1076 . "@src64/subr.l") fun? (750 . "@src64/sym.l") -gc (435 . "@src64/gc.l") +gc (436 . "@src64/gc.l") ge0 (2707 . "@src64/big.l") get (2903 . "@src64/sym.l") getd (758 . "@src64/sym.l") @@ -156,7 +156,7 @@ glue (1369 . "@src64/sym.l") gt0 (2718 . "@src64/big.l") hash (2976 . "@src64/big.l") head (1821 . "@src64/subr.l") -heap (520 . "@src64/main.l") +heap (523 . "@src64/main.l") hear (3262 . "@src64/io.l") host (193 . "@src64/net.l") id (1028 . "@src64/db.l") @@ -167,14 +167,14 @@ ifn (1865 . "@src64/flow.l") in (4225 . "@src64/io.l") inc (2256 . "@src64/big.l") index (2638 . "@src64/subr.l") -info (3047 . "@src64/main.l") +info (3055 . "@src64/main.l") intern (1007 . "@src64/sym.l") -ipid (3186 . "@src64/flow.l") +ipid (3188 . "@src64/flow.l") isa (967 . "@src64/flow.l") job (1429 . "@src64/flow.l") journal (971 . "@src64/db.l") key (3410 . "@src64/io.l") -kill (3218 . "@src64/flow.l") +kill (3220 . "@src64/flow.l") last (2045 . "@src64/subr.l") le0 (2693 . "@src64/big.l") length (2742 . "@src64/subr.l") @@ -184,7 +184,7 @@ lieu (1157 . "@src64/db.l") line (3733 . "@src64/io.l") lines (3886 . "@src64/io.l") link (1173 . "@src64/subr.l") -lisp (2274 . "@src64/main.l") +lisp (2282 . "@src64/main.l") list (888 . "@src64/subr.l") listen (160 . "@src64/net.l") lit (150 . "@src64/flow.l") @@ -223,10 +223,10 @@ n== (2088 . "@src64/subr.l") nT (2199 . "@src64/subr.l") name (502 . "@src64/sym.l") nand (1659 . "@src64/flow.l") -native (1613 . "@src64/main.l") +native (1621 . "@src64/main.l") need (920 . "@src64/subr.l") new (839 . "@src64/flow.l") -next (2588 . "@src64/main.l") +next (2596 . "@src64/main.l") nil (1742 . "@src64/flow.l") nond (1942 . "@src64/flow.l") nor (1680 . "@src64/flow.l") @@ -239,8 +239,8 @@ on (1717 . "@src64/sym.l") onOff (1747 . "@src64/sym.l") one (1780 . "@src64/sym.l") open (4369 . "@src64/io.l") -opid (3202 . "@src64/flow.l") -opt (3336 . "@src64/main.l") +opid (3204 . "@src64/flow.l") +opt (3344 . "@src64/main.l") or (1640 . "@src64/flow.l") out (4245 . "@src64/io.l") pack (1279 . "@src64/sym.l") @@ -267,24 +267,24 @@ prog (1760 . "@src64/flow.l") prog1 (1768 . "@src64/flow.l") prog2 (1785 . "@src64/flow.l") prop (2934 . "@src64/sym.l") -protect (510 . "@src64/main.l") +protect (513 . "@src64/main.l") prove (3543 . "@src64/subr.l") push (1822 . "@src64/sym.l") push1 (1858 . "@src64/sym.l") put (2844 . "@src64/sym.l") putl (3122 . "@src64/sym.l") -pwd (2974 . "@src64/main.l") +pwd (2982 . "@src64/main.l") queue (2054 . "@src64/sym.l") -quit (1315 . "@src64/main.l") +quit (1323 . "@src64/main.l") quote (134 . "@src64/flow.l") rand (3003 . "@src64/big.l") range (998 . "@src64/subr.l") rank (3049 . "@src64/subr.l") -raw (452 . "@src64/main.l") +raw (455 . "@src64/main.l") rd (5194 . "@src64/io.l") read (2674 . "@src64/io.l") replace (1500 . "@src64/subr.l") -rest (2634 . "@src64/main.l") +rest (2642 . "@src64/main.l") reverse (1679 . "@src64/subr.l") rewind (5160 . "@src64/io.l") rollback (1803 . "@src64/db.l") @@ -297,20 +297,20 @@ send (1134 . "@src64/flow.l") seq (1084 . "@src64/db.l") set (1616 . "@src64/sym.l") setq (1649 . "@src64/sym.l") -sigio (490 . "@src64/main.l") +sigio (493 . "@src64/main.l") size (2809 . "@src64/subr.l") skip (3535 . "@src64/io.l") sort (3978 . "@src64/subr.l") sp? (727 . "@src64/sym.l") space (5094 . "@src64/io.l") split (1593 . "@src64/subr.l") -stack (549 . "@src64/main.l") +stack (552 . "@src64/main.l") state (2009 . "@src64/flow.l") stem (1990 . "@src64/subr.l") str (4053 . "@src64/io.l") str? (1145 . "@src64/sym.l") strip (1577 . "@src64/subr.l") -struct (2065 . "@src64/main.l") +struct (2073 . "@src64/main.l") sub? (1578 . "@src64/sym.l") sum (1460 . "@src64/apply.l") super (1225 . "@src64/flow.l") @@ -318,17 +318,17 @@ sym (4039 . "@src64/io.l") sym? (2435 . "@src64/subr.l") symbols (942 . "@src64/sym.l") sync (3222 . "@src64/io.l") -sys (847 . "@src64/main.l") +sys (855 . "@src64/main.l") t (1751 . "@src64/flow.l") tail (1912 . "@src64/subr.l") tell (3294 . "@src64/io.l") text (1407 . "@src64/sym.l") throw (2493 . "@src64/flow.l") -tick (3154 . "@src64/flow.l") +tick (3156 . "@src64/flow.l") till (3644 . "@src64/io.l") -time (2852 . "@src64/main.l") +time (2860 . "@src64/main.l") touch (1181 . "@src64/sym.l") -trail (699 . "@src64/main.l") +trail (707 . "@src64/main.l") trim (1760 . "@src64/subr.l") try (1177 . "@src64/flow.l") type (920 . "@src64/flow.l") @@ -336,13 +336,13 @@ udp (304 . "@src64/net.l") unify (3951 . "@src64/subr.l") unless (1901 . "@src64/flow.l") until (2085 . "@src64/flow.l") -up (767 . "@src64/main.l") +up (775 . "@src64/main.l") upp? (3402 . "@src64/sym.l") uppc (3469 . "@src64/sym.l") use (1573 . "@src64/flow.l") -usec (2956 . "@src64/main.l") +usec (2964 . "@src64/main.l") val (1597 . "@src64/sym.l") -version (3350 . "@src64/main.l") +version (3358 . "@src64/main.l") wait (3184 . "@src64/io.l") when (1884 . "@src64/flow.l") while (2061 . "@src64/flow.l") @@ -352,7 +352,7 @@ wr (5277 . "@src64/io.l") xchg (1672 . "@src64/sym.l") xor (1701 . "@src64/flow.l") x| (2887 . "@src64/big.l") -yield (2720 . "@src64/flow.l") +yield (2722 . "@src64/flow.l") yoke (1197 . "@src64/subr.l") zap (1195 . "@src64/sym.l") zero (1765 . "@src64/sym.l") diff --git a/src64/defs.l b/src64/defs.l @@ -1,10 +1,10 @@ -# 07jun12abu +# 19may13abu # (c) Software Lab. Alexander Burger # Constants (equ HEAP (* 1024 1024)) # Heap size in bytes (equ CELLS (/ HEAP 16)) # Number of cells in a single heap (65536) -(equ STACK (* 4 1024 1024)) # Default stack segment size +(equ STACK (* 1024 1024)) # Default coroutine stack segment size (1 MB) (equ ZERO (short 0)) # Short number '0' (equ ONE (short 1)) # Short number '1' (equ TOP (hex "10000")) # Character top diff --git a/src64/err.l b/src64/err.l @@ -1,4 +1,4 @@ -# 12jan13abu +# 19may13abu # (c) Software Lab. Alexander Burger # Debug print routine @@ -259,12 +259,12 @@ do cmp Z (X (pack III "+(EnvCo7-Env)")) # Skipped? while ne # Yes - ld C (Stack0) # Find stack segment + ld C (Stack1) # Find stack segment ld A 1 do - sub C (StkSize) # Next segment 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 diff --git a/src64/flow.l b/src64/flow.l @@ -1,4 +1,4 @@ -# 06may13abu +# 19may13abu # (c) Software Lab. Alexander Burger (code 'redefMsgEC) @@ -2555,105 +2555,107 @@ push Z push L sub S "EnvMid-EnvCo" # Space for env - ld Y (Stack0) # Search through stack segments + ld Y (Stack1) # Search through stack segments ld C (Stacks) # Segment bitmask do - sub Y (StkSize) # Next segment shr C 1 # In use? if c # Yes cmp E (Y -I) # Found tag? - continue ne # No - 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 + 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 EnvErrFrames # Pointer to error frames - ld C (Z (pack III "+(EnvErrFrames-EnvCo)")) # Local error frames - call joinLocalCX # Join locals - ld X EnvCtlFrames # Pointer to control frames - ld C (Z (pack III "+(EnvCtlFrames-EnvCo)")) # Local control 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 - ld A (Y) # Get link - null A # Found end? - while nz # No - ld Y (A) # Next frame + 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 (Y) (Z (pack III "+(EnvMid-EnvCo)")) # Link to main stack - ld L X - end - pop Z - pop Y - pop X - ret + 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 EnvErrFrames # Pointer to error frames + ld C (Z (pack III "+(EnvErrFrames-EnvCo)")) # Local error frames + call joinLocalCX # Join locals + ld X EnvCtlFrames # Pointer to control frames + ld C (Z (pack III "+(EnvCtlFrames-EnvCo)")) # Local control 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 # nz end - until z - ld Y (Stack0) # Find unused stack segment + 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 null C # Starting first coroutine? if z # Yes - lea A ((Stack0) 4096) # Set stack limit - sub A (StkSize) + ld A Y # Set stack limit + add A 4096 cmp S A # Check it jlt stkErr ld (StkLimit) A end do - sub Y (StkSize) # Next segment test C Z # Free? 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' @@ -2687,11 +2689,10 @@ pop X ret end - ld X (Stack0) # Search through stack segments + ld X (Stack1) # Search through stack segments ld C (Stacks) # Segment bitmask ld A 1 do - sub X (StkSize) # Next segment shr C 1 # In use? if c # Yes cmp E (X -I) # Found tag? @@ -2707,9 +2708,10 @@ end pop X ret - end + end # nz end while nz + sub X (StkSize) # Next segment add A A loop ld E Nil # Return NIL @@ -2737,19 +2739,19 @@ ld Y 0 # Preload "no target" cmp E Nil # Any? if ne # Yes - ld Y (Stack0) # Search for target coroutine + ld Y (Stack1) # Search for target coroutine ld C (Stacks) # Segment bitmask do - sub Y (StkSize) # Next segment shr C 1 # In use? if c # Yes cmp E (Y -I) # Found tag? - continue ne # No + jne 10 # No null (Y -II) # Already active? jz reentErrEX # Yes break T end jz yieldErrEX +10 sub Y (StkSize) # Next segment loop end ld E (L I) # Get result @@ -2764,7 +2766,7 @@ do ld A (X) # Get link null A # Any? - jz 10 # No + jz 20 # No cmp A C # Reached main routine's link? while ne # No ld X A # Follow link @@ -2772,7 +2774,7 @@ ld (X) 0 # Clear link end end -10 push L # End of segment +20 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 @@ -# 07jun12abu +# 19may13abu # (c) Software Lab. Alexander Burger # Mark data @@ -129,10 +129,9 @@ call markE ld Y (Y) # Next frame loop - ld Y (Stack0) # Search through stack segments + ld Y (Stack1) # Search through stack segments ld C (Stacks) # Segment bitmask do - sub Y (StkSize) # Next segment shr C 1 # In use? if c # Yes push C @@ -159,9 +158,11 @@ pop Y end pop C - continue T + jmp 10 end - until z + while nz +10 sub Y (StkSize) # Next segment + loop # Mark externals ld Y Extern ld Z 0 # Clear TOS @@ -209,7 +210,7 @@ do ld A Z # TOS null A # Empty? - jeq 10 # Done + jeq 20 # Done sym A # Second visit? if z # Yes ld C (A CDR) # Nodes @@ -226,7 +227,7 @@ loop loop loop -10 ld A Db1 # DB root object +20 ld A Db1 # DB root object ld (DB) A # Restore '*DB' test (A) 1 # Marked? if nz # No @@ -235,7 +236,7 @@ end ld Y Extern # Clean up ld Z 0 # Clear TOS -20 do +30 do do ld A (Y CDR) atom (A CDR) # Right subtree? @@ -253,19 +254,19 @@ if nz # No or (Y CDR) 1 # Set mark bit again ld Y A # Use NIL - jmp 40 # Already traversed + jmp 50 # 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 40 # Already traversed + jmp 50 # 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 20 + jmp 30 end ld A (A CDR) # A on right branch ld X (A CDR) # X on sub-branches @@ -273,7 +274,7 @@ if nz # No ld (Y) (A) # Insert right sub-branch ld ((Y CDR) CDR) (X CDR) - jmp 30 # Traverse left branch + jmp 40 # Traverse left branch end ld X (X) # Left sub-branch do @@ -286,7 +287,7 @@ ld (Y) (X) # Insert left sub-branch ld ((A CDR)) (C CDR) end -30 ld A (Y CDR) # Left subtree? +40 ld A (Y CDR) # Left subtree? atom (A) if z # Yes ld C Y # Go left @@ -296,10 +297,10 @@ ld Z C break T end -40 do +50 do ld A Z # TOS null A # Empty? - jeq 50 # Done + jeq 60 # Done sym A # Second visit? if z # Yes ld C (A CDR) # Nodes @@ -316,12 +317,11 @@ loop loop loop -50 ### Clean up ### - ld Y (Stack0) # Search through stack segments +60 ### Clean up ### + ld Y (Stack1) # Search through stack segments ld C (Stacks) # Segment bitmask ld A 1 do - sub Y (StkSize) # Next segment shr C 1 # In use? if c # Yes test ((Y -I)) 1 # 'tag' symbol gone? @@ -348,10 +348,11 @@ loop end end - jmp 60 + jmp 70 end while nz -60 add A A +70 sub Y (StkSize) # Next segment + add A A loop ld Y (EnvApply) # Apply stack do diff --git a/src64/glob.l b/src64/glob.l @@ -1,4 +1,4 @@ -# 06may13abu +# 19may13abu # (c) Software Lab. Alexander Burger (data 'Data) @@ -13,9 +13,10 @@ word 0 : Stack0 word 0 # Initial stack pointer +: Stack1 word 0 # Coroutine stack base : Stacks word 0 # Stack segment bitmask -: StkSize word STACK # Stack segment size -: StkLimit word 0 # Stack limit: StackN-StkSize+4096 +: StkSize word STACK # Coroutine stack segment size +: StkLimit word 0 # Stack limit: StackN-Size+4096 : Link word 0 # Saved link register : Catch word 0 # Catch frames : Termio word 0 # Raw mode terminal I/O diff --git a/src64/main.l b/src64/main.l @@ -1,4 +1,4 @@ -# 06may13abu +# 19may13abu # (c) Software Lab. Alexander Burger (code 'Code) @@ -85,6 +85,9 @@ or A CNT ld (Pid) A ld (Stack0) S # Save top level stack pointer + ld A S # Stack top in A + sub A (* 4 STACK) # Decrement by main segment size + ld (Stack1) A # Set coroutine stack base ld (StkLimit) 0 # Initially without stack limit ld L 0 # Init link register call heapAlloc # Allocate initial heap @@ -556,7 +559,11 @@ if z # No ld E (E) # Eval 'cnt' call evCntEX_FE - shl E 20 # [MB] + shl E 22 # Main stack segment size [times 4 MB] + ld A (Stack0) # Get stack top + sub A E # Decrement by main segment size + ld (Stack1) A # New coroutine stack base + shr E 2 # [to MB] ld (StkSize) E # Set new stack size shr E 16 # Make short number [MB] or E CNT @@ -567,19 +574,20 @@ ld E (StkSize) # Return current stack size shr E 16 # Make short number [MB] or E CNT - ld X (Stack0) # Collect coroutines + ld X (Stack1) # Collect coroutines ld C (Stacks) # Segment bitmask do - sub X (StkSize) # Next segment shr C 1 # In use? if c # Yes call consE_A # Cons 'tag' ld (A) (X -I) ld (A CDR) E ld E A - continue T + jmp 10 end - until z + while nz +10 sub X (StkSize) # Next segment + loop pop X ret diff --git a/src64/tags b/src64/tags @@ -1,52 +1,52 @@ -./defs.l,638 +./defs.l,639 HEAP5,63 CELLS6,114 STACK7,187 -ZERO8,246 -ONE9,295 -TOP10,344 -DB111,390 -I14,455 -II15,465 -III16,477 -IV17,490 -V18,502 -VI19,513 -VII20,525 -VIII21,538 -IX22,552 --I24,565 --II25,579 --III26,595 --IV27,612 --V28,628 --VI29,643 --VII30,659 --VIII31,676 -CNT34,710 -BIG35,737 -DIG36,784 -CDR37,829 -SIGN38,870 -SYM39,908 -TAIL40,936 -NIX43,984 -BEG44,1008 -DOT45,1039 -END46,1071 -NUMBER47,1100 -INTERN48,1127 -TRANSIENT49,1163 -EXTERN50,1200 -BLK53,1246 -BLKSIZE54,1285 -BLKTAG55,1324 -UDPMAX58,1373 -CHAR_UPPERCASE61,1453 -CHAR_LOWERCASE62,1476 -CHAR_LETTER63,1499 -CHAR_DIGIT64,1520 +ZERO8,263 +ONE9,312 +TOP10,361 +DB111,407 +I14,472 +II15,482 +III16,494 +IV17,507 +V18,519 +VI19,530 +VII20,542 +VIII21,555 +IX22,569 +-I24,582 +-II25,596 +-III26,612 +-IV27,629 +-V28,645 +-VI29,660 +-VII30,676 +-VIII31,693 +CNT34,727 +BIG35,754 +DIG36,801 +CDR37,846 +SIGN38,887 +SYM39,925 +TAIL40,953 +NIX43,1001 +BEG44,1025 +DOT45,1056 +END46,1088 +NUMBER47,1117 +INTERN48,1144 +TRANSIENT49,1180 +EXTERN50,1217 +BLK53,1263 +BLKSIZE54,1302 +BLKTAG55,1341 +UDPMAX58,1390 +CHAR_UPPERCASE61,1470 +CHAR_LOWERCASE62,1493 +CHAR_LETTER63,1516 +CHAR_DIGIT64,1537 sys/x86-64.linux.defs.l,1959 ENOENT5,59 @@ -162,7 +162,7 @@ sys/x86-64.linux.defs.l,1959 AI_ADDR147,2488 AI_NEXT148,2505 -./glob.l,4310 +./glob.l,4326 Data4,51 AV7,77 AV08,141 @@ -171,243 +171,244 @@ sys/x86-64.linux.defs.l,1959 Avail11,284 Buf12,330 Stack015,412 -Stacks16,469 -StkSize17,526 -StkLimit18,580 -Link19,648 -Catch20,703 -Termio21,751 -Tv22,808 -Time24,886 -USec25,947 -TtyPid26,1003 -InFDs27,1058 -InFiles28,1122 -OutFDs29,1169 -OutFiles30,1234 -PutBinBZ31,1282 -GetBinZ_FB32,1340 -Seed33,1397 -TickU35,1500 -TickS36,1554 -Slot37,1610 -Spkr38,1657 -Mic39,1708 -SpMiPipe40,1758 -Hear41,1817 -Tell42,1865 -TellBuf43,1916 -Talking44,1962 -Children45,2010 -Child46,2071 -ExtN47,2118 -Extn48,2176 -StrX49,2199 -StrC50,2248 -LineC51,2271 -Break52,2295 -GcCount53,2341 -Sep054,2392 -Sep355,2445 -BufEnd56,2499 -Penv58,2561 -Pnl59,2614 -Signal62,2650 -DBs65,2697 -DbFile66,2758 -DbFiles67,2801 -DbBlock68,2845 -MaxBlkSize69,2893 -BlkIndex70,2947 -BlkLink71,2994 -DbJnl72,3040 -DbLog73,3088 -GcMark76,3164 -Transient77,3173 -Alarm79,3286 -Sigio80,3335 -LineX81,3384 -Lisp82,3432 -LispEnd130,4957 -GcMarkEnd131,4967 -SymTab135,4996 -Nil136,5013 -Pico139,5170 -pico144,5312 -CPU145,5350 -OS146,5389 -DB147,5427 -Meth148,5464 -Quote149,5504 -TSym150,5545 -ISym153,5604 -NSym154,5641 -SSym155,5678 -CSym156,5715 -BSym157,5752 -Solo158,5789 -PPid159,5827 -Pid160,5864 -At161,5899 -At2162,5936 -At3163,5973 -This164,6010 -Prompt165,6047 -Dbg166,6084 -Zap167,6121 -Ext168,6158 -Scl169,6195 -Class170,6233 -Run171,6270 -Hup172,6307 -Sig1173,6344 -Sig2174,6381 -Up175,6418 -Err176,6455 -Msg177,6492 -Uni178,6529 -Led179,6566 -Tsm180,6603 -Adr181,6640 -Fork182,6677 -Bye183,6714 -SymTabEnd562,21276 -TgCPU565,21309 -TgOS566,21351 -Db1570,21442 -Extern572,21469 -GcSymEnd576,21540 -Version579,21569 -EnvCo590,21776 -Chr591,21809 -PutB592,21863 -Get_A593,21924 -InFile594,21984 -OutFile595,22030 -Env596,22077 -EnvBind597,22110 -EnvInFrames598,22183 -EnvOutFrames599,22231 -EnvErrFrames600,22280 -EnvCtlFrames601,22328 -EnvIntern602,22378 -EnvArgs603,22451 -EnvNext604,22500 -EnvCls605,22547 -EnvKey606,22595 -EnvApply607,22641 -EnvMake608,22689 -EnvYoke609,22735 -EnvParseX610,22758 -EnvParseC611,22807 -EnvParseEOF612,22830 -EnvMid613,22854 -EnvCo7614,22882 -EnvTask615,22928 -EnvProtect616,22973 -EnvTrace617,23026 -EnvEnd618,23073 -OrgTermio620,23102 -Flock621,23163 -Tms622,23218 -Addr623,23271 -TBuf625,23331 -CaseBlocks630,23468 -CaseData760,38851 -CaseUpper1097,78732 -CaseLower1121,80558 -Tio1146,82264 -Repl1148,82313 -PRepl1149,82358 -Jam1150,82405 -InBye1151,82450 -Sync1152,82497 -Month1153,82559 -_r_1156,82625 -_w_1157,82642 -_a_1158,82659 -_ap_1159,82676 -_dot_1160,82695 -Giveup1164,82748 -ExecErr1165,82774 -AllocErr1166,82810 -PidSigMsg1167,82839 -QuitMsg1168,82872 -CbErr1169,82893 -HashBlank1171,82937 -Redefined1172,82960 -SuperErr1173,82994 -ExtraErr1174,83023 -ThrowErr1175,83052 -Trc11176,83085 -Trc21177,83103 -SetFD1179,83129 -Delim1180,83154 -DelimEnd1181,83195 -Arrow1182,83206 -RolbLog1184,83233 -IgnLog1185,83294 -CircFree1186,83348 -BadChain1187,83386 -BadCount1188,83415 -ErrTok1190,83452 -Dashes1191,83473 -ProtErr1192,83495 -SymNsErr1193,83530 -StkErr1194,83570 -ArgErr1195,83602 -NumErr1196,83632 -CntErr1197,83665 -SymErr1198,83704 -ExtErr1199,83737 -PairErr1200,83779 -AtomErr1201,83816 -LstErr1202,83848 -VarErr1203,83879 -DivErr1204,83914 -RenErr1205,83937 -MakeErr1206,83967 -ReentErr1207,83996 -YieldErr1208,84035 -MsgErr1209,84067 -BrkErr1210,84096 -OpenErr1211,84122 -CloseErr1212,84155 -PipeErr1213,84190 -ForkErr1214,84223 -WaitPidErr1215,84252 -BadFdErr1216,84282 -NoFdErr1217,84308 -EofErr1218,84340 -SuparErr1219,84369 -BadInput1220,84415 -BadDot1221,84449 -SelectErr1222,84482 -WrBytesErr1223,84519 -WrChildErr1224,84556 -WrSyncErr1225,84593 -WrJnlErr1226,84628 -WrLogErr1227,84665 -TruncErr1228,84698 -DbSyncErr1229,84740 -TrSyncErr1230,84779 -LockErr1231,84827 -DbfErr1232,84859 -JnlErr1233,84888 -IdErr1234,84917 -DbRdErr1235,84940 -DbWrErr1236,84970 -DbSizErr1237,85001 -TellErr1238,85032 -IpSocketErr1239,85064 -IpGetsocknameErr1240,85106 -IpV6onlyErr1241,85158 -IpReuseaddrErr1242,85205 -IpBindErr1243,85256 -IpListenErr1244,85294 -UdpOvflErr1245,85336 -UndefErr1246,85370 -DlErr1247,85399 +Stack116,469 +Stacks17,525 +StkSize18,582 +StkLimit19,646 +Link20,711 +Catch21,766 +Termio22,814 +Tv23,871 +Time25,949 +USec26,1010 +TtyPid27,1066 +InFDs28,1121 +InFiles29,1185 +OutFDs30,1232 +OutFiles31,1297 +PutBinBZ32,1345 +GetBinZ_FB33,1403 +Seed34,1460 +TickU36,1563 +TickS37,1617 +Slot38,1673 +Spkr39,1720 +Mic40,1771 +SpMiPipe41,1821 +Hear42,1880 +Tell43,1928 +TellBuf44,1979 +Talking45,2025 +Children46,2073 +Child47,2134 +ExtN48,2181 +Extn49,2239 +StrX50,2262 +StrC51,2311 +LineC52,2334 +Break53,2358 +GcCount54,2404 +Sep055,2455 +Sep356,2508 +BufEnd57,2562 +Penv59,2624 +Pnl60,2677 +Signal63,2713 +DBs66,2760 +DbFile67,2821 +DbFiles68,2864 +DbBlock69,2908 +MaxBlkSize70,2956 +BlkIndex71,3010 +BlkLink72,3057 +DbJnl73,3103 +DbLog74,3151 +GcMark77,3227 +Transient78,3236 +Alarm80,3349 +Sigio81,3398 +LineX82,3447 +Lisp83,3495 +LispEnd131,5020 +GcMarkEnd132,5030 +SymTab136,5059 +Nil137,5076 +Pico140,5233 +pico145,5375 +CPU146,5413 +OS147,5452 +DB148,5490 +Meth149,5527 +Quote150,5567 +TSym151,5608 +ISym154,5667 +NSym155,5704 +SSym156,5741 +CSym157,5778 +BSym158,5815 +Solo159,5852 +PPid160,5890 +Pid161,5927 +At162,5962 +At2163,5999 +At3164,6036 +This165,6073 +Prompt166,6110 +Dbg167,6147 +Zap168,6184 +Ext169,6221 +Scl170,6258 +Class171,6296 +Run172,6333 +Hup173,6370 +Sig1174,6407 +Sig2175,6444 +Up176,6481 +Err177,6518 +Msg178,6555 +Uni179,6592 +Led180,6629 +Tsm181,6666 +Adr182,6703 +Fork183,6740 +Bye184,6777 +SymTabEnd563,21339 +TgCPU566,21372 +TgOS567,21414 +Db1571,21505 +Extern573,21532 +GcSymEnd577,21603 +Version580,21632 +EnvCo591,21839 +Chr592,21872 +PutB593,21926 +Get_A594,21987 +InFile595,22047 +OutFile596,22093 +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 ./main.l,2242 Code4,51 @@ -420,114 +421,114 @@ sys/x86-64.linux.defs.l,1959 RetT25,285 RetE_E28,320 main33,402 -restart154,4013 -loadAllX_E162,4175 -giveupX180,4583 -execErrS187,4696 -iSignalCE192,4796 -allocC_A202,5079 -allocAE_A207,5188 -NoMemory211,5302 -heapAlloc217,5381 -sighandler0238,5885 -sighandlerX245,5962 -sighandlerE252,6039 -sig345,9371 -sigTerm357,9595 -sigChld368,9813 -tcSetC389,10321 -sigTermStop402,10588 -setRaw418,11081 -setCooked444,11880 -doRaw452,12047 -doAlarm474,12450 -doSigio490,12734 -doProtect510,13201 -doHeap520,13361 -doStack549,13985 -doAdr588,14828 -doEnv600,15046 -doTrail699,17756 -doUp767,19354 -doSys847,21069 -circE_YF875,21728 -equalAE_F907,22468 -compareAE_F1040,25677 -binSizeX_A1202,29153 -memberXY_FY1297,31763 -doQuit1315,32114 -evExprCE_E1333,32531 -evListE_E1481,36165 -sharedLibC_FA1534,37301 -doErrno1605,38945 -doNative1613,39109 -natBufACZ_CZ1817,44911 -natRetACE_CE1916,47396 -doStruct2065,52796 -fetchCharC_AC2108,53676 -cbl2143,54545 -cbl12176,55261 -cbl22180,55377 -cbl32184,55423 -cbl42188,55475 -cbl52192,55527 -cbl62196,55579 -cbl72200,55631 -cbl82204,55683 -cbl92208,55735 -cbl102212,55787 -cbl112216,55840 -cbl122220,55894 -cbl132224,55948 -cbl142228,56002 -cbl152232,56056 -cbl162236,56110 -cbl172240,56164 -cbl182244,56218 -cbl192248,56272 -cbl202252,56326 -cbl212256,56380 -cbl222260,56434 -cbl232264,56488 -cbl242268,56542 -doLisp2274,56625 -lisp2318,57651 -execE2364,58765 -runE_E2376,58920 -funqE_FE2388,59072 -evSymX_E2450,60495 -evSymY_E2453,60553 -evSymE_E2455,60595 -xSymE_E2457,60632 -evCntXY_FE2478,60997 -evCntEX_FE2480,61041 -xCntEX_FE2482,61080 -xCntCX_FC2491,61257 -xCntAX_FA2500,61434 -boxE_E2509,61611 -putStringB2529,62068 -begString2541,62282 -endString_E2552,62508 -doArgs2581,63165 -doNext2588,63279 -doArg2605,63595 -doRest2634,64237 -tmDateC_E2648,64484 -dateXYZ_E2658,64661 -doDate2719,66022 -tmTimeY_E2835,69633 -doTime2852,69966 -doUsec2956,72944 -doPwd2974,73361 -doCd2985,73616 -doCtty3010,74232 -doInfo3047,75166 -doFile3092,76261 -doDir3145,77497 -doCmd3215,79115 -doArgv3233,79574 -doOpt3336,82120 -doVersion3350,82451 +restart157,4141 +loadAllX_E165,4303 +giveupX183,4711 +execErrS190,4824 +iSignalCE195,4924 +allocC_A205,5207 +allocAE_A210,5316 +NoMemory214,5430 +heapAlloc220,5509 +sighandler0241,6013 +sighandlerX248,6090 +sighandlerE255,6167 +sig348,9499 +sigTerm360,9723 +sigChld371,9941 +tcSetC392,10449 +sigTermStop405,10716 +setRaw421,11209 +setCooked447,12008 +doRaw455,12175 +doAlarm477,12578 +doSigio493,12862 +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 ./big.l,1059 zapZeroA_A6,106 @@ -997,46 +998,46 @@ sys/x86-64.linux.defs.l,1959 markE5,63 needC54,1336 gc65,1529 -doGc435,11224 -cons_A458,11745 -cons_C470,12009 -cons_E482,12273 -cons_X494,12537 -cons_Y506,12801 -cons_Z518,13065 -consA_A530,13329 -consC_A546,13652 -consE_A562,13961 -consX_A578,14270 -consA_C594,14579 -consC_C610,14888 -consE_C626,15211 -consA_E642,15520 -consC_E658,15829 -consE_E674,16138 -consX_E690,16461 -consA_X706,16770 -consE_X722,17079 -consY_X738,17388 -consA_Y754,17697 -consA_Z770,18006 -consAC_E786,18315 -consSymX_E804,18668 -boxNum_A824,19118 -boxNum_C836,19403 -boxNum_E848,19688 -boxNum_X860,19973 -boxNumA_A872,20258 -boxNumE_E886,20587 -consNumAC_A900,20916 -consNumAE_A918,21292 -consNumCA_C936,21668 -consNumCE_A954,22044 -consNumCE_C971,22411 -consNumCE_E989,22787 -consNumEA_A1006,23137 -consNumEA_E1023,23487 -consNumEC_E1041,23863 +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 ./flow.l,1632 redefMsgEC4,51 @@ -1105,25 +1106,25 @@ sys/x86-64.linux.defs.l,1959 throwErrZX2518,58492 doFinally2524,58583 doCo2548,59123 -resumeCoroutine2574,59960 -doYield2720,64803 -cutLocalCX2841,68288 -joinLocalCX2854,68518 -doBreak2865,68700 -brkLoadE_E2873,68852 -doE2928,70452 -doTrace2967,71218 -traceCY3039,73133 -doCall3067,73621 -doTick3154,75813 -doIpid3186,76810 -doOpid3202,77098 -doKill3218,77393 -doFork3241,77828 -forkLispX_FE3254,78049 -doBye3415,82609 -byeE3427,82781 -finishE3439,83092 +resumeCoroutine2573,59938 +doYield2722,65031 +cutLocalCX2843,68511 +joinLocalCX2856,68741 +doBreak2867,68923 +brkLoadE_E2875,69075 +doE2930,70675 +doTrace2969,71441 +traceCY3041,73356 +doCall3069,73844 +doTick3156,76036 +doIpid3188,77033 +doOpid3204,77321 +doKill3220,77616 +doFork3243,78051 +forkLispX_FE3256,78272 +doBye3417,82832 +byeE3429,83004 +finishE3441,83315 ./subr.l,2147 doCar5,71