comparison runtime/func.h @ 74:a844c623c7df

Add support for Worker type
author Mike Pavone <pavone@retrodev.com>
date Thu, 01 Jul 2010 21:32:08 -0400
parents c40c3d399133
children 0083b2f7b3c7
comparison
equal deleted inserted replaced
73:6a1a7d5cc2d9 74:a844c623c7df
119 119
120 #define PrepCall(callspace) cdata = alloc_cdata(ct, cdata, callspace); 120 #define PrepCall(callspace) cdata = alloc_cdata(ct, cdata, callspace);
121 121
122 #define SetParam(num,value) cdata->params[num] = value; 122 #define SetParam(num,value) cdata->params[num] = value;
123 123
124 #define VCPrepCall(func,numparams) \
125 cdata = alloc_cdata(ct, cdata, numparams + ((t_Worker *)func)->payload.Count);\
126 vcparam_offset = 0;
127
128 #define VCSetParam(func,num,value) \
129 while((num+vcparam_offset) < ((t_Worker *)func)->payload.Size && ((object **)(((t_Worker *)func)+1))[num+vcparam_offset])\
130 {\
131 cdata->params[num+vcparam_offset] = add_ref(((object **)(((t_Worker *)func)+1))[num+vcparam_offset]);\
132 ++vcparam_offset;\
133 }\
134 cdata->params[num+vcparam_offset] = value;\
135 last_vcparam = num+vcparam_offset;
136
137 #define ValCall(tocall,numparams,resumeto,myname)\
138 last_vcparam++;\
139 while(last_vcparam < ((t_Worker *)tocall)->payload.Size)\
140 {\
141 if (((object **)(((t_Worker *)tocall)+1))[last_vcparam]) \
142 cdata->params[last_vcparam] = add_ref(((object **)(((t_Worker *)tocall)+1))[last_vcparam]);\
143 ++last_vcparam;\
144 }\
145 cdata->func = RES_ ## resumeto ## _ ## myname;\
146 cdata->num_params = numparams + ((t_Worker *)tocall)->payload.Count;\
147 cdata->vars = lv_ ## myname;\
148 func = ((t_Worker *)tocall)->payload.Index;
149
150 #define ValCallPostlude(resumeto,myname)\
151 r ## resumeto ## _ ## myname:\
152 my_cdata = cdata->lastframe;\
153 lv_ ## myname = cdata->vars;
154
155
124 #define Call(tocall, numparams, resumeto, myname)\ 156 #define Call(tocall, numparams, resumeto, myname)\
125 cdata->func = RES_ ## resumeto ## _ ## myname;\ 157 cdata->func = RES_ ## resumeto ## _ ## myname;\
126 cdata->num_params = numparams;\ 158 cdata->num_params = numparams;\
127 cdata->vars = lv_ ## myname;\ 159 cdata->vars = lv_ ## myname;\
128 goto sf_ ## tocall;\ 160 goto sf_ ## tocall;\