corrected some places where an old object could end up in front

of a new one + minimal documentation about this problem
This commit is contained in:
Roberto Ierusalimschy
2010-05-10 15:23:45 -03:00
parent c006f085d9
commit 1c1a98e872
4 changed files with 15 additions and 10 deletions

5
lgc.h
View File

@@ -1,5 +1,5 @@
/*
** $Id: lgc.h,v 2.39 2010/05/07 18:43:51 roberto Exp roberto $
** $Id: lgc.h,v 2.40 2010/05/10 16:46:49 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -91,6 +91,9 @@
(!testbits((x)->gch.marked, WHITEBITS | bitmask(BLACKBIT)))
#define isold(x) testbit((x)->gch.marked, OLDBIT)
/* MOVE OLD rule: whenever an object is moved to the beginning of
a GC list, its old bit must be cleared */
#define resetoldbit(o) resetbit((o)->gch.marked, OLDBIT)
#define otherwhite(g) (g->currentwhite ^ WHITEBITS)