]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Avoid starting a GC cycle immediately after library init.
authorMike Pall <mike>
Sun, 25 Apr 2010 17:45:54 +0000 (19:45 +0200)
committerMike Pall <mike>
Sun, 25 Apr 2010 17:45:54 +0000 (19:45 +0200)
src/lj_api.c
src/luajit.c

index ed4238a9634d74432cc0a4595dd6e3857b2a29b1..2b99c267482c8c7096e06548b691bd37e080316b 100644 (file)
@@ -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);
index cc2bf7100958ff0e107acc4c7af80d7de9efa8a1..e8024479edba206ef50fead4ec4d26e779fa2de5 100644 (file)
@@ -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);