aboutsummaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-09-29 09:42:13 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-09-29 09:42:13 -0300
commitdad808a73a98a23729614b8814728d76b4e5d577 (patch)
tree945fabce1906c5f08fe6512476d7ca3d84017bca /lgc.c
parentca7fd50a4ec2f1b41292f859ba0d5e52a2b22a5c (diff)
downloadlua-dad808a73a98a23729614b8814728d76b4e5d577.tar.gz
lua-dad808a73a98a23729614b8814728d76b4e5d577.tar.bz2
lua-dad808a73a98a23729614b8814728d76b4e5d577.zip
new way to count `nblocks' for GC (try to count bytes).
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lgc.c b/lgc.c
index 9e84919f..296179a6 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 1.66 2000/09/19 08:42:35 roberto Exp roberto $ 2** $Id: lgc.c,v 1.67 2000/09/25 14:52:10 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*/
@@ -254,7 +254,7 @@ static void collectstringtab (lua_State *L, int limit) {
254 else { /* collect */ 254 else { /* collect */
255 *p = next->nexthash; 255 *p = next->nexthash;
256 L->strt.nuse--; 256 L->strt.nuse--;
257 L->nblocks -= gcsizestring(L, next->u.s.len); 257 L->nblocks -= sizestring(next->u.s.len);
258 luaM_free(L, next); 258 luaM_free(L, next);
259 } 259 }
260 } 260 }
@@ -343,7 +343,9 @@ long lua_collectgarbage (lua_State *L, long limit) {
343 recovered = recovered - L->nblocks; 343 recovered = recovered - L->nblocks;
344 L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit; 344 L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit;
345 if (L->Mbuffsize > MINBUFFER*2) { /* is buffer too big? */ 345 if (L->Mbuffsize > MINBUFFER*2) { /* is buffer too big? */
346 L->Mbuffsize /= 2; /* still larger than MINBUFFER */ 346 size_t diff = L->Mbuffsize/2;
347 L->Mbuffsize -= diff; /* still larger than MINBUFFER */
348 L->nblocks -= diff*sizeof(char);
347 luaM_reallocvector(L, L->Mbuffer, L->Mbuffsize, char); 349 luaM_reallocvector(L, L->Mbuffer, L->Mbuffsize, char);
348 } 350 }
349 callgcTM(L, &luaO_nilobject); 351 callgcTM(L, &luaO_nilobject);