diff options
Diffstat (limited to 'lgc.c')
-rw-r--r-- | lgc.c | 6 |
1 files changed, 2 insertions, 4 deletions
@@ -273,8 +273,7 @@ static void reallymarkobject (global_State *g, GCObject *o) { | |||
273 | gray2black(o); | 273 | gray2black(o); |
274 | break; | 274 | break; |
275 | } | 275 | } |
276 | case LUA_TUPVAL: | 276 | case LUA_TUPVAL: { |
277 | case LUA_TUPVALTBC: { | ||
278 | UpVal *uv = gco2upv(o); | 277 | UpVal *uv = gco2upv(o); |
279 | if (!upisopen(uv)) /* open upvalues are kept gray */ | 278 | if (!upisopen(uv)) /* open upvalues are kept gray */ |
280 | gray2black(o); | 279 | gray2black(o); |
@@ -571,7 +570,7 @@ static int traversethread (global_State *g, lua_State *th) { | |||
571 | for (; o < th->top; o++) /* mark live elements in the stack */ | 570 | for (; o < th->top; o++) /* mark live elements in the stack */ |
572 | markvalue(g, s2v(o)); | 571 | markvalue(g, s2v(o)); |
573 | for (uv = th->openupval; uv != NULL; uv = uv->u.open.next) { | 572 | for (uv = th->openupval; uv != NULL; uv = uv->u.open.next) { |
574 | if (uv->tt == LUA_TUPVALTBC) /* to be closed? */ | 573 | if (uv->tbc) /* to be closed? */ |
575 | markobject(g, uv); /* cannot be collected */ | 574 | markobject(g, uv); /* cannot be collected */ |
576 | } | 575 | } |
577 | if (g->gcstate == GCSatomic) { /* final traversal? */ | 576 | if (g->gcstate == GCSatomic) { /* final traversal? */ |
@@ -706,7 +705,6 @@ static void freeobj (lua_State *L, GCObject *o) { | |||
706 | luaF_freeproto(L, gco2p(o)); | 705 | luaF_freeproto(L, gco2p(o)); |
707 | break; | 706 | break; |
708 | case LUA_TUPVAL: | 707 | case LUA_TUPVAL: |
709 | case LUA_TUPVALTBC: | ||
710 | freeupval(L, gco2upv(o)); | 708 | freeupval(L, gco2upv(o)); |
711 | break; | 709 | break; |
712 | case LUA_TLCL: | 710 | case LUA_TLCL: |