From 50d6dd8b50958271bf1ff13f99dc21d4cd8431f7 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Thu, 13 Jan 2022 19:45:22 +0000 Subject: Implement basic reference counting for arrays, which so they get freed when not in use anymore. --- symbol.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'symbol.c') diff --git a/symbol.c b/symbol.c index 55e3f15..294d9a4 100644 --- a/symbol.c +++ b/symbol.c @@ -38,6 +38,21 @@ newsymtab(void) return tab; } +void +freesymtab(Symtab *tab) +{ + print("Freeing symtab\n"); + int i; + for(i = 0; i < tab->nsyms; i++){ + Symbol *s = tab->syms[i]; + if(s->undefined == 0 && s->value.tag == ArrayTag) + freearray(s->value.array); + } + free(tab->syms); + free(tab); + print("Done freeing symtab\n"); +} + vlong globalIO(void) { -- cgit v1.2.3