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 | ||
