From df608f842ab20a878cf8ed337a4066f5567786a5 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy <roberto@inf.puc-rio.br> Date: Mon, 1 Sep 2014 14:37:11 -0300 Subject: 'linktable' -> 'linkgclist' (and used for all links with 'gclist') --- lgc.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/lgc.c b/lgc.c index a4059d34..0182e604 100644 --- a/lgc.c +++ b/lgc.c @@ -1,5 +1,5 @@ /* -** $Id: lgc.c,v 2.191 2014/07/19 15:14:46 roberto Exp roberto $ +** $Id: lgc.c,v 2.192 2014/07/29 16:22:24 roberto Exp roberto $ ** Garbage Collector ** See Copyright Notice in lua.h */ @@ -100,9 +100,9 @@ static void reallymarkobject (global_State *g, GCObject *o); /* -** link table 'h' into list pointed by 'p' +** link collectable object 'o' into list pointed by 'p' */ -#define linktable(h,p) ((h)->gclist = *(p), *(p) = obj2gco(h)) +#define linkgclist(o,p) ((o)->gclist = (p), (p) = obj2gco(o)) /* @@ -159,8 +159,7 @@ void luaC_barrierback_ (lua_State *L, Table *t) { global_State *g = G(L); lua_assert(isblack(t) && !isdead(g, t)); black2gray(t); /* make table gray (again) */ - t->gclist = g->grayagain; - g->grayagain = obj2gco(t); + linkgclist(t, g->grayagain); } @@ -243,27 +242,23 @@ static void reallymarkobject (global_State *g, GCObject *o) { break; } case LUA_TLCL: { - gco2lcl(o)->gclist = g->gray; - g->gray = o; + linkgclist(gco2lcl(o), g->gray); break; } case LUA_TCCL: { - gco2ccl(o)->gclist = g->gray; - g->gray = o; + linkgclist(gco2ccl(o), g->gray); break; } case LUA_TTABLE: { - linktable(gco2t(o), &g->gray); + linkgclist(gco2t(o), g->gray); break; } case LUA_TTHREAD: { - gco2th(o)->gclist = g->gray; - g->gray = o; + linkgclist(gco2th(o), g->gray); break; } case LUA_TPROTO: { - gco2p(o)->gclist = g->gray; - g->gray = o; + linkgclist(gco2p(o), g->gray); break; } default: lua_assert(0); break; @@ -357,9 +352,9 @@ static void traverseweakvalue (global_State *g, Table *h) { } } if (hasclears) - linktable(h, &g->weak); /* has to be cleared later */ + linkgclist(h, g->weak); /* has to be cleared later */ else /* no white values */ - linktable(h, &g->grayagain); /* no need to clean */ + linkgclist(h, g->grayagain); /* no need to clean */ } @@ -392,11 +387,11 @@ static int traverseephemeron (global_State *g, Table *h) { } } if (prop) - linktable(h, &g->ephemeron); /* have to propagate again */ + linkgclist(h, g->ephemeron); /* have to propagate again */ else if (hasclears) /* does table have white keys? */ - linktable(h, &g->allweak); /* may have to clean white keys */ + linkgclist(h, g->allweak); /* may have to clean white keys */ else /* no white keys */ - linktable(h, &g->grayagain); /* no need to clean */ + linkgclist(h, g->grayagain); /* no need to clean */ return marked; } @@ -433,7 +428,7 @@ static lu_mem traversetable (global_State *g, Table *h) { else if (!weakvalue) /* strong values? */ traverseephemeron(g, h); else /* all weak */ - linktable(h, &g->allweak); /* nothing to traverse now */ + linkgclist(h, g->allweak); /* nothing to traverse now */ } else /* not weak */ traversestrongtable(g, h); @@ -548,8 +543,7 @@ static void propagatemark (global_State *g) { case LUA_TTHREAD: { lua_State *th = gco2th(o); g->gray = th->gclist; /* remove from 'gray' list */ - th->gclist = g->grayagain; - g->grayagain = o; /* insert into 'grayagain' list */ + linkgclist(th, g->grayagain); /* insert into 'grayagain' list */ black2gray(o); size = traversethread(g, th); break; -- cgit v1.2.3-55-g6feb