barrier conditions rewritten to test first 'isblack' and then 'iswhite'

(during a pause all objects are white, so 'isblack' fails much more
often than 'iswhite')
This commit is contained in:
Roberto Ierusalimschy
2013-08-13 14:36:44 -03:00
parent 78b941039d
commit 3679d33b02
2 changed files with 11 additions and 9 deletions

4
lgc.c
View File

@@ -1,5 +1,5 @@
/*
** $Id: lgc.c,v 2.143 2013/08/07 12:18:11 roberto Exp roberto $
** $Id: lgc.c,v 2.144 2013/08/07 15:39:09 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -63,6 +63,8 @@
#define black2gray(x) resetbit(gch(x)->marked, BLACKBIT)
#define valiswhite(x) (iscollectable(x) && iswhite(gcvalue(x)))
#define isfinalized(x) testbit(gch(x)->marked, FINALIZEDBIT)
#define checkdeadkey(n) lua_assert(!ttisdeadkey(gkey(n)) || ttisnil(gval(n)))