Tag LUA_TUPVALTBC replaced by a flag

It is simpler to signal a to-be-closed upvalue with a boolean flag,
instead of using a different tag.
This commit is contained in:
Roberto Ierusalimschy
2019-07-19 11:12:31 -03:00
parent 9cdf6b7082
commit dc07719b0d
5 changed files with 13 additions and 18 deletions

6
lgc.c
View File

@@ -273,8 +273,7 @@ static void reallymarkobject (global_State *g, GCObject *o) {
gray2black(o);
break;
}
case LUA_TUPVAL:
case LUA_TUPVALTBC: {
case LUA_TUPVAL: {
UpVal *uv = gco2upv(o);
if (!upisopen(uv)) /* open upvalues are kept gray */
gray2black(o);
@@ -571,7 +570,7 @@ static int traversethread (global_State *g, lua_State *th) {
for (; o < th->top; o++) /* mark live elements in the stack */
markvalue(g, s2v(o));
for (uv = th->openupval; uv != NULL; uv = uv->u.open.next) {
if (uv->tt == LUA_TUPVALTBC) /* to be closed? */
if (uv->tbc) /* to be closed? */
markobject(g, uv); /* cannot be collected */
}
if (g->gcstate == GCSatomic) { /* final traversal? */
@@ -706,7 +705,6 @@ static void freeobj (lua_State *L, GCObject *o) {
luaF_freeproto(L, gco2p(o));
break;
case LUA_TUPVAL:
case LUA_TUPVALTBC:
freeupval(L, gco2upv(o));
break;
case LUA_TLCL: