diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2013-08-13 14:36:44 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2013-08-13 14:36:44 -0300 |
commit | 3679d33b02782ff7d7d0fa163b815902b189c89e (patch) | |
tree | 338eba3fe410d3358da9189eb64ccc928742d4de /lgc.c | |
parent | 78b941039d732b01933baa44e2f14ae206e4d1f2 (diff) | |
download | lua-3679d33b02782ff7d7d0fa163b815902b189c89e.tar.gz lua-3679d33b02782ff7d7d0fa163b815902b189c89e.tar.bz2 lua-3679d33b02782ff7d7d0fa163b815902b189c89e.zip |
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')
Diffstat (limited to 'lgc.c')
-rw-r--r-- | lgc.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lgc.c,v 2.143 2013/08/07 12:18:11 roberto Exp roberto $ | 2 | ** $Id: lgc.c,v 2.144 2013/08/07 15:39:09 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 | */ |
@@ -63,6 +63,8 @@ | |||
63 | #define black2gray(x) resetbit(gch(x)->marked, BLACKBIT) | 63 | #define black2gray(x) resetbit(gch(x)->marked, BLACKBIT) |
64 | 64 | ||
65 | 65 | ||
66 | #define valiswhite(x) (iscollectable(x) && iswhite(gcvalue(x))) | ||
67 | |||
66 | #define isfinalized(x) testbit(gch(x)->marked, FINALIZEDBIT) | 68 | #define isfinalized(x) testbit(gch(x)->marked, FINALIZEDBIT) |
67 | 69 | ||
68 | #define checkdeadkey(n) lua_assert(!ttisdeadkey(gkey(n)) || ttisnil(gval(n))) | 70 | #define checkdeadkey(n) lua_assert(!ttisdeadkey(gkey(n)) || ttisnil(gval(n))) |