diff options
Diffstat (limited to 'lapi.c')
-rw-r--r-- | lapi.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lapi.c,v 2.159 2011/11/30 12:32:05 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 2.160 2012/05/11 19:22:33 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 | */ |
@@ -1046,16 +1046,16 @@ LUA_API int lua_gc (lua_State *L, int what, int data) { | |||
1046 | case LUA_GCSTEP: { | 1046 | case LUA_GCSTEP: { |
1047 | if (g->gckind == KGC_GEN) { /* generational mode? */ | 1047 | if (g->gckind == KGC_GEN) { /* generational mode? */ |
1048 | res = (g->lastmajormem == 0); /* 1 if will do major collection */ | 1048 | res = (g->lastmajormem == 0); /* 1 if will do major collection */ |
1049 | luaC_step(L); /* do a single step */ | 1049 | luaC_forcestep(L); /* do a single step */ |
1050 | } | 1050 | } |
1051 | else { | 1051 | else { |
1052 | while (data-- >= 0) { | 1052 | lu_mem debt = cast(lu_mem, data) * 1024; /* count in Kbytes */ |
1053 | luaC_step(L); | 1053 | if (g->gcrunning) |
1054 | if (g->gcstate == GCSpause) { /* end of cycle? */ | 1054 | debt += g->GCdebt; /* include current debt */ |
1055 | res = 1; /* signal it */ | 1055 | luaE_setdebt(g, debt); |
1056 | break; | 1056 | luaC_forcestep(L); |
1057 | } | 1057 | if (g->gcstate == GCSpause) /* end of cycle? */ |
1058 | } | 1058 | res = 1; /* signal it */ |
1059 | } | 1059 | } |
1060 | break; | 1060 | break; |
1061 | } | 1061 | } |