From dc8a1d73ec5d7f9a77923f69fbef790d59ec8ed3 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 19 Oct 2021 17:42:11 +0200 Subject: Change gc.objects to use darray.h --- src/bootstrap/gc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/bootstrap/gc.c') diff --git a/src/bootstrap/gc.c b/src/bootstrap/gc.c index e091207..a72f718 100644 --- a/src/bootstrap/gc.c +++ b/src/bootstrap/gc.c @@ -39,8 +39,6 @@ pop_active_env(void) { void init_gc(void) { gc = (GC){ - .objects = malloc(GC_OBJS_CAP * sizeof(Object)), - .obj_cap = GC_OBJS_CAP, .free_objects = (FreeList){ .buf = malloc(GC_OBJS_CAP * sizeof(size_t)), .size = GC_OBJS_CAP, @@ -51,10 +49,12 @@ init_gc(void) { .size = GC_ENVS_CAP, .cap = GC_ENVS_CAP, }, + .objects = NULL, .envs = NULL, .roots = NULL, .active_envs = NULL, }; + array_init(gc.objects, GC_OBJS_CAP); array_init(gc.roots, GC_ROOTS_CAP); array_init(gc.active_envs, GC_ACTIVE_ENVS_CAP); array_init(gc.envs, GC_ENVS_CAP); @@ -116,7 +116,7 @@ mark_and_sweep(void) { gc.free_envs.size = 0; // Sweep. - for (size_t i = 0; i < gc.obj_cap; i++) { + for (size_t i = 0; i < array_cap(gc.objects); i++) { Object *obj = &gc.objects[i]; if (!obj->marked) { // Free heap allocated memory for this object if needed. @@ -165,7 +165,7 @@ dump_gc(void) { Object *obj = &gc.objects[i]; display(obj); bool is_free = false; - for (size_t j = 0; j < gc.obj_cap; j++) { + for (size_t j = 0; j < array_cap(gc.objects); j++) { if (gc.free_objects.buf[j] == i) { is_free = true; break; @@ -181,7 +181,7 @@ dump_gc(void) { printf("gc.roots.cap: %ld\n", array_size(gc.roots)); printf("gc.active_envs.size: %ld\n", array_size(gc.active_envs)); printf("gc.active_envs.cap: %ld\n", array_cap(gc.active_envs)); - printf("gc.obj_cap: %ld\n", gc.obj_cap); + printf("gc.obj_cap: %ld\n", array_cap(gc.objects)); printf("gc.free_objects.size: %ld\n", gc.free_objects.size); printf("gc.free_objects.cap: %ld\n", gc.free_objects.cap); printf("gc.free_objects.position: %ld\n", gc.free_objects.position); -- cgit v1.2.1