From e0304c749a0bc2e3ec00ed80f84680676519fa42 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 15 Oct 2021 18:29:57 +0200 Subject: Remove free_objects function --- src/bootstrap/objects.c | 56 +++++++------------------------------------------ src/bootstrap/parser.c | 3 --- 2 files changed, 8 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/bootstrap/objects.c b/src/bootstrap/objects.c index b03a616..cf881a0 100644 --- a/src/bootstrap/objects.c +++ b/src/bootstrap/objects.c @@ -141,59 +141,19 @@ obj_duplicate(Object *obj) { 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; - } + // 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 -free_objects(Object *root) { - switch (root->type) { - case OBJ_TYPE_BOOL: break; - case OBJ_TYPE_NIL: break; - case OBJ_TYPE_ERR: break; - case OBJ_TYPE_PROCEDURE: - case OBJ_TYPE_FIXNUM: { - free(root); - } break; - case OBJ_TYPE_SYMBOL: { - if (root->symbol != NULL) { - free(root->symbol); - } - free(root); - } break; - case OBJ_TYPE_STRING: { - if (root->string != NULL) { - free(root->string); - } - free(root); - } break; - case OBJ_TYPE_PAIR: { - if (root->car != NULL) { - free_objects(root->car); - } - if (root->cdr != NULL) { - free_objects(root->cdr); - } - free(root); - } break; - case OBJ_TYPE_LAMBDA: { - free_objects(root->params); - free_objects(root->body); - // TODO: free_env(root->env); - free(root); - } break; - } -} - void display(Object *root); void diff --git a/src/bootstrap/parser.c b/src/bootstrap/parser.c index f047b8e..869678e 100644 --- a/src/bootstrap/parser.c +++ b/src/bootstrap/parser.c @@ -54,12 +54,10 @@ parse_list(Visitor *vs) { break; } if (tok.type == TOKEN_EOF) { - free_objects(root); return obj_err; } next_obj = parse_tree(vs); if (next_obj == obj_err) { - free_objects(root); return obj_err; } list->cdr = make_pair(next_obj, obj_nil); @@ -94,7 +92,6 @@ parse_tree(Visitor *vs) { Object *quote_sym = make_symbol((StringView){"quote", 5}); Object *next_obj = parse_tree(vs); if (next_obj == obj_err) { - free_objects(quote_sym); return obj_err; } return make_pair(quote_sym, make_pair(next_obj, obj_nil)); -- cgit v1.2.1