commit 4d29882843181540b46c5d89c9fc70869fe79343
parent e9e7939ac56e338a6abf53f21d00c79acdfd4849
Author: Commit-Bot <unknown>
Date: Fri, 11 Jun 2010 10:35:58 +0000
Automatic commit from picoLisp.tgz, From: Fri, 11 Jun 2010 10:35:58 GMT
Diffstat:
2 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/lib/tags b/lib/tags
@@ -1,5 +1,5 @@
-! (2858 . "@src64/flow.l")
-$ (2960 . "@src64/flow.l")
+! (2861 . "@src64/flow.l")
+$ (2963 . "@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 (3435 . "@src64/flow.l")
+bye (3438 . "@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 (3091 . "@src64/flow.l")
+call (3094 . "@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 (2921 . "@src64/flow.l")
+e (2924 . "@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 (3258 . "@src64/flow.l")
+fork (3261 . "@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 (3203 . "@src64/flow.l")
+ipid (3206 . "@src64/flow.l")
isa (978 . "@src64/flow.l")
job (1448 . "@src64/flow.l")
journal (977 . "@src64/db.l")
key (3173 . "@src64/io.l")
-kill (3235 . "@src64/flow.l")
+kill (3238 . "@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 (3219 . "@src64/flow.l")
+opid (3222 . "@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 (3062 . "@src64/flow.l")
+sys (3065 . "@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 (3171 . "@src64/flow.l")
+tick (3174 . "@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
@@ -2818,21 +2818,24 @@
end
ld (EnvBind) C # Store back link in coroutine's env
pop Y # Restore taget coroutine
- ld X (Z II) # Get segment
+ ld X (Z II) # Get 'seg'
ld (X -II) S # Save stack pointer
save (EnvCo) (EnvMid) (X (pack -II "-(EnvMid-EnvCo)")) # Save environment
null Y # Target coroutine?
- jnz resumeCoroutine # Yes
- ld S Z # Set stack pointer
- load (EnvCo) (EnvMid) (Z III) # Restore environment
- pop (EnvCo7) # Restore coroutine link
- pop (StkLimit) # 'lim'
- add S (pack I "+(EnvMid-EnvCo)") # Clean up
- pop L
- pop Z
- pop Y
- pop X
- ret
+ if z # No
+ ld S Z # Set stack pointer
+ load (EnvCo) (EnvMid) (Z III) # Restore environment
+ pop (EnvCo7) # Restore coroutine link
+ pop (StkLimit) # 'lim'
+ add S (pack I "+(EnvMid-EnvCo)") # Clean up
+ pop L
+ pop Z
+ pop Y
+ pop X
+ ret
+ end
+ ld (Z II) Y # Set new 'seg'
+ jmp resumeCoroutine # Resume
(code 'cutLocalCX 0)
do