| 3896 | |
| 3897 | |
| 3898 | static int addk (FuncState *fs, TValue *k, TValue *v) { |
| 3899 | lua_State *L = fs->L; |
| 3900 | TValue *idx = luaH_set(L, fs->h, k); |
| 3901 | Proto *f = fs->f; |
| 3902 | int oldsize = f->sizek; |
| 3903 | if (ttisnumber(idx)) { |
| 3904 | lua_assert(luaO_rawequalObj(&fs->f->k[cast_int(nvalue(idx))], v)); |
| 3905 | return cast_int(nvalue(idx)); |
| 3906 | } |
| 3907 | else { /* constant not found; create a new entry */ |
| 3908 | setnvalue(idx, cast_num(fs->nk)); |
| 3909 | luaM_growvector(L, f->k, fs->nk, f->sizek, TValue, |
| 3910 | MAXARG_Bx, "constant table overflow"); |
| 3911 | while (oldsize < f->sizek) setnilvalue(&f->k[oldsize++]); |
| 3912 | setobj(L, &f->k[fs->nk], v); |
| 3913 | luaC_barrier(L, f, v); |
| 3914 | return fs->nk++; |
| 3915 | } |
| 3916 | } |
| 3917 | |
| 3918 | |
| 3919 | int luaK_stringK (FuncState *fs, TString *s) { |
no test coverage detected