diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2008-06-26 16:42:45 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2008-06-26 16:42:45 -0300 |
commit | 0c8f5fc2fdcadc8fe6e89c32bf3a1f7456328899 (patch) | |
tree | 3c62e2e59064196eca2fe662196e73e3c45b63cd /ltests.c | |
parent | 1527d8f00d4a99997cf73f50fe159ddba8681f8f (diff) | |
download | lua-0c8f5fc2fdcadc8fe6e89c32bf3a1f7456328899.tar.gz lua-0c8f5fc2fdcadc8fe6e89c32bf3a1f7456328899.tar.bz2 lua-0c8f5fc2fdcadc8fe6e89c32bf3a1f7456328899.zip |
simplification in the handling of finalizers: no more 'tmudata' list +
no more GCSsweeptmu collector's state
Diffstat (limited to 'ltests.c')
-rw-r--r-- | ltests.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ltests.c,v 2.51 2008/06/13 17:07:10 roberto Exp roberto $ | 2 | ** $Id: ltests.c,v 2.52 2008/06/23 16:50:34 roberto Exp roberto $ |
3 | ** Internal Module for Debugging of the Lua Implementation | 3 | ** Internal Module for Debugging of the Lua Implementation |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -365,10 +365,15 @@ int lua_checkmemory (lua_State *L) { | |||
365 | GCObject *o; | 365 | GCObject *o; |
366 | UpVal *uv; | 366 | UpVal *uv; |
367 | checkstack(g, g->mainthread); | 367 | checkstack(g, g->mainthread); |
368 | for (o = g->rootgc; o != NULL; o = gch(o)->next) | 368 | for (o = g->rootgc; o != obj2gco(g->mainthread); o = gch(o)->next) { |
369 | lua_assert(!testbits(o->gch.marked, bit2mask(SEPARATED, SFIXEDBIT))); | ||
369 | checkobject(g, o); | 370 | checkobject(g, o); |
370 | for (o = g->tmudata; o != NULL; o = gch(o)->next) { | 371 | } |
371 | lua_assert(!isdead(g, o)); | 372 | lua_assert(testbit(o->gch.marked, SFIXEDBIT)); |
373 | for (o = gch(o)->next; o != NULL; o = gch(o)->next) { | ||
374 | lua_assert(gch(o)->tt == LUA_TUSERDATA && | ||
375 | !isdead(g, o) && | ||
376 | testbit(o->gch.marked, SEPARATED)); | ||
372 | checkobject(g, o); | 377 | checkobject(g, o); |
373 | } | 378 | } |
374 | for (uv = g->uvhead.u.l.next; uv != &g->uvhead; uv = uv->u.l.next) { | 379 | for (uv = g->uvhead.u.l.next; uv != &g->uvhead; uv = uv->u.l.next) { |
@@ -535,7 +540,6 @@ static int gcstate (lua_State *L) { | |||
535 | switch(G(L)->gcstate) { | 540 | switch(G(L)->gcstate) { |
536 | case GCSpropagate: lua_pushstring(L, "propagate"); break; | 541 | case GCSpropagate: lua_pushstring(L, "propagate"); break; |
537 | case GCSsweepstring: lua_pushstring(L, "sweep strings"); break; | 542 | case GCSsweepstring: lua_pushstring(L, "sweep strings"); break; |
538 | case GCSsweeptmu: lua_pushstring(L, "sweep udata with __gc"); break; | ||
539 | case GCSsweep: lua_pushstring(L, "sweep"); break; | 543 | case GCSsweep: lua_pushstring(L, "sweep"); break; |
540 | case GCSfinalize: lua_pushstring(L, "finalize"); break; | 544 | case GCSfinalize: lua_pushstring(L, "finalize"); break; |
541 | default: lua_assert(0); | 545 | default: lua_assert(0); |