Mercurial > repos > rhope
diff runtime/context.c @ 56:d2f9b0a9403d
Initial experiment with goto and switch
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Oct 2009 01:52:38 -0400 |
parents | 640f541e9116 |
children | 04baa003de5a |
line wrap: on
line diff
--- a/runtime/context.c Tue Oct 06 23:13:47 2009 -0400 +++ b/runtime/context.c Thu Oct 08 01:52:38 2009 -0400 @@ -18,7 +18,6 @@ context * c = malloc(sizeof(context)); c->stack_begin = new_stack(); c->current_stack = c->stack_begin; - c->unwind = NULL; return c; } @@ -51,12 +50,11 @@ return ret; } -calldata * alloc_cdata(context * ct, uint32_t num_params) +calldata * alloc_cdata(context * ct, calldata * lastframe, uint32_t num_params) { - calldata * out = alloc_stack(ct, sizeof(calldata)+(num_params-1)*sizeof(object *)); - if(out) - out->ct = ct; - return out; + calldata * retval = (calldata *)(((char *)alloc_stack(ct, sizeof(calldata)+(num_params-1)*sizeof(object *))) + sizeof(object *)*(num_params-1)); + retval->lastframe = lastframe; + return retval; } void free_stack(context * ct, void * data)