diff options
Diffstat (limited to 'lgc.h')
-rw-r--r-- | lgc.h | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lgc.h,v 2.58 2012/09/11 12:53:08 roberto Exp roberto $ | 2 | ** $Id: lgc.h,v 2.59 2013/08/05 16:58:28 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 | */ |
@@ -97,8 +97,6 @@ | |||
97 | #define changewhite(x) ((x)->gch.marked ^= WHITEBITS) | 97 | #define changewhite(x) ((x)->gch.marked ^= WHITEBITS) |
98 | #define gray2black(x) l_setbit((x)->gch.marked, BLACKBIT) | 98 | #define gray2black(x) l_setbit((x)->gch.marked, BLACKBIT) |
99 | 99 | ||
100 | #define valiswhite(x) (iscollectable(x) && iswhite(gcvalue(x))) | ||
101 | |||
102 | #define luaC_white(g) cast(lu_byte, (g)->currentwhite & WHITEBITS) | 100 | #define luaC_white(g) cast(lu_byte, (g)->currentwhite & WHITEBITS) |
103 | 101 | ||
104 | 102 | ||
@@ -107,18 +105,20 @@ | |||
107 | #define luaC_checkGC(L) luaC_condGC(L, luaC_step(L);) | 105 | #define luaC_checkGC(L) luaC_condGC(L, luaC_step(L);) |
108 | 106 | ||
109 | 107 | ||
110 | #define luaC_barrier(L,p,v) { if (valiswhite(v) && isblack(obj2gco(p))) \ | 108 | #define luaC_barrier(L,p,v) { \ |
109 | if (iscollectable(v) && isblack(obj2gco(p)) && iswhite(gcvalue(v))) \ | ||
111 | luaC_barrier_(L,obj2gco(p),gcvalue(v)); } | 110 | luaC_barrier_(L,obj2gco(p),gcvalue(v)); } |
112 | 111 | ||
113 | #define luaC_barrierback(L,p,v) { if (valiswhite(v) && isblack(obj2gco(p))) \ | 112 | #define luaC_barrierback(L,p,v) { \ |
113 | if (iscollectable(v) && isblack(obj2gco(p)) && iswhite(gcvalue(v))) \ | ||
114 | luaC_barrierback_(L,p); } | 114 | luaC_barrierback_(L,p); } |
115 | 115 | ||
116 | #define luaC_objbarrier(L,p,o) \ | 116 | #define luaC_objbarrier(L,p,o) { \ |
117 | { if (iswhite(obj2gco(o)) && isblack(obj2gco(p))) \ | 117 | if (isblack(obj2gco(p)) && iswhite(obj2gco(o))) \ |
118 | luaC_barrier_(L,obj2gco(p),obj2gco(o)); } | 118 | luaC_barrier_(L,obj2gco(p),obj2gco(o)); } |
119 | 119 | ||
120 | #define luaC_objbarrierback(L,p,o) \ | 120 | #define luaC_objbarrierback(L,p,o) \ |
121 | { if (iswhite(obj2gco(o)) && isblack(obj2gco(p))) luaC_barrierback_(L,p); } | 121 | { if (isblack(obj2gco(p)) && iswhite(obj2gco(o))) luaC_barrierback_(L,p); } |
122 | 122 | ||
123 | #define luaC_barrierproto(L,p,c) \ | 123 | #define luaC_barrierproto(L,p,c) \ |
124 | { if (isblack(obj2gco(p))) luaC_barrierproto_(L,p,c); } | 124 | { if (isblack(obj2gco(p))) luaC_barrierproto_(L,p,c); } |