| 459 | |
| 460 | |
| 461 | static void traversestrongtable (global_State *g, Table *h) { |
| 462 | Node *n, *limit = gnodelast(h); |
| 463 | unsigned int i; |
| 464 | unsigned int asize = luaH_realasize(h); |
| 465 | for (i = 0; i < asize; i++) /* traverse array part */ |
| 466 | markvalue(g, &h->array[i]); |
| 467 | for (n = gnode(h, 0); n < limit; n++) { /* traverse hash part */ |
| 468 | if (isempty(gval(n))) /* entry is empty? */ |
| 469 | clearkey(n); /* clear its key */ |
| 470 | else { |
| 471 | lua_assert(!keyisnil(n)); |
| 472 | markkey(g, n); |
| 473 | markvalue(g, gval(n)); |
| 474 | } |
| 475 | } |
| 476 | if (g->gckind == KGC_GEN) { |
| 477 | linkgclist(h, g->grayagain); /* keep it in some gray list */ |
| 478 | black2gray(h); |
| 479 | } |
| 480 | } |
| 481 | |
| 482 | |
| 483 | static lu_mem traversetable (global_State *g, Table *h) { |
no test coverage detected