aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/objects.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bootstrap/objects.c')
-rw-r--r--src/bootstrap/objects.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/bootstrap/objects.c b/src/bootstrap/objects.c
index cf881a0..2bd5b1a 100644
--- a/src/bootstrap/objects.c
+++ b/src/bootstrap/objects.c
@@ -14,6 +14,7 @@ struct Environment;
14 14
15typedef struct Object { 15typedef struct Object {
16 ObjectType type; 16 ObjectType type;
17 bool marked;
17 union { 18 union {
18 // OBJ_TYPE_FIXNUM 19 // OBJ_TYPE_FIXNUM
19 ssize_t fixnum; 20 ssize_t fixnum;
@@ -56,17 +57,13 @@ static Object *obj_nil;
56static Object *obj_true; 57static Object *obj_true;
57static Object *obj_false; 58static Object *obj_false;
58static Object *obj_err; 59static Object *obj_err;
60static Object *obj_quote;
59 61
60// 62//
61// Constructors. 63// Constructors.
62// 64//
63 65
64Object * 66Object * alloc_object(ObjectType);
65alloc_object(ObjectType type) {
66 Object *obj = malloc(sizeof(Object));
67 obj->type = type;
68 return obj;
69}
70 67
71Object * 68Object *
72make_fixnum(ssize_t num) { 69make_fixnum(ssize_t num) {
@@ -141,14 +138,14 @@ obj_duplicate(Object *obj) {
141 append_string(copy, (StringView){obj->string, obj->string_n}); 138 append_string(copy, (StringView){obj->string, obj->string_n});
142 } break; 139 } break;
143 case OBJ_TYPE_PAIR: { 140 case OBJ_TYPE_PAIR: {
144 // Object *root = make_pair(obj_duplicate(obj->car), obj_nil); 141 Object *root = make_pair(obj_duplicate(obj->car), obj_nil);
145 // copy = root; 142 copy = root;
146 // obj = obj->cdr; 143 obj = obj->cdr;
147 // while (obj != obj_nil) { 144 while (obj != obj_nil) {
148 // root->cdr = make_pair(obj_duplicate(obj->car), obj_nil); 145 root->cdr = make_pair(obj_duplicate(obj->car), obj_nil);
149 // root = root->cdr; 146 root = root->cdr;
150 // obj = obj->cdr; 147 obj = obj->cdr;
151 // } 148 }
152 } break; 149 } break;
153 } 150 }
154 return copy; 151 return copy;