| 7884 | |
| 7885 | |
| 7886 | static void pushclosure (LexState *ls, FuncState *func, expdesc *v) { |
| 7887 | FuncState *fs = ls->fs; |
| 7888 | Proto *f = fs->f; |
| 7889 | int oldsize = f->sizep; |
| 7890 | int i; |
| 7891 | luaM_growvector(ls->L, f->p, fs->np, f->sizep, Proto *, |
| 7892 | MAXARG_Bx, "constant table overflow"); |
| 7893 | while (oldsize < f->sizep) f->p[oldsize++] = NULL; |
| 7894 | f->p[fs->np++] = func->f; |
| 7895 | luaC_objbarrier(ls->L, f, func->f); |
| 7896 | init_exp(v, VRELOCABLE, luaK_codeABx(fs, OP_CLOSURE, 0, fs->np-1)); |
| 7897 | for (i=0; i<func->f->nups; i++) { |
| 7898 | OpCode o = (func->upvalues[i].k == VLOCAL) ? OP_MOVE : OP_GETUPVAL; |
| 7899 | luaK_codeABC(fs, o, 0, func->upvalues[i].info, 0); |
| 7900 | } |
| 7901 | } |
| 7902 | |
| 7903 | |
| 7904 | static void open_func (LexState *ls, FuncState *fs) { |
no test coverage detected