34 lines
729 B
Scheme
34 lines
729 B
Scheme
|
|
||
|
(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)
|