aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2023-12-07 15:45:11 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2023-12-07 15:45:11 -0300
commit925fe8a0f2a667c96c015ee74d1a702af9ea5507 (patch)
treebca1cb92e11218498f4c76f651f4a5fa1a8c87b5 /lapi.c
parent789e7acdea3ada96bd00b7aac6d82e805bfee85c (diff)
downloadlua-925fe8a0f2a667c96c015ee74d1a702af9ea5507.tar.gz
lua-925fe8a0f2a667c96c015ee74d1a702af9ea5507.tar.bz2
lua-925fe8a0f2a667c96c015ee74d1a702af9ea5507.zip
First criteria for shifts minor<->major
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/lapi.c b/lapi.c
index 71b679aa..374b3872 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1204,26 +1204,29 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
1204 break; 1204 break;
1205 } 1205 }
1206 case LUA_GCGEN: { 1206 case LUA_GCGEN: {
1207 unsigned int minormul = va_arg(argp, unsigned int); 1207 int minormul = va_arg(argp, int);
1208 unsigned int majormul = va_arg(argp, unsigned int); 1208 int minormajor = va_arg(argp, int);
1209 int majorminor = va_arg(argp, int);
1209 res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; 1210 res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN;
1210 if (minormul != 0) 1211 if (minormul >= 0)
1211 setgcparam(g, genminormul, minormul); 1212 setgcparam(g, genminormul, minormul);
1212 if (majormul != 0) 1213 if (minormajor >= 0)
1213 setgcparam(g, genmajormul, majormul); 1214 setgcparam(g, minormajor, minormajor);
1215 if (majorminor >= 0)
1216 setgcparam(g, majorminor, majorminor);
1214 luaC_changemode(L, KGC_GENMINOR); 1217 luaC_changemode(L, KGC_GENMINOR);
1215 break; 1218 break;
1216 } 1219 }
1217 case LUA_GCINC: { 1220 case LUA_GCINC: {
1218 unsigned int pause = va_arg(argp, unsigned int); 1221 int pause = va_arg(argp, int);
1219 unsigned int stepmul = va_arg(argp, unsigned int); 1222 int stepmul = va_arg(argp, int);
1220 unsigned int stepsize = va_arg(argp, unsigned int); 1223 int stepsize = va_arg(argp, int);
1221 res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; 1224 res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN;
1222 if (pause != 0) 1225 if (pause >= 0)
1223 setgcparam(g, gcpause, pause); 1226 setgcparam(g, gcpause, pause);
1224 if (stepmul != 0) 1227 if (stepmul >= 0)
1225 setgcparam(g, gcstepmul, stepmul); 1228 setgcparam(g, gcstepmul, stepmul);
1226 if (stepsize != 0) 1229 if (stepsize >= 0)
1227 g->gcstepsize = (stepsize <= log2maxs(l_obj)) ? stepsize 1230 g->gcstepsize = (stepsize <= log2maxs(l_obj)) ? stepsize
1228 : log2maxs(l_obj); 1231 : log2maxs(l_obj);
1229 luaC_changemode(L, KGC_INC); 1232 luaC_changemode(L, KGC_INC);