| 222 | |
| 223 | |
| 224 | static void traverseclosure (global_State *g, Closure *cl) { |
| 225 | markobject(g, cl->c.env); |
| 226 | if (cl->c.isC) { |
| 227 | int i; |
| 228 | for (i=0; i<cl->c.nupvalues; i++) /* mark its upvalues */ |
| 229 | markvalue(g, &cl->c.upvalue[i]); |
| 230 | } |
| 231 | else { |
| 232 | int i; |
| 233 | lua_assert(cl->l.nupvalues == cl->l.p->nups); |
| 234 | markobject(g, cl->l.p); |
| 235 | for (i=0; i<cl->l.nupvalues; i++) /* mark its upvalues */ |
| 236 | markobject(g, cl->l.upvals[i]); |
| 237 | } |
| 238 | } |
| 239 | |
| 240 | |
| 241 | static void checkstacksizes (lua_State *L, StkId max) { |