Mercurial > repos > rhope
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;\ |