Guile gc experiment.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 23 Oct 2016 10:32:40 +0000 (12:32 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 12 Dec 2016 19:33:48 +0000 (20:33 +0100)
guile/gc.scm: New file.

guile/gc.scm [new file with mode: 0644]

diff --git a/guile/gc.scm b/guile/gc.scm
new file mode 100644 (file)
index 0000000..0111699
--- /dev/null
@@ -0,0 +1,33 @@
+
+(define-module (guile gc))
+
+(define (R) (reload-module (current-module)))
+
+(define gc-size 20)
+(define the-cars (make-vector gc-size))
+(define the-cdrs (make-vector gc-size))
+(define gc-free 0)
+(define (show-gc)
+  (display "free:") (display gc-free) (newline)
+  (display "cars:") (display the-cars) (newline))
+(show-gc)
+
+(define (make-cell type . x)
+  (cons type (if (pair? x) (car x))))
+
+(define (gc-alloc)
+  ((lambda (index)
+     (set! gc-free (+ gc-free 1))
+     ;;(cons 'cell index)
+     (make-cell *unspecified* index)
+     )
+   gc-free))
+
+(define (gc-make-number x)
+  ((lambda (cell)
+     (vector-set! the-cars (cdr cell) (make-cell 'number x))
+     cell)
+   (gc-alloc)))
+
+(display (gc-make-number 3)) (newline)
+(show-gc)