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)