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_