| 270 | |
| 271 | |
| 272 | static void setnodevector (lua_State *L, Table *t, int size) { |
| 273 | int lsize; |
| 274 | if (size == 0) { /* no elements to hash part? */ |
| 275 | t->node = cast(Node *, dummynode); /* use common `dummynode' */ |
| 276 | lsize = 0; |
| 277 | } |
| 278 | else { |
| 279 | int i; |
| 280 | lsize = ceillog2(size); |
| 281 | if (lsize > MAXBITS) |
| 282 | luaG_runerror(L, "table overflow"); |
| 283 | size = twoto(lsize); |
| 284 | t->node = luaM_newvector(L, size, Node); |
| 285 | for (i=0; i<size; i++) { |
| 286 | Node *n = gnode(t, i); |
| 287 | gnext(n) = NULL; |
| 288 | setnilvalue(gkey(n)); |
| 289 | setnilvalue(gval(n)); |
| 290 | } |
| 291 | } |
| 292 | t->lsizenode = cast_byte(lsize); |
| 293 | t->lastfree = gnode(t, size); /* all positions are free */ |
| 294 | } |
| 295 | |
| 296 | |
| 297 | static void resize (lua_State *L, Table *t, int nasize, int nhsize) { |
no test coverage detected