diff --git a/src/lj_api.c b/src/lj_api.c index ed4238a9..2b99c267 100644 --- a/src/lj_api.c +++ b/src/lj_api.c @@ -1147,7 +1147,7 @@ LUA_API int lua_gc(lua_State *L, int what, int data) g->gc.threshold = LJ_MAX_MEM; break; case LUA_GCRESTART: - g->gc.threshold = g->gc.total; + g->gc.threshold = data == -1 ? (g->gc.total/100)*g->gc.pause : g->gc.total; break; case LUA_GCCOLLECT: lj_gc_fullgc(L); diff --git a/src/luajit.c b/src/luajit.c index cc2bf710..e8024479 100644 --- a/src/luajit.c +++ b/src/luajit.c @@ -470,7 +470,7 @@ static int pmain(lua_State *L) LUAJIT_VERSION_SYM(); /* linker-enforced version check */ lua_gc(L, LUA_GCSTOP, 0); /* stop collector during initialization */ luaL_openlibs(L); /* open libraries */ - lua_gc(L, LUA_GCRESTART, 0); + lua_gc(L, LUA_GCRESTART, -1); s->status = handle_luainit(L); if (s->status != 0) return 0; script = collectargs(argv, &has_i, &has_v, &has_e);