@@ -111,11 +111,7 @@ void* allocCon(VM* vm, int arity, int outer) {
111111 Closure* cl = allocate(vm, sizeof(Closure) + sizeof(VAL)*arity,
112112 outer);
113113 SETTY(cl, CON);
114− if (arity == 0) {
115− cl -> info.c.args = NULL;
116− } else {
117− cl -> info.c.args = (void*)((char*)cl + sizeof(Closure));
118− }
114+
119115 cl -> info.c.arity = arity;
120116// cl -> info.c.tag = 42424242;
121117// printf("%p\n", cl);
@@ -179,13 +175,11 @@ VAL MKCON(VM* vm, VAL cl, int tag, int arity, ...) {
179175// Closure* cl = allocCon(vm, arity);
180176 cl -> info.c.tag = tag;
181177 cl -> info.c.arity = arity;
182− VAL* argptr = (VAL*)(cl -> info.c.args);
183178 // printf("... %p %p\n", cl, argptr);
184179
185180 for (i = 0; i < arity; ++i) {
186− VAL v = va_arg(args, VAL);
187− *argptr = v;
188− argptr++;
181+ VAL v = va_arg(args, VAL);
182+ cl->info.c.args[i] = v;
189183 }
190184 va_end(args);
191185 return cl;
@@ -193,10 +187,8 @@ VAL MKCON(VM* vm, VAL cl, int tag, int arity, ...) {
193187
194188void PROJECT(VM* vm, VAL r, int loc, int arity) {
195189 int i;
196− VAL* argptr = (VAL*)(r -> info.c.args);
197−
198190 for(i = 0; i < arity; ++i) {
199− LOC(i+loc) = *argptr++;
191+ LOC(i+loc) = r->info.c.args[i];
200192 }
201193}
202194
@@ -233,8 +225,7 @@ void dumpVal(VAL v) {
233225 case CON:
234226 printf("%d[", v->info.c.tag);
235227 for(i = 0; i < v->info.c.arity; ++i) {
236− VAL* args = (VAL*)v->info.c.args;
237− dumpVal(args[i]);
228+ dumpVal(v->info.c.args[i]);
238229 }
239230 printf("] ");
240231 break;