From 15b883e68f620592cafada6ef7f6c698a2c216c2 Mon Sep 17 00:00:00 2001 From: Felix Perktold Date: Sat, 24 Jan 2026 23:53:16 +0100 Subject: garbage collection --- lisp.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'lisp.h') diff --git a/lisp.h b/lisp.h index c857b02..631cee4 100644 --- a/lisp.h +++ b/lisp.h @@ -8,10 +8,11 @@ typedef struct reg reg; // environments, TODO: make this use hashtable // symbol->val typedef struct env { - const char *symbol; + char *symbol; value *value; env *next; env *parent; + int marked; } env; env *env_create(env *parent); @@ -31,10 +32,14 @@ typedef struct reg { } reg; reg *reg_add(value *val); -void free_value(reg *r); extern reg *global_reg; -int mark_env(env *e); -int mark_val(value *v); +void mark_env(env *e); +void mark_val(value *v); int sweep(); +void free_env(env *e); +void free_value(value *v); +void reset_env_marks(env *e); +void reset_marks(); +void print_register(); #endif -- cgit v1.2.3