From bb58afb57221eb0316d6ee14e19c5f4c4a822ba1 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Sat, 16 Oct 2021 21:22:08 +0200 Subject: Add a working GC with mark-and-sweep --- src/bootstrap/objects.c | 35 ----------------------------------- 1 file changed, 35 deletions(-) (limited to 'src/bootstrap/objects.c') diff --git a/src/bootstrap/objects.c b/src/bootstrap/objects.c index 2bd5b1a..09076db 100644 --- a/src/bootstrap/objects.c +++ b/src/bootstrap/objects.c @@ -116,41 +116,6 @@ append_string(Object *obj, const StringView sv) { obj->string_n += sv.n; } -Object * -obj_duplicate(Object *obj) { - Object *copy = obj_err; - switch (obj->type) { - case OBJ_TYPE_BOOL: - case OBJ_TYPE_NIL: - case OBJ_TYPE_PROCEDURE: - case OBJ_TYPE_LAMBDA: // TODO: should we duplicate everything inside? - case OBJ_TYPE_ERR: { - copy = obj; - } break; - case OBJ_TYPE_FIXNUM: { - copy = make_fixnum(obj->fixnum); - } break; - case OBJ_TYPE_SYMBOL: { - copy = make_symbol((StringView){obj->symbol, obj->symbol_n}); - } break; - case OBJ_TYPE_STRING: { - copy = make_string(); - append_string(copy, (StringView){obj->string, obj->string_n}); - } break; - case OBJ_TYPE_PAIR: { - Object *root = make_pair(obj_duplicate(obj->car), obj_nil); - copy = root; - obj = obj->cdr; - while (obj != obj_nil) { - root->cdr = make_pair(obj_duplicate(obj->car), obj_nil); - root = root->cdr; - obj = obj->cdr; - } - } break; - } - return copy; -} - void display(Object *root); void -- cgit v1.2.1