aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/gc.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-19 18:30:39 +0200
committerBad Diode <bd@badd10de.dev>2021-10-19 18:30:39 +0200
commit6ea02e2f75422d67548836670082daa8e8129102 (patch)
treea83fabfdd92bdbea209b5280b266e9eaa648afff /src/bootstrap/gc.c
parent008f173f9b9e52ae41683939614239059c0d3b04 (diff)
downloadbdl-6ea02e2f75422d67548836670082daa8e8129102.tar.gz
bdl-6ea02e2f75422d67548836670082daa8e8129102.zip
Change environments to use darray.h
Diffstat (limited to 'src/bootstrap/gc.c')
-rw-r--r--src/bootstrap/gc.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/bootstrap/gc.c b/src/bootstrap/gc.c
index 48499ac..d281536 100644
--- a/src/bootstrap/gc.c
+++ b/src/bootstrap/gc.c
@@ -75,8 +75,8 @@ mark_environment(Environment *env) {
75 return; 75 return;
76 } 76 }
77 env->marked = true; 77 env->marked = true;
78 for (size_t i = 0; i < env->size; i++) { 78 for (size_t i = 0; i < array_size(env->entries); i++) {
79 EnvEntry *entry = &env->buf[i]; 79 EnvEntry *entry = &env->entries[i];
80 mark_obj(entry->symbol); 80 mark_obj(entry->symbol);
81 mark_obj(entry->value); 81 mark_obj(entry->value);
82 } 82 }
@@ -132,12 +132,7 @@ mark_and_sweep(void) {
132 for (size_t i = 0; i < array_cap(gc.envs); i++) { 132 for (size_t i = 0; i < array_cap(gc.envs); i++) {
133 Environment *env = &gc.envs[i]; 133 Environment *env = &gc.envs[i];
134 if (!env->marked) { 134 if (!env->marked) {
135 if (env->buf != NULL) { 135 array_free(env->entries);
136 free(env->buf);
137 env->buf = NULL;
138 env->size = 0;
139 env->cap = 0;
140 }
141 gc.free_envs.buf[gc.free_envs.size++] = i; 136 gc.free_envs.buf[gc.free_envs.size++] = i;
142 } 137 }
143 env->marked = false; 138 env->marked = false;