@@ -50,36 +50,35 @@ void* allocate(VM* vm, size_t size) {
5050}
5151
5252void* allocCon(VM* vm, int arity) {
53− Closure* cl = allocate(vm, sizeof(ClosureType) +
54− sizeof(con) + sizeof(VAL)*arity);
53+ Closure* cl = allocate(vm, sizeof(Closure) + sizeof(VAL)*arity);
5554 cl -> ty = CON;
5655 if (arity == 0) {
5756 cl -> info.c.args = NULL;
5857 } else {
59− cl -> info.c.args = (void*)((char*)cl + sizeof(ClosureType)
60− + sizeof(con));
58+ cl -> info.c.args = (void*)((char*)cl + sizeof(Closure));
6159 }
6260 return (void*)cl;
6361}
6462
6563VAL MKFLOAT(VM* vm, double val) {
66− Closure* cl = allocate(vm, sizeof(ClosureType) + sizeof(double));
64+ Closure* cl = allocate(vm, sizeof(Closure));
6765 cl -> ty = FLOAT;
6866 cl -> info.f = val;
6967 return cl;
7068}
7169
7270VAL MKSTR(VM* vm, char* str) {
73− Closure* cl = allocate(vm, sizeof(ClosureType) + sizeof(char*) +
71+ Closure* cl = allocate(vm, sizeof(Closure) + // Type) + sizeof(char*) +
7472 sizeof(char)*strlen(str)+1);
7573 cl -> ty = STRING;
76− cl -> info.str = (char*)cl + sizeof(ClosureType) + sizeof(char*);
74+ cl -> info.str = (char*)cl + sizeof(Closure);
75+
7776 strcpy(cl -> info.str, str);
7877 return cl;
7978}
8079
8180VAL MKPTR(VM* vm, void* ptr) {
82− Closure* cl = allocate(vm, sizeof(ClosureType) + sizeof(void*));
81+ Closure* cl = allocate(vm, sizeof(Closure));
8382 cl -> ty = PTR;
8483 cl -> info.ptr = ptr;
8584 return cl;
@@ -138,9 +137,9 @@ void dumpVal(VAL v) {
138137}
139138
140139VAL idris_castIntStr(VM* vm, VAL i) {
141− Closure* cl = allocate(vm, sizeof(ClosureType) + sizeof(char*) + sizeof(char)*16);
140+ Closure* cl = allocate(vm, sizeof(Closure) + sizeof(char)*16);
142141 cl -> ty = STRING;
143− cl -> info.str = (char*)cl + sizeof(ClosureType) + sizeof(char*);
142+ cl -> info.str = (char*)cl + sizeof(Closure);
144143 sprintf(cl -> info.str, "%ld", GETINT(i));
145144 return cl;
146145}
@@ -152,9 +151,9 @@ VAL idris_castStrInt(VM* vm, VAL i) {
152151}
153152
154153VAL idris_castFloatStr(VM* vm, VAL i) {
155− Closure* cl = allocate(vm, sizeof(ClosureType) + sizeof(char*) + sizeof(char)*32);
154+ Closure* cl = allocate(vm, sizeof(Closure) + sizeof(char)*32);
156155 cl -> ty = STRING;
157− cl -> info.str = (char*)cl + sizeof(ClosureType) + sizeof(char*);
156+ cl -> info.str = (char*)cl + sizeof(Closure);
158157 sprintf(cl -> info.str, "%g", GETFLOAT(i));
159158 return cl;
160159}
@@ -166,10 +165,9 @@ VAL idris_castStrFloat(VM* vm, VAL i) {
166165VAL idris_concat(VM* vm, VAL l, VAL r) {
167166 char *ls = GETSTR(l);
168167 char *rs = GETSTR(r);
169− Closure* cl = allocate(vm, sizeof(ClosureType) + sizeof(char*) +
170− strlen(ls) + strlen(rs) + 1);
168+ Closure* cl = allocate(vm, sizeof(Closure) + strlen(ls) + strlen(rs) + 1);
171169 cl -> ty = STRING;
172− cl -> info.str = (char*)cl + sizeof(ClosureType) + sizeof(char*);
170+ cl -> info.str = (char*)cl + sizeof(Closure);
173171 strcpy(cl -> info.str, ls);
174172 strcat(cl -> info.str, rs);
175173 return cl;