diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2023-12-07 15:45:11 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2023-12-07 15:45:11 -0300 |
commit | 925fe8a0f2a667c96c015ee74d1a702af9ea5507 (patch) | |
tree | bca1cb92e11218498f4c76f651f4a5fa1a8c87b5 /lapi.c | |
parent | 789e7acdea3ada96bd00b7aac6d82e805bfee85c (diff) | |
download | lua-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.c | 25 |
1 files changed, 14 insertions, 11 deletions
@@ -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); |