Guile gc experiment.
[mes.git] / guile / gc.scm
1
2 (define-module (guile gc))
3
4 (define (R) (reload-module (current-module)))
5
6 (define gc-size 20)
7 (define the-cars (make-vector gc-size))
8 (define the-cdrs (make-vector gc-size))
9 (define gc-free 0)
10 (define (show-gc)
11   (display "free:") (display gc-free) (newline)
12   (display "cars:") (display the-cars) (newline))
13 (show-gc)
14
15 (define (make-cell type . x)
16   (cons type (if (pair? x) (car x))))
17
18 (define (gc-alloc)
19   ((lambda (index)
20      (set! gc-free (+ gc-free 1))
21      ;;(cons 'cell index)
22      (make-cell *unspecified* index)
23      )
24    gc-free))
25
26 (define (gc-make-number x)
27   ((lambda (cell)
28      (vector-set! the-cars (cdr cell) (make-cell 'number x))
29      cell)
30    (gc-alloc)))
31
32 (display (gc-make-number 3)) (newline)
33 (show-gc)