#lang plai/gc2/collector (print-only-errors) ;; invariant: address 0 holds the allocation pointer (define (init-allocator) ...) ;; gc:alloc-flat : flat-value -> address (define (gc:alloc-flat value) ...) ;; gc:flat? : address -> boolean (define (gc:flat? address) ...) ;; gc:deref : address -> flat-value (define (gc:deref address) ...) ;; gc:cons : root root -> address (define (gc:cons root1 root2) ...) ;; gc:cons? : address -> boolean (define (gc:cons? address) ...) ;; gc:first : address -> address (define (gc:first address) ...) ;; gc:rest : address -> address (define (gc:rest address) ...) ;; gc:set-first! : address address -> void (define (gc:set-first! address new-value-address) ...) ;; gc:set-rest! : address address -> void (define (gc:set-rest! address new-value-address) ...) ;; gc:closure : opaque-value (listof root) -> address (define (gc:closure code-ptr free-vars) ...) ;; gc:closure? : address -> boolean (define (gc:closure? address) ...) ;; gc:closure-code-ptr : address -> opaque-value (define (gc:closure-code-ptr address) ...) ;; gc:closure-env-ref : address integer -> address (define (gc:closure-env-ref address i) ...)