** retraverse all gray lists. Because tables may be reinserted in other ** lists when traversed, traverse the original lists to avoid traversing ** twice the same table (which is not wrong, but inefficient) */
| 580 | ** twice the same table (which is not wrong, but inefficient) |
| 581 | */ |
| 582 | static void retraversegrays (global_State *g) { |
| 583 | GCObject *weak = g->weak; /* save original lists */ |
| 584 | GCObject *grayagain = g->grayagain; |
| 585 | GCObject *ephemeron = g->ephemeron; |
| 586 | g->weak = g->grayagain = g->ephemeron = NULL; |
| 587 | propagateall(g); /* traverse main gray list */ |
| 588 | propagatelist(g, grayagain); |
| 589 | propagatelist(g, weak); |
| 590 | propagatelist(g, ephemeron); |
| 591 | } |
| 592 | |
| 593 | |
| 594 | static void convergeephemerons (global_State *g) { |
no test coverage detected