diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2022-12-13 11:55:14 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2022-12-13 11:55:14 -0300 |
| commit | 40565b4a089f44fdcb16f4ed0080b0ca3755e4aa (patch) | |
| tree | d3d692070a250e5756fad95388606736253da8c4 /lapi.c | |
| parent | ff106c028ca944ee5e95b005628e2669b87bcaf2 (diff) | |
| download | lua-40565b4a089f44fdcb16f4ed0080b0ca3755e4aa.tar.gz lua-40565b4a089f44fdcb16f4ed0080b0ca3755e4aa.tar.bz2 lua-40565b4a089f44fdcb16f4ed0080b0ca3755e4aa.zip | |
Revamp of GC parameters
More uniformity when handling GC parameters + avoid divisions by 100
when applying them.
Diffstat (limited to 'lapi.c')
| -rw-r--r-- | lapi.c | 30 |
1 files changed, 15 insertions, 15 deletions
| @@ -1185,15 +1185,15 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { | |||
| 1185 | break; | 1185 | break; |
| 1186 | } | 1186 | } |
| 1187 | case LUA_GCSETPAUSE: { | 1187 | case LUA_GCSETPAUSE: { |
| 1188 | int data = va_arg(argp, int); | 1188 | unsigned int data = va_arg(argp, unsigned int); |
| 1189 | res = getgcparam(g->gcpause); | 1189 | res = applygcparam(g, gcpause, 100); |
| 1190 | setgcparam(g->gcpause, data); | 1190 | setgcparam(g, gcpause, data); |
| 1191 | break; | 1191 | break; |
| 1192 | } | 1192 | } |
| 1193 | case LUA_GCSETSTEPMUL: { | 1193 | case LUA_GCSETSTEPMUL: { |
| 1194 | int data = va_arg(argp, int); | 1194 | unsigned int data = va_arg(argp, unsigned int); |
| 1195 | res = getgcparam(g->gcstepmul); | 1195 | res = applygcparam(g, gcstepmul, 100); |
| 1196 | setgcparam(g->gcstepmul, data); | 1196 | setgcparam(g, gcstepmul, data); |
| 1197 | break; | 1197 | break; |
| 1198 | } | 1198 | } |
| 1199 | case LUA_GCISRUNNING: { | 1199 | case LUA_GCISRUNNING: { |
| @@ -1201,25 +1201,25 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { | |||
| 1201 | break; | 1201 | break; |
| 1202 | } | 1202 | } |
| 1203 | case LUA_GCGEN: { | 1203 | case LUA_GCGEN: { |
| 1204 | int minormul = va_arg(argp, int); | 1204 | unsigned int minormul = va_arg(argp, unsigned int); |
| 1205 | int majormul = va_arg(argp, int); | 1205 | unsigned int majormul = va_arg(argp, unsigned int); |
| 1206 | res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; | 1206 | res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; |
| 1207 | if (minormul != 0) | 1207 | if (minormul != 0) |
| 1208 | g->genminormul = minormul; | 1208 | setgcparam(g, genminormul, minormul); |
| 1209 | if (majormul != 0) | 1209 | if (majormul != 0) |
| 1210 | setgcparam(g->genmajormul, majormul); | 1210 | setgcparam(g, genmajormul, majormul); |
| 1211 | luaC_changemode(L, KGC_GEN); | 1211 | luaC_changemode(L, KGC_GEN); |
| 1212 | break; | 1212 | break; |
| 1213 | } | 1213 | } |
| 1214 | case LUA_GCINC: { | 1214 | case LUA_GCINC: { |
| 1215 | int pause = va_arg(argp, int); | 1215 | unsigned int pause = va_arg(argp, unsigned int); |
| 1216 | int stepmul = va_arg(argp, int); | 1216 | unsigned int stepmul = va_arg(argp, unsigned int); |
| 1217 | int stepsize = va_arg(argp, int); | 1217 | unsigned int stepsize = va_arg(argp, unsigned int); |
| 1218 | res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; | 1218 | res = (g->gckind == KGC_INC) ? LUA_GCINC : LUA_GCGEN; |
| 1219 | if (pause != 0) | 1219 | if (pause != 0) |
| 1220 | setgcparam(g->gcpause, pause); | 1220 | setgcparam(g, gcpause, pause); |
| 1221 | if (stepmul != 0) | 1221 | if (stepmul != 0) |
| 1222 | setgcparam(g->gcstepmul, stepmul); | 1222 | setgcparam(g, gcstepmul, stepmul); |
| 1223 | if (stepsize != 0) | 1223 | if (stepsize != 0) |
| 1224 | g->gcstepsize = (stepsize <= log2maxs(l_obj)) ? stepsize | 1224 | g->gcstepsize = (stepsize <= log2maxs(l_obj)) ? stepsize |
| 1225 | : log2maxs(l_obj); | 1225 | : log2maxs(l_obj); |
