commit 861cbe9ffcec60e872050fc007560a0ebc67863d
parent d73f39e479aa14206b4a120faf3e982019b79eee
Author: Commit-Bot <unknown>
Date: Fri, 11 Jun 2010 14:43:52 +0000
Automatic commit from picoLisp.tgz, From: Fri, 11 Jun 2010 14:43:52 GMT
Diffstat:
2 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/lib/tags b/lib/tags
@@ -1,5 +1,5 @@
-! (2861 . "@src64/flow.l")
-$ (2963 . "@src64/flow.l")
+! (2864 . "@src64/flow.l")
+$ (2966 . "@src64/flow.l")
% (2253 . "@src64/big.l")
& (2474 . "@src64/big.l")
* (2072 . "@src64/big.l")
@@ -46,7 +46,7 @@ bool (1743 . "@src64/flow.l")
box (841 . "@src64/flow.l")
box? (999 . "@src64/sym.l")
by (1553 . "@src64/apply.l")
-bye (3438 . "@src64/flow.l")
+bye (3441 . "@src64/flow.l")
caaaar (271 . "@src64/subr.l")
caaadr (288 . "@src64/subr.l")
caaar (99 . "@src64/subr.l")
@@ -61,7 +61,7 @@ caddar (409 . "@src64/subr.l")
cadddr (435 . "@src64/subr.l")
caddr (156 . "@src64/subr.l")
cadr (45 . "@src64/subr.l")
-call (3094 . "@src64/flow.l")
+call (3097 . "@src64/flow.l")
car (5 . "@src64/subr.l")
case (1984 . "@src64/flow.l")
catch (2484 . "@src64/flow.l")
@@ -113,7 +113,7 @@ diff (2563 . "@src64/subr.l")
dir (2507 . "@src64/main.l")
dm (561 . "@src64/flow.l")
do (2158 . "@src64/flow.l")
-e (2924 . "@src64/flow.l")
+e (2927 . "@src64/flow.l")
echo (4183 . "@src64/io.l")
env (605 . "@src64/main.l")
eof (3323 . "@src64/io.l")
@@ -138,7 +138,7 @@ flip (1686 . "@src64/subr.l")
flush (4849 . "@src64/io.l")
fold (3345 . "@src64/sym.l")
for (2247 . "@src64/flow.l")
-fork (3261 . "@src64/flow.l")
+fork (3264 . "@src64/flow.l")
format (1772 . "@src64/big.l")
free (2034 . "@src64/db.l")
from (3342 . "@src64/io.l")
@@ -165,12 +165,12 @@ inc (1939 . "@src64/big.l")
index (2611 . "@src64/subr.l")
info (2411 . "@src64/main.l")
intern (875 . "@src64/sym.l")
-ipid (3206 . "@src64/flow.l")
+ipid (3209 . "@src64/flow.l")
isa (978 . "@src64/flow.l")
job (1448 . "@src64/flow.l")
journal (977 . "@src64/db.l")
key (3173 . "@src64/io.l")
-kill (3238 . "@src64/flow.l")
+kill (3241 . "@src64/flow.l")
last (2031 . "@src64/subr.l")
length (2687 . "@src64/subr.l")
let (1498 . "@src64/flow.l")
@@ -233,7 +233,7 @@ on (1583 . "@src64/sym.l")
onOff (1613 . "@src64/sym.l")
one (1646 . "@src64/sym.l")
open (4114 . "@src64/io.l")
-opid (3222 . "@src64/flow.l")
+opid (3225 . "@src64/flow.l")
opt (2697 . "@src64/main.l")
or (1659 . "@src64/flow.l")
out (4008 . "@src64/io.l")
@@ -311,13 +311,13 @@ super (1237 . "@src64/flow.l")
sym (3804 . "@src64/io.l")
sym? (2408 . "@src64/subr.l")
sync (3026 . "@src64/io.l")
-sys (3065 . "@src64/flow.l")
+sys (3068 . "@src64/flow.l")
t (1770 . "@src64/flow.l")
tail (1898 . "@src64/subr.l")
tell (3096 . "@src64/io.l")
text (1272 . "@src64/sym.l")
throw (2510 . "@src64/flow.l")
-tick (3174 . "@src64/flow.l")
+tick (3177 . "@src64/flow.l")
till (3409 . "@src64/io.l")
time (2221 . "@src64/main.l")
touch (1049 . "@src64/sym.l")
diff --git a/src64/flow.l b/src64/flow.l
@@ -2758,18 +2758,21 @@
end
ld E (L I) # Get result
drop
- ld C (Z (pack III "+(EnvMid-EnvCo)")) # Main routine's link
- cmp L C # Local stack?
- ldz L 0
- if ne # Yes
- ld X (L) # Pointer to link
- do
- ld A (X) # Get link
- cmp A C # Reached main routine's link?
- while ne # No
- ld X A # Follow link
- loop
- ld (X) 0 # Clear link
+ null L # Stack?
+ if nz # Yes
+ ld C (Z (pack III "+(EnvMid-EnvCo)")) # Main routine's link
+ cmp L C # Local stack?
+ ldz L 0
+ if ne # Yes
+ ld X (L) # Pointer to link
+ do
+ ld A (X) # Get link
+ cmp A C # Reached main routine's link?
+ while ne # No
+ ld X A # Follow link
+ loop
+ ld (X) 0 # Clear link
+ end
end
push L # End of segment
push Y # Save taget coroutine