Mercurial > repos > rhope
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 { |