Mercurial > repos > tabletprog
comparison runtime/progfoot.inc @ 45:2a9c6eed0c70
Move closure/lambda object def into compiler rather than runtime code. Add while:do method to lambda
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 13 Jul 2012 00:23:38 -0700 |
parents | 9dd370530f69 |
children | 7b454d100dc8 |
comparison
equal
deleted
inserted
replaced
44:9dd370530f69 | 45:2a9c6eed0c70 |
---|---|
16 arr->data[i] = va_arg(els, object *); | 16 arr->data[i] = va_arg(els, object *); |
17 va_end(els); | 17 va_end(els); |
18 return &(arr->header); | 18 return &(arr->header); |
19 } | 19 } |
20 | 20 |
21 object * make_lambda(void * env, closure_func func) | |
22 { | |
23 lambda * ret = malloc(sizeof(lambda)); | |
24 ret->header.meta = &lambda_meta; | |
25 ret->header.parent = NULL; | |
26 ret->env = env; | |
27 ret->func = func; | |
28 return (object *) ret; | |
29 } | |
30 | |
21 int main(int argc, char ** argv) | 31 int main(int argc, char ** argv) |
22 { | 32 { |
23 object * ret = mcall(METHOD_ID_MAIN, 1, mainModule()); | 33 object * ret = mcall(METHOD_ID_MAIN, 1, mainModule()); |
24 if (ret->meta == &obj_int32_meta) { | 34 if (ret->meta == &obj_int32_meta) { |
25 obj_int32 * reti32 = (obj_int32 *) ret; | 35 obj_int32 * reti32 = (obj_int32 *) ret; |