diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-13 19:45:22 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-13 19:45:22 +0000 |
commit | 50d6dd8b50958271bf1ff13f99dc21d4cd8431f7 (patch) | |
tree | 504f2a16f29fefedc7ff0a326475f122d018590a /symbol.c | |
parent | b1b55e907a5aaf177344769d2b303351ba936bff (diff) |
Implement basic reference counting for arrays, which so they
get freed when not in use anymore.
Diffstat (limited to 'symbol.c')
-rw-r--r-- | symbol.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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) { |