diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2011-09-24 18:12:01 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2011-09-24 18:12:01 -0300 |
commit | 87912786af9125d062babe2497fc4cb664728eda (patch) | |
tree | 07cc2752b09679dfa8c61775cd54d01ea452e69d /lobject.h | |
parent | 5645a84368f2a515281da60f96e09d0fdeaf0470 (diff) | |
download | lua-87912786af9125d062babe2497fc4cb664728eda.tar.gz lua-87912786af9125d062babe2497fc4cb664728eda.tar.bz2 lua-87912786af9125d062babe2497fc4cb664728eda.zip |
dead objects are not collectable.
Diffstat (limited to 'lobject.h')
-rw-r--r-- | lobject.h | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lobject.h,v 2.60 2011/06/13 14:13:06 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 2.61 2011/07/04 20:29:02 roberto Exp roberto $ |
3 | ** Type definitions for Lua objects | 3 | ** Type definitions for Lua objects |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -132,7 +132,7 @@ typedef struct lua_TValue TValue; | |||
132 | #define ttislcf(o) checktag((o), LUA_TLCF) | 132 | #define ttislcf(o) checktag((o), LUA_TLCF) |
133 | #define ttisuserdata(o) checktag((o), ctb(LUA_TUSERDATA)) | 133 | #define ttisuserdata(o) checktag((o), ctb(LUA_TUSERDATA)) |
134 | #define ttisthread(o) checktag((o), ctb(LUA_TTHREAD)) | 134 | #define ttisthread(o) checktag((o), ctb(LUA_TTHREAD)) |
135 | #define ttisdeadkey(o) checktag((o), ctb(LUA_TDEADKEY)) | 135 | #define ttisdeadkey(o) checktag((o), LUA_TDEADKEY) |
136 | 136 | ||
137 | #define ttisequal(o1,o2) (rttype(o1) == rttype(o2)) | 137 | #define ttisequal(o1,o2) (rttype(o1) == rttype(o2)) |
138 | 138 | ||
@@ -151,6 +151,8 @@ typedef struct lua_TValue TValue; | |||
151 | #define hvalue(o) check_exp(ttistable(o), &val_(o).gc->h) | 151 | #define hvalue(o) check_exp(ttistable(o), &val_(o).gc->h) |
152 | #define bvalue(o) check_exp(ttisboolean(o), val_(o).b) | 152 | #define bvalue(o) check_exp(ttisboolean(o), val_(o).b) |
153 | #define thvalue(o) check_exp(ttisthread(o), &val_(o).gc->th) | 153 | #define thvalue(o) check_exp(ttisthread(o), &val_(o).gc->th) |
154 | /* a dead value may get the 'gc' field, but cannot access its contents */ | ||
155 | #define deadvalue(o) check_exp(ttisdeadkey(o), cast(void *, val_(o).gc)) | ||
154 | 156 | ||
155 | #define l_isfalse(o) (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0)) | 157 | #define l_isfalse(o) (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0)) |
156 | 158 | ||
@@ -224,7 +226,7 @@ typedef struct lua_TValue TValue; | |||
224 | val_(io).gc=cast(GCObject *, (x)); settt_(io, ctb(LUA_TPROTO)); \ | 226 | val_(io).gc=cast(GCObject *, (x)); settt_(io, ctb(LUA_TPROTO)); \ |
225 | checkliveness(G(L),io); } | 227 | checkliveness(G(L),io); } |
226 | 228 | ||
227 | #define setdeadvalue(obj) settt_(obj, ctb(LUA_TDEADKEY)) | 229 | #define setdeadvalue(obj) settt_(obj, LUA_TDEADKEY) |
228 | 230 | ||
229 | 231 | ||
230 | 232 | ||