diff options
| author | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2026-01-24 23:53:16 +0100 |
|---|---|---|
| committer | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2026-01-24 23:53:16 +0100 |
| commit | 15b883e68f620592cafada6ef7f6c698a2c216c2 (patch) | |
| tree | e059f68846a53717a2e2d1fd4b9ecfd73b182063 /lisp.h | |
| parent | dc1fc66181cba96cc94f21f055676b952489dbd9 (diff) | |
garbage collection
Diffstat (limited to 'lisp.h')
| -rw-r--r-- | lisp.h | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -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 |
