From 40565b4a089f44fdcb16f4ed0080b0ca3755e4aa Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 13 Dec 2022 11:55:14 -0300 Subject: Revamp of GC parameters More uniformity when handling GC parameters + avoid divisions by 100 when applying them. --- lapi.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'lapi.c') diff --git a/lapi.c b/lapi.c index d6d7a8db..8c70bd4c 100644 --- a/lapi.c +++ b/lapi.c @@ -1185,15 +1185,15 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { break; } case LUA_GCSETPAUSE: { - int data = va_arg(argp, int); - res = getgcparam(g->gcpause); - setgcparam(g->gcpause, data); + unsigned int data = va_arg(argp, unsigned int); + res = applygcparam(g, gcpause, 100); + setgcparam(g, gcpause, data); break; } case LUA_GCSETSTEPMUL: { - int data = va_arg(argp, int); - res = getgcparam(g->gcstepmul); - setgcparam(g->gcstepmul, data); + unsigned int data = va_arg(argp, unsigned int); + res = applygcparam(g, gcstepmul, 100); + setgcparam(g, gcstepmul, data); break; } case LUA_GCISRUNNING: { @@ -1201,25 +1201,25 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { break; } case LUA_GCGEN: { - int minormul = va_arg(argp, int); - int majormul = va_arg(argp, int); + unsigned int minormul = va_arg(argp, unsigned int); + unsigned int majormul = va_arg(argp, unsigned int); res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; if (minormul != 0) - g->genminormul = minormul; + setgcparam(g, genminormul, minormul); if (majormul != 0) - setgcparam(g->genmajormul, majormul); + setgcparam(g, genmajormul, majormul); luaC_changemode(L, KGC_GEN); break; } case LUA_GCINC: { - int pause = va_arg(argp, int); - int stepmul = va_arg(argp, int); - int stepsize = va_arg(argp, int); + unsigned int pause = va_arg(argp, unsigned int); + unsigned int stepmul = va_arg(argp, unsigned int); + unsigned int stepsize = va_arg(argp, unsigned int); res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; if (pause != 0) - setgcparam(g->gcpause, pause); + setgcparam(g, gcpause, pause); if (stepmul != 0) - setgcparam(g->gcstepmul, stepmul); + setgcparam(g, gcstepmul, stepmul); if (stepsize != 0) g->gcstepsize = (stepsize <= log2maxs(l_obj)) ? stepsize : log2maxs(l_obj); -- cgit v1.2.3-55-g6feb