| 6636 | |
| 6637 | |
| 6638 | void luaC_fullgc (lua_State *L) { |
| 6639 | global_State *g = G(L); |
| 6640 | if (g->gcstate <= GCSpropagate) { |
| 6641 | /* reset sweep marks to sweep all elements (returning them to white) */ |
| 6642 | g->sweepstrgc = 0; |
| 6643 | g->sweepgc = &g->rootgc; |
| 6644 | /* reset other collector lists */ |
| 6645 | g->gray = NULL; |
| 6646 | g->grayagain = NULL; |
| 6647 | g->weak = NULL; |
| 6648 | g->gcstate = GCSsweepstring; |
| 6649 | } |
| 6650 | lua_assert(g->gcstate != GCSpause && g->gcstate != GCSpropagate); |
| 6651 | /* finish any pending sweep phase */ |
| 6652 | while (g->gcstate != GCSfinalize) { |
| 6653 | lua_assert(g->gcstate == GCSsweepstring || g->gcstate == GCSsweep); |
| 6654 | singlestep(L); |
| 6655 | } |
| 6656 | markroot(L); |
| 6657 | while (g->gcstate != GCSpause) { |
| 6658 | singlestep(L); |
| 6659 | } |
| 6660 | setthreshold(g); |
| 6661 | } |
| 6662 | |
| 6663 | |
| 6664 | void luaC_barrierf (lua_State *L, GCObject *o, GCObject *v) { |
no test coverage detected