Mercurial > repos > rhope
diff runtime/func.h @ 61:fa24ef3b026f
Added macro for tail calls with new C strategy
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Oct 2009 23:16:26 -0400 |
parents | 4f1ae6eb71d8 |
children | 04baa003de5a |
line wrap: on
line diff
--- a/runtime/func.h Thu Oct 08 22:54:39 2009 -0400 +++ b/runtime/func.h Thu Oct 08 23:16:26 2009 -0400 @@ -121,13 +121,17 @@ free_stack(ct, cdata);\ cdata = temp_cdata;\ lv_ ## myname ## _AT_ ## type_name = (lt_ ## myname ## _AT_ ## type_name *)(cdata+1); - -#define TCall(func, numparams)\ - free_stack(cdata->ct, call);\ - cdata->num_params = numparams;\ - cdata->resume = 0;\ - cdata->tail_func = f_ ## func;\ - return TAIL_RETURN; + +#define TPrepCall(callspace) \ + func = cdata->lastframe->func;\ + temp_cdata = cdata->lastframe->lastframe;\ + free_stack(ct, cdata->lastframe);\ + cdata = alloc_cdata(ct, temp_cdata, callspace);\ + cdata->func = func; + +#define TCall(tocall, numparams)\ + cdata->num_params = numparams;\ + goto sf_ ## tocall; #endif //_FUNC_H_ \ No newline at end of file