Lua5.3 GC源码阅读(5)
这篇内容并不是上篇提到的关于弱表实现的分析。而是最近有位同学与我探讨了一些Lua的GC时,发现了两个以前从没注意过的智慧闪光点。
首先是luaC_fullgc的实现.
[c]
#define keepinvariant(g) ((g)->gcstate <= GCSatomic)
static void entersweep (lua_State *L) {
global_State *g = G(L);
g->gcstate = GCSswpallgc;
lua_assert(g->sweepgc == NULL);
g->sweepgc = sweeplist(L, &g->allgc, 1);
}
void luaC_fullgc (lua_State *L, int isemergenc……