comparison runtime/func.h @ 35:3498713c3dc9

C backend portion of supporting user defined types is done, but untested. Parser/NWorker still need a fair bit of work
author Mike Pavone <pavone@retrodev.com>
date Wed, 30 Sep 2009 23:55:04 -0400
parents 31f8182f3433
children a24eb366195c d2f9b0a9403d
comparison
equal deleted inserted replaced
34:df038cef648b 35:3498713c3dc9
151 release_ref(cdata->params[idx]);\ 151 release_ref(cdata->params[idx]);\
152 cdata->params[0] = call->params[0];\ 152 cdata->params[0] = call->params[0];\
153 free_stack(cdata->ct, call);\ 153 free_stack(cdata->ct, call);\
154 return ret;\ 154 return ret;\
155 } 155 }
156
157 #define GFieldCall(fieldid)\
158 call->num_params = 1;\
159 call->resume = 0;\
160 ret = get_field(fieldid, call);\
161 while(ret == TAIL_RETURN)\
162 ret = call->tail_func(call);\
163 if(ret == EXCEPTION_RETURN)\
164 {\
165 for(idx = 0; idx < cdata->num_params; ++idx)\
166 if(cdata->params[idx])\
167 release_ref(cdata->params[idx]);\
168 cdata->params[0] = call->params[0];\
169 free_stack(cdata->ct, call);\
170 return ret;\
171 }
172
173 #define SFieldCall(fieldid)\
174 call->num_params = 2;\
175 call->resume = 0;\
176 ret = set_field(fieldid, call);\
177 while(ret == TAIL_RETURN)\
178 ret = call->tail_func(call);\
179 if(ret == EXCEPTION_RETURN)\
180 {\
181 for(idx = 0; idx < cdata->num_params; ++idx)\
182 if(cdata->params[idx])\
183 release_ref(cdata->params[idx]);\
184 cdata->params[0] = call->params[0];\
185 free_stack(cdata->ct, call);\
186 return ret;\
187 }
156 188
157 #define TMCall(methodid, numparams)\ 189 #define TMCall(methodid, numparams)\
158 free_stack(cdata->ct, call);\ 190 free_stack(cdata->ct, call);\
159 cdata->num_params = numparams;\ 191 cdata->num_params = numparams;\
160 cdata->resume = 0;\ 192 cdata->resume = 0;\