| 828 | |
| 829 | |
| 830 | static void close_func (LexState *ls) { |
| 831 | lua_State *L = ls->L; |
| 832 | FuncState *fs = ls->fs; |
| 833 | Proto *f = fs->f; |
| 834 | luaK_ret(fs, luaY_nvarstack(fs), 0); /* final return */ |
| 835 | leaveblock(fs); |
| 836 | lua_assert(fs->bl == NULL); |
| 837 | luaK_finish(fs); |
| 838 | luaM_shrinkvector(L, f->code, f->sizecode, fs->pc, Instruction); |
| 839 | luaM_shrinkvector(L, f->lineinfo, f->sizelineinfo, fs->pc, ls_byte); |
| 840 | luaM_shrinkvector(L, f->abslineinfo, f->sizeabslineinfo, |
| 841 | fs->nabslineinfo, AbsLineInfo); |
| 842 | luaM_shrinkvector(L, f->k, f->sizek, fs->nk, TValue); |
| 843 | luaM_shrinkvector(L, f->p, f->sizep, fs->np, Proto *); |
| 844 | luaM_shrinkvector(L, f->locvars, f->sizelocvars, fs->ndebugvars, LocVar); |
| 845 | luaM_shrinkvector(L, f->upvalues, f->sizeupvalues, fs->nups, Upvaldesc); |
| 846 | ls->fs = fs->prev; |
| 847 | L->top.p--; /* pop kcache table */ |
| 848 | luaC_checkGC(L); |
| 849 | } |
| 850 | |
| 851 | |
| 852 | /* |
no test coverage detected