comparison runtime/context.c @ 66:d4b44ae2e34a

New variant of C backend works now
author Mike Pavone <pavone@retrodev.com>
date Sun, 06 Jun 2010 20:29:10 -0400
parents 04baa003de5a
children d1569087348f
comparison
equal deleted inserted replaced
65:1db811fa4744 66:d4b44ae2e34a
62 return ret; 62 return ret;
63 } 63 }
64 64
65 calldata * alloc_cdata(context * ct, calldata * lastframe, uint32_t num_params) 65 calldata * alloc_cdata(context * ct, calldata * lastframe, uint32_t num_params)
66 { 66 {
67 calldata * retval = (calldata *)(((char *)alloc_stack(ct, sizeof(calldata)+(num_params-1)*sizeof(object *))) + sizeof(object *)*(num_params-1)); 67 //Make sure we have enough space for at least 32 return values
68 calldata * retval = alloc_stack(ct, sizeof(calldata)+(31)*sizeof(object *));
69 //But only actually reserve space for the number requested
70 free_stack(ct, retval->params + num_params);
68 retval->lastframe = lastframe; 71 retval->lastframe = lastframe;
72 retval->callspace = num_params;
69 return retval; 73 return retval;
70 } 74 }
71 75
72 void free_stack(context * ct, void * data) 76 void free_stack(context * ct, void * data)
73 { 77 {