|
@@ -93,7 +93,7 @@
|
|
|
#define markobjectN(g,t) { if (t) markobject(g,t); }
|
|
|
|
|
|
static void reallymarkobject (global_State *g, GCObject *o);
|
|
|
-static l_mem atomic (lua_State *L);
|
|
|
+static l_obj atomic (lua_State *L);
|
|
|
static void entersweep (lua_State *L);
|
|
|
|
|
|
|
|
@@ -335,9 +335,9 @@ static void markmt (global_State *g) {
|
|
|
/*
|
|
|
** mark all objects in list of being-finalized
|
|
|
*/
|
|
|
-static l_mem markbeingfnz (global_State *g) {
|
|
|
+static l_obj markbeingfnz (global_State *g) {
|
|
|
GCObject *o;
|
|
|
- l_mem count = 0;
|
|
|
+ l_obj count = 0;
|
|
|
for (o = g->tobefnz; o != NULL; o = o->next) {
|
|
|
count++;
|
|
|
markobject(g, o);
|
|
@@ -357,8 +357,8 @@ static l_mem markbeingfnz (global_State *g) {
|
|
|
** upvalues, as they have nothing to be checked. (If the thread gets an
|
|
|
** upvalue later, it will be linked in the list again.)
|
|
|
*/
|
|
|
-static l_mem remarkupvals (global_State *g) {
|
|
|
- l_mem work = 0;
|
|
|
+static l_obj remarkupvals (global_State *g) {
|
|
|
+ l_obj work = 0;
|
|
|
lua_State *thread;
|
|
|
lua_State **p = &g->twups;
|
|
|
while ((thread = *p) != NULL) {
|
|
@@ -662,8 +662,8 @@ static void propagatemark (global_State *g) {
|
|
|
}
|
|
|
|
|
|
|
|
|
-static l_mem propagateall (global_State *g) {
|
|
|
- l_mem work = 0;
|
|
|
+static l_obj propagateall (global_State *g) {
|
|
|
+ l_obj work = 0;
|
|
|
while (g->gray) {
|
|
|
propagatemark(g);
|
|
|
work++;
|
|
@@ -678,9 +678,9 @@ static l_mem propagateall (global_State *g) {
|
|
|
** inverts the direction of the traversals, trying to speed up
|
|
|
** convergence on chains in the same table.
|
|
|
*/
|
|
|
-static l_mem convergeephemerons (global_State *g) {
|
|
|
+static l_obj convergeephemerons (global_State *g) {
|
|
|
int changed;
|
|
|
- l_mem work = 0;
|
|
|
+ l_obj work = 0;
|
|
|
int dir = 0;
|
|
|
do {
|
|
|
GCObject *w;
|
|
@@ -715,8 +715,8 @@ static l_mem convergeephemerons (global_State *g) {
|
|
|
/*
|
|
|
** clear entries with unmarked keys from all weaktables in list 'l'
|
|
|
*/
|
|
|
-static l_mem clearbykeys (global_State *g, GCObject *l) {
|
|
|
- l_mem work = 0;
|
|
|
+static l_obj clearbykeys (global_State *g, GCObject *l) {
|
|
|
+ l_obj work = 0;
|
|
|
for (; l; l = gco2t(l)->gclist) {
|
|
|
Table *h = gco2t(l);
|
|
|
Node *limit = gnodelast(h);
|
|
@@ -737,8 +737,8 @@ static l_mem clearbykeys (global_State *g, GCObject *l) {
|
|
|
** clear entries with unmarked values from all weaktables in list 'l' up
|
|
|
** to element 'f'
|
|
|
*/
|
|
|
-static l_mem clearbyvalues (global_State *g, GCObject *l, GCObject *f) {
|
|
|
- l_mem work = 0;
|
|
|
+static l_obj clearbyvalues (global_State *g, GCObject *l, GCObject *f) {
|
|
|
+ l_obj work = 0;
|
|
|
for (; l != f; l = gco2t(l)->gclist) {
|
|
|
Table *h = gco2t(l);
|
|
|
Node *n, *limit = gnodelast(h);
|
|
@@ -1054,7 +1054,7 @@ void luaC_checkfinalizer (lua_State *L, GCObject *o, Table *mt) {
|
|
|
static void setpause (global_State *g) {
|
|
|
unsigned int pause = getgcparam(g->gcpause);
|
|
|
lu_mem threshold = g->marked / 8 * pause / 12;
|
|
|
- l_mem debt = gettotalobjs(g) - threshold;
|
|
|
+ l_obj debt = gettotalobjs(g) - threshold;
|
|
|
if (debt > 0) debt = 0;
|
|
|
luaE_setdebt(g, debt);
|
|
|
}
|
|
@@ -1306,7 +1306,7 @@ static void atomic2gen (lua_State *L, global_State *g) {
|
|
|
** total number of objects grows 'genminormul'%.
|
|
|
*/
|
|
|
static void setminordebt (global_State *g) {
|
|
|
- luaE_setdebt(g, -(cast(l_mem, (gettotalobjs(g) / 100)) * g->genminormul));
|
|
|
+ luaE_setdebt(g, -(cast(l_obj, (gettotalobjs(g) / 100)) * g->genminormul));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1431,8 +1431,8 @@ static void genstep (lua_State *L, global_State *g) {
|
|
|
if (g->lastatomic != 0) /* last collection was a bad one? */
|
|
|
stepgenfull(L, g); /* do a full step */
|
|
|
else {
|
|
|
- l_mem majorbase = g->GCestimate; /* objects after last major collection */
|
|
|
- l_mem majorinc = (majorbase / 100) * getgcparam(g->genmajormul);
|
|
|
+ l_obj majorbase = g->GCestimate; /* objects after last major collection */
|
|
|
+ l_obj majorinc = (majorbase / 100) * getgcparam(g->genmajormul);
|
|
|
if (g->GCdebt > 0 && gettotalobjs(g) > majorbase + majorinc) {
|
|
|
g->marked = 0;
|
|
|
fullgen(L, g); /* do a major collection */
|
|
@@ -1512,8 +1512,8 @@ void luaC_freeallobjects (lua_State *L) {
|
|
|
}
|
|
|
|
|
|
|
|
|
-static l_mem atomic (lua_State *L) {
|
|
|
- l_mem work = 0;
|
|
|
+static l_obj atomic (lua_State *L) {
|
|
|
+ l_obj work = 0;
|
|
|
global_State *g = G(L);
|
|
|
GCObject *origweak, *origall;
|
|
|
GCObject *grayagain = g->grayagain; /* save original list */
|
|
@@ -1558,7 +1558,7 @@ static l_mem atomic (lua_State *L) {
|
|
|
static void sweepstep (lua_State *L, global_State *g,
|
|
|
int nextstate, GCObject **nextlist) {
|
|
|
if (g->sweepgc) {
|
|
|
- l_mem olddebt = g->GCdebt;
|
|
|
+ l_obj olddebt = g->GCdebt;
|
|
|
g->sweepgc = sweeplist(L, g->sweepgc, GCSWEEPMAX);
|
|
|
g->GCestimate += g->GCdebt - olddebt; /* update estimate */
|
|
|
}
|
|
@@ -1569,9 +1569,9 @@ static void sweepstep (lua_State *L, global_State *g,
|
|
|
}
|
|
|
|
|
|
|
|
|
-static l_mem singlestep (lua_State *L) {
|
|
|
+static l_obj singlestep (lua_State *L) {
|
|
|
global_State *g = G(L);
|
|
|
- l_mem work;
|
|
|
+ l_obj work;
|
|
|
lua_assert(!g->gcstopem); /* collector is not reentrant */
|
|
|
g->gcstopem = 1; /* no emergency collections while collecting */
|
|
|
switch (g->gcstate) {
|
|
@@ -1658,10 +1658,10 @@ void luaC_runtilstate (lua_State *L, int statesmask) {
|
|
|
*/
|
|
|
static void incstep (lua_State *L, global_State *g) {
|
|
|
int stepmul = (getgcparam(g->gcstepmul) | 1); /* avoid division by 0 */
|
|
|
- l_mem debt = (g->GCdebt / 100) * stepmul;
|
|
|
- l_mem stepsize = cast(l_mem, 1) << g->gcstepsize;
|
|
|
+ l_obj debt = (g->GCdebt / 100) * stepmul;
|
|
|
+ l_obj stepsize = cast(l_obj, 1) << g->gcstepsize;
|
|
|
do { /* repeat until pause or enough "credit" (negative debt) */
|
|
|
- l_mem work = singlestep(L); /* perform one single step */
|
|
|
+ l_obj work = singlestep(L); /* perform one single step */
|
|
|
debt -= work;
|
|
|
} while (debt > -stepsize && g->gcstate != GCSpause);
|
|
|
if (g->gcstate == GCSpause)
|