From af35c7f398e8149b5f2481b63b399674e4ecdf7e Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 27 Aug 2013 15:53:35 -0300 Subject: upvalues collected by reference count --- lstate.h | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'lstate.h') diff --git a/lstate.h b/lstate.h index 02180df7..e0aed2d9 100644 --- a/lstate.h +++ b/lstate.h @@ -1,5 +1,5 @@ /* -** $Id: lstate.h,v 2.89 2013/08/23 13:34:54 roberto Exp roberto $ +** $Id: lstate.h,v 2.90 2013/08/26 12:41:10 roberto Exp roberto $ ** Global State ** See Copyright Notice in lua.h */ @@ -27,13 +27,6 @@ ** List 'fixedgc' keep objects that are not to be collected (currently ** only small strings, such as reserved words). ** -** Open upvalues are not subject to independent garbage collection. They -** are collected together with their respective threads. (They are -** always gray, so they must be remarked in the atomic step. Usually -** their contents would be marked when traversing the respective -** threads, but the thread may already be dead, while the upvalue is -** still accessible through closures.) -** ** Live objects with finalizers are kept in the list g->finobj. The ** list g->tobefnz links all objects being finalized. In particular, an ** object has its FINALIZEDBIT set iff it is in one of these lists. @@ -128,7 +121,6 @@ typedef struct global_State { lu_byte gcrunning; /* true if GC is running */ GCObject *allgc; /* list of all collectable objects */ GCObject *localgc; /* list of local objects */ - GCObject *localupv; /* list of local upvalues */ GCObject *finobj; /* list of collectable objects with finalizers */ GCObject **sweepgc; /* current position of sweep in list 'allgc' */ GCObject **sweepfin; /* current position of sweep in list 'finobj' */ @@ -171,7 +163,7 @@ struct lua_State { int basehookcount; int hookcount; lua_Hook hook; - GCObject *openupval; /* list of open upvalues in this stack */ + UpVal *openupval; /* list of open upvalues in this stack */ GCObject *gclist; struct lua_longjmp *errorJmp; /* current error recover point */ ptrdiff_t errfunc; /* current error handling function (stack index) */ @@ -192,7 +184,6 @@ union GCObject { union Closure cl; struct Table h; struct Proto p; - struct UpVal uv; struct lua_State th; /* thread */ }; @@ -211,7 +202,6 @@ union GCObject { check_exp(novariant((o)->gch.tt) == LUA_TFUNCTION, &((o)->cl)) #define gco2t(o) check_exp((o)->gch.tt == LUA_TTABLE, &((o)->h)) #define gco2p(o) check_exp((o)->gch.tt == LUA_TPROTO, &((o)->p)) -#define gco2uv(o) check_exp((o)->gch.tt == LUA_TUPVAL, &((o)->uv)) #define gco2th(o) check_exp((o)->gch.tt == LUA_TTHREAD, &((o)->th)) /* macro to convert any Lua object into a GCObject */ -- cgit v1.2.3-55-g6feb