aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-12-13 15:45:57 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-12-13 15:45:57 -0300
commit5d8b5b9290c932bdfd7dcc670a5af957bdd58392 (patch)
tree17915e03d62517c47ddf3dd7db6c07596f8d5748 /lapi.c
parent40565b4a089f44fdcb16f4ed0080b0ca3755e4aa (diff)
downloadlua-5d8b5b9290c932bdfd7dcc670a5af957bdd58392.tar.gz
lua-5d8b5b9290c932bdfd7dcc670a5af957bdd58392.tar.bz2
lua-5d8b5b9290c932bdfd7dcc670a5af957bdd58392.zip
Changed signal of GC debt
Positive debts seems more natural then negative ones.
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lapi.c b/lapi.c
index 8c70bd4c..b2ac0c57 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1168,8 +1168,8 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
1168 g->gcstp = 0; /* allow GC to run (bit GCSTPGC must be zero here) */ 1168 g->gcstp = 0; /* allow GC to run (bit GCSTPGC must be zero here) */
1169 if (todo == 0) 1169 if (todo == 0)
1170 todo = 1 << g->gcstepsize; /* standard step size */ 1170 todo = 1 << g->gcstepsize; /* standard step size */
1171 while (todo + g->GCdebt > 0) { /* enough to run a step? */ 1171 while (todo >= g->GCdebt) { /* enough to run a step? */
1172 todo += g->GCdebt; /* decrement 'todo' (debt is usually negative) */ 1172 todo -= g->GCdebt; /* decrement 'todo' */
1173 luaC_step(L); /* run one basic step */ 1173 luaC_step(L); /* run one basic step */
1174 didsomething = 1; 1174 didsomething = 1;
1175 if (g->gckind == KGC_GEN) /* minor collections? */ 1175 if (g->gckind == KGC_GEN) /* minor collections? */
@@ -1177,8 +1177,8 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
1177 else if (g->gcstate == GCSpause) 1177 else if (g->gcstate == GCSpause)
1178 break; /* don't run more than one cycle */ 1178 break; /* don't run more than one cycle */
1179 } 1179 }
1180 /* add remaining 'todo' to total debt */ 1180 /* remove remaining 'todo' from total debt */
1181 luaE_setdebt(g, todo + g->GCdebt); 1181 luaE_setdebt(g, g->GCdebt - todo);
1182 g->gcstp = oldstp; /* restore previous state */ 1182 g->gcstp = oldstp; /* restore previous state */
1183 if (didsomething && g->gcstate == GCSpause) /* end of cycle? */ 1183 if (didsomething && g->gcstate == GCSpause) /* end of cycle? */
1184 res = 1; /* signal it */ 1184 res = 1; /* signal it */