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
Working on GC.
[scheme.forth.jl.git]
/
scheme.4th
diff --git
a/scheme.4th
b/scheme.4th
index
46c2969
..
89b3160
100644
(file)
--- a/
scheme.4th
+++ b/
scheme.4th
@@
-3,20
+3,23
@@
scheme definitions
include term-colours.4th
include defer-is.4th
include term-colours.4th
include defer-is.4th
-include throw-catch.4th
include float.4th
include float.4th
+include debugging.4th
+
defer read
defer eval
defer print
defer read
defer eval
defer print
+defer collect-garbage
+
\ ------ Types ------
variable nexttype
0 nexttype !
: make-type
create nexttype @ ,
\ ------ Types ------
variable nexttype
0 nexttype !
: make-type
create nexttype @ ,
-
nexttype @ 1+ nexttype
!
+
1 nexttype +
!
does> @ ;
make-type fixnum-type
does> @ ;
make-type fixnum-type
@@
-52,6
+55,8
@@
variable nextfree
nextfree @ pair-type
1 nextfree +!
nextfree @ pair-type
1 nextfree +!
+
+ collect-garbage
;
: car ( pair-obj -- car-obj )
;
: car ( pair-obj -- car-obj )
@@
-114,6
+119,28
@@
variable nextfree
\ }}}
\ }}}
+\ ---- Garbage Collection ---- {{{
+
+variable gc-enabled
+false gc-enabled !
+
+: gc-enable
+ true gc-enabled ! ;
+
+: gc-disable
+ false gc-enabled ! ;
+
+: gc-enabled?
+ gc-enabled @ ;
+
+:noname
+ gc-enabled? if
+ .s ." GC!" cr
+ then
+; is collect-garbage
+
+\ }}}
+
\ ---- Pre-defined symbols ---- {{{
objvar symbol-table
\ ---- Pre-defined symbols ---- {{{
objvar symbol-table
@@
-341,6
+368,8
@@
global-env obj!
bl word
count
bl word
count
+ \ 2dup ." Defining primitive " type ." ..." cr
+
(create-symbol)
drop symbol-type
(create-symbol)
drop symbol-type
@@
-840,7
+869,7
@@
parse-idx-stack parse-idx-sp !
eof? if
inc-parse-idx
eof? if
inc-parse-idx
- bold fg blue ." Moriturus te saluto." reset-term
." ok"
cr
+ bold fg blue ." Moriturus te saluto." reset-term cr
quit
then
quit
then
@@
-1221,12
+1250,17
@@
parse-idx-stack parse-idx-sp !
cr ." Welcome to scheme.forth.jl!" cr
." Use Ctrl-D to exit." cr
cr ." Welcome to scheme.forth.jl!" cr
." Use Ctrl-D to exit." cr
+
empty-parse-str
empty-parse-str
+ gc-enable
+
begin
cr bold fg green ." > " reset-term
read
begin
cr bold fg green ." > " reset-term
read
+
global-env obj@ eval
global-env obj@ eval
+
fg cyan ." ; " print reset-term
again
;
fg cyan ." ; " print reset-term
again
;