diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-09-11 14:38:42 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-09-11 14:38:42 -0300 |
commit | 787a78f83e0484c9e9698189982e2f309808fae8 (patch) | |
tree | 0682eddf4ea5a49bf5078bac937a36f90057df57 /lgc.c | |
parent | 70c8a310925d6c41c3ef4f7feeae604a4c9a3a95 (diff) | |
download | lua-787a78f83e0484c9e9698189982e2f309808fae8.tar.gz lua-787a78f83e0484c9e9698189982e2f309808fae8.tar.bz2 lua-787a78f83e0484c9e9698189982e2f309808fae8.zip |
new scheme for buffers
Diffstat (limited to 'lgc.c')
-rw-r--r-- | lgc.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lgc.c,v 1.63 2000/08/22 17:44:17 roberto Exp roberto $ | 2 | ** $Id: lgc.c,v 1.64 2000/08/28 17:57:04 roberto Exp roberto $ |
3 | ** Garbage Collector | 3 | ** Garbage Collector |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -333,6 +333,8 @@ void luaC_collect (lua_State *L, int all) { | |||
333 | } | 333 | } |
334 | 334 | ||
335 | 335 | ||
336 | #define MINBUFFER 256 | ||
337 | |||
336 | long lua_collectgarbage (lua_State *L, long limit) { | 338 | long lua_collectgarbage (lua_State *L, long limit) { |
337 | unsigned long recovered = L->nblocks; /* to subtract `nblocks' after gc */ | 339 | unsigned long recovered = L->nblocks; /* to subtract `nblocks' after gc */ |
338 | markall(L); | 340 | markall(L); |
@@ -340,8 +342,8 @@ long lua_collectgarbage (lua_State *L, long limit) { | |||
340 | luaC_collect(L, 0); | 342 | luaC_collect(L, 0); |
341 | recovered = recovered - L->nblocks; | 343 | recovered = recovered - L->nblocks; |
342 | L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit; | 344 | L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit; |
343 | if (L->Mbuffsize > L->Mbuffnext*4) { /* is buffer too big? */ | 345 | if (L->Mbuffsize > MINBUFFER*2) { /* is buffer too big? */ |
344 | L->Mbuffsize /= 2; /* still larger than Mbuffnext*2 */ | 346 | L->Mbuffsize /= 2; /* still larger than MINBUFFER */ |
345 | luaM_reallocvector(L, L->Mbuffer, L->Mbuffsize, char); | 347 | luaM_reallocvector(L, L->Mbuffer, L->Mbuffsize, char); |
346 | } | 348 | } |
347 | callgcTM(L, &luaO_nilobject); | 349 | callgcTM(L, &luaO_nilobject); |