The Lambda Lab
/
projects
/
scheme.forth.jl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PS restore from continuation working.
[scheme.forth.jl.git]
/
src
/
scheme.4th
diff --git
a/src/scheme.4th
b/src/scheme.4th
index
93d2496
..
2edd16d
100644
(file)
--- a/
src/scheme.4th
+++ b/
src/scheme.4th
@@
-530,6
+530,8
@@
global-env obj!
nil rsp@ 1- rsp0 do
i 1+ @ fixnum-type 2swap cons
loop
nil rsp@ 1- rsp0 do
i 1+ @ fixnum-type 2swap cons
loop
+
+ rsp@ 1- rsp0 - fixnum-type 2swap cons
;
: cons-param-stack ( -- listobj )
;
: cons-param-stack ( -- listobj )
@@
-545,6
+547,8
@@
global-env obj!
2swap cons
2 +loop
2swap cons
2 +loop
+
+ depth 2- fixnum-type 2swap cons
;
: make-continuation
;
: make-continuation
@@
-562,11
+566,28
@@
global-env obj!
: restore-param-stack ( continuation -- obj_stack continuation )
: restore-param-stack ( continuation -- obj_stack continuation )
- 2dup >R >R
continuation->pstack-list
continuation->pstack-list
+ 2dup >R >R
- (
Idea: a
llocate stack space first using psp!,
+ (
A
llocate stack space first using psp!,
then copy objects from list. )
then copy objects from list. )
+
+ car drop
+ object-stack-base @ psp0 + + psp!
+
+ R> R> 2dup cdr
+ 2swap
+ car drop 2- 0 swap do
+
+ 2dup car
+ PSP0 object-stack-base @ + i + 2 + !
+ PSP0 object-stack-base @ + i + 1 + !
+ cdr
+
+ -2 +loop
+
+ 2drop
+
;
: restore-continuation
;
: restore-continuation
@@
-2104,6
+2125,8
@@
parse-idx-stack parse-idx-sp !
\ }}}
\ }}}
+xxxx
+
\ ---- Loading files ---- {{{
: load ( addr n -- finalResult )
\ ---- Loading files ---- {{{
: load ( addr n -- finalResult )