Revamp of GC parameters
More uniformity when handling GC parameters + avoid divisions by 100 when applying them.
This commit is contained in:
30
lapi.c
30
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);
|
||||
|
||||
Reference in New Issue
Block a user