draft version of a generational mode for garbage collection. (Not well

tested; no major collections; ...)
This commit is contained in:
Roberto Ierusalimschy
2010-03-22 15:28:03 -03:00
parent 9c196bebad
commit 74123e9686
5 changed files with 70 additions and 35 deletions

View File

@@ -1,5 +1,5 @@
/*
** $Id: lbaselib.c,v 1.237 2010/03/13 03:57:46 roberto Exp roberto $
** $Id: lbaselib.c,v 1.238 2010/03/19 15:52:48 roberto Exp roberto $
** Basic library
** See Copyright Notice in lua.h
*/
@@ -186,10 +186,10 @@ static int luaB_gcinfo (lua_State *L) {
static int luaB_collectgarbage (lua_State *L) {
static const char *const opts[] = {"stop", "restart", "collect",
"count", "step", "setpause", "setstepmul", "isrunning", NULL};
"count", "step", "setpause", "setstepmul", "isrunning", "gen", NULL};
static const int optsnum[] = {LUA_GCSTOP, LUA_GCRESTART, LUA_GCCOLLECT,
LUA_GCCOUNT, LUA_GCSTEP, LUA_GCSETPAUSE, LUA_GCSETSTEPMUL,
LUA_GCISRUNNING};
LUA_GCISRUNNING, LUA_GCGEN};
int o = optsnum[luaL_checkoption(L, 1, "collect", opts)];
int ex = luaL_optint(L, 2, 0);
int res = lua_gc(L, o, ex);