aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-10-11 09:38:45 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-10-11 09:38:45 -0300
commit1d8920dd7f508af5f2fd743678be1327f30c079b (patch)
tree31fdd2aa1c2829904c51be79aa334db020847418 /lapi.c
parent911f1e3e7ff01dafe3e9f77bc9c8e3a25237d7de (diff)
downloadlua-1d8920dd7f508af5f2fd743678be1327f30c079b.tar.gz
lua-1d8920dd7f508af5f2fd743678be1327f30c079b.tar.bz2
lua-1d8920dd7f508af5f2fd743678be1327f30c079b.zip
some cleaning in GC parameters
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/lapi.c b/lapi.c
index 4985da6b..6e9b972d 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 2.269 2017/06/01 20:22:33 roberto Exp roberto $ 2** $Id: lapi.c,v 2.270 2017/06/29 15:06:44 roberto Exp roberto $
3** Lua API 3** Lua API
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -1114,14 +1114,14 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
1114 } 1114 }
1115 case LUA_GCSETPAUSE: { 1115 case LUA_GCSETPAUSE: {
1116 int data = va_arg(argp, int); 1116 int data = va_arg(argp, int);
1117 res = g->gcpause + 100; 1117 res = getgcparam(g->gcpause);
1118 g->gcpause = (data >= 100) ? data - 100 : 0; 1118 setgcparam(g->gcpause, data);
1119 break; 1119 break;
1120 } 1120 }
1121 case LUA_GCSETSTEPMUL: { 1121 case LUA_GCSETSTEPMUL: {
1122 int data = va_arg(argp, int); 1122 int data = va_arg(argp, int);
1123 res = g->gcstepmul * 10; 1123 res = getgcparam(g->gcstepmul);
1124 g->gcstepmul = data / 10; 1124 setgcparam(g->gcstepmul, data);
1125 break; 1125 break;
1126 } 1126 }
1127 case LUA_GCISRUNNING: { 1127 case LUA_GCISRUNNING: {
@@ -1131,8 +1131,10 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
1131 case LUA_GCGEN: { 1131 case LUA_GCGEN: {
1132 int minormul = va_arg(argp, int); 1132 int minormul = va_arg(argp, int);
1133 int majormul = va_arg(argp, int); 1133 int majormul = va_arg(argp, int);
1134 g->genminormul = (minormul == 0) ? LUAI_GENMINORMUL : minormul; 1134 if (minormul != 0)
1135 g->genmajormul = (majormul == 0) ? LUAI_GENMAJORMUL : majormul; 1135 g->genminormul = minormul;
1136 if (majormul != 0)
1137 setgcparam(g->genmajormul, majormul);
1136 luaC_changemode(L, KGC_GEN); 1138 luaC_changemode(L, KGC_GEN);
1137 break; 1139 break;
1138 } 1140 }
@@ -1140,9 +1142,12 @@ LUA_API int lua_gc (lua_State *L, int what, ...) {
1140 int pause = va_arg(argp, int); 1142 int pause = va_arg(argp, int);
1141 int stepmul = va_arg(argp, int); 1143 int stepmul = va_arg(argp, int);
1142 int stepsize = va_arg(argp, int); 1144 int stepsize = va_arg(argp, int);
1143 g->gcpause = (pause == 0) ? LUAI_GCPAUSE : pause; 1145 if (pause != 0)
1144 g->gcstepmul = (stepmul == 0) ? LUAI_GCMUL : stepmul; 1146 setgcparam(g->gcpause, pause);
1145 g->gcstepsize = (stepsize == 0) ? LUAI_GCSTEPSIZE : stepsize; 1147 if (stepmul != 0)
1148 setgcparam(g->gcstepmul, stepmul);
1149 if (stepsize != 0)
1150 g->gcstepsize = stepsize;
1146 luaC_changemode(L, KGC_INC); 1151 luaC_changemode(L, KGC_INC);
1147 break; 1152 break;
1148 } 1153 }