Mercurial > repos > rhope
comparison 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 |
comparison
equal
deleted
inserted
replaced
60:b2a95ab818d3 | 61:fa24ef3b026f |
---|---|
119 #define FreeCallMethod(myname,mytype)\ | 119 #define FreeCallMethod(myname,mytype)\ |
120 temp_cdata = cdata->lastframe;\ | 120 temp_cdata = cdata->lastframe;\ |
121 free_stack(ct, cdata);\ | 121 free_stack(ct, cdata);\ |
122 cdata = temp_cdata;\ | 122 cdata = temp_cdata;\ |
123 lv_ ## myname ## _AT_ ## type_name = (lt_ ## myname ## _AT_ ## type_name *)(cdata+1); | 123 lv_ ## myname ## _AT_ ## type_name = (lt_ ## myname ## _AT_ ## type_name *)(cdata+1); |
124 | 124 |
125 #define TCall(func, numparams)\ | 125 #define TPrepCall(callspace) \ |
126 free_stack(cdata->ct, call);\ | 126 func = cdata->lastframe->func;\ |
127 cdata->num_params = numparams;\ | 127 temp_cdata = cdata->lastframe->lastframe;\ |
128 cdata->resume = 0;\ | 128 free_stack(ct, cdata->lastframe);\ |
129 cdata->tail_func = f_ ## func;\ | 129 cdata = alloc_cdata(ct, temp_cdata, callspace);\ |
130 return TAIL_RETURN; | 130 cdata->func = func; |
131 | |
132 #define TCall(tocall, numparams)\ | |
133 cdata->num_params = numparams;\ | |
134 goto sf_ ## tocall; | |
131 | 135 |
132 | 136 |
133 #endif //_FUNC_H_ | 137 #endif //_FUNC_H_ |