diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-07-18 10:36:14 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-07-18 10:36:14 -0300 |
| commit | ca41b43f53562e64abe433d6346d174c92548603 (patch) | |
| tree | 03f7a99f76359fc1e0bbc45fc13e579ff2aafabb /lstate.h | |
| parent | 3511e186cde4b78f268d17199d0f46fb3eaa9638 (diff) | |
| download | lua-ca41b43f53562e64abe433d6346d174c92548603.tar.gz lua-ca41b43f53562e64abe433d6346d174c92548603.tar.bz2 lua-ca41b43f53562e64abe433d6346d174c92548603.zip | |
type 'TString' refers directly to the structure inside the union
(union used only for size purposes)
Diffstat (limited to 'lstate.h')
| -rw-r--r-- | lstate.h | 14 |
1 files changed, 3 insertions, 11 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lstate.h,v 2.110 2014/07/17 17:27:49 roberto Exp roberto $ | 2 | ** $Id: lstate.h,v 2.111 2014/07/18 12:17:54 roberto Exp roberto $ |
| 3 | ** Global State | 3 | ** Global State |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -174,7 +174,7 @@ struct lua_State { | |||
| 174 | */ | 174 | */ |
| 175 | union GCUnion { | 175 | union GCUnion { |
| 176 | GCObject gc; /* common header */ | 176 | GCObject gc; /* common header */ |
| 177 | union TString ts; | 177 | struct TString ts; |
| 178 | union Udata u; | 178 | union Udata u; |
| 179 | union Closure cl; | 179 | union Closure cl; |
| 180 | struct Table h; | 180 | struct Table h; |
| @@ -186,9 +186,8 @@ union GCUnion { | |||
| 186 | #define cast_u(o) cast(union GCUnion *, (o)) | 186 | #define cast_u(o) cast(union GCUnion *, (o)) |
| 187 | 187 | ||
| 188 | /* macros to convert a GCObject into a specific value */ | 188 | /* macros to convert a GCObject into a specific value */ |
| 189 | #define rawgco2ts(o) \ | 189 | #define gco2ts(o) \ |
| 190 | check_exp(novariant((o)->tt) == LUA_TSTRING, &((cast_u(o))->ts)) | 190 | check_exp(novariant((o)->tt) == LUA_TSTRING, &((cast_u(o))->ts)) |
| 191 | #define gco2ts(o) (&rawgco2ts(o)->tsv) | ||
| 192 | #define rawgco2u(o) check_exp((o)->tt == LUA_TUSERDATA, &((cast_u(o))->u)) | 191 | #define rawgco2u(o) check_exp((o)->tt == LUA_TUSERDATA, &((cast_u(o))->u)) |
| 193 | #define gco2u(o) (&rawgco2u(o)->uv) | 192 | #define gco2u(o) (&rawgco2u(o)->uv) |
| 194 | #define gco2lcl(o) check_exp((o)->tt == LUA_TLCL, &((cast_u(o))->cl.l)) | 193 | #define gco2lcl(o) check_exp((o)->tt == LUA_TLCL, &((cast_u(o))->cl.l)) |
| @@ -204,13 +203,6 @@ union GCUnion { | |||
| 204 | #define obj2gco(v) \ | 203 | #define obj2gco(v) \ |
| 205 | check_exp(novariant((v)->tt) < LUA_TDEADKEY, (&(cast_u(v)->gc))) | 204 | check_exp(novariant((v)->tt) < LUA_TDEADKEY, (&(cast_u(v)->gc))) |
| 206 | 205 | ||
| 207 | /* | ||
| 208 | ** macro to convert a TString into a GCObject. | ||
| 209 | ** (TString is a union, and therefore needs an access slightly different | ||
| 210 | ** from the other objects.) | ||
| 211 | */ | ||
| 212 | #define ts2gco(v) (obj2gco(&(v)->tsv)) | ||
| 213 | |||
| 214 | 206 | ||
| 215 | /* actual number of total bytes allocated */ | 207 | /* actual number of total bytes allocated */ |
| 216 | #define gettotalbytes(g) ((g)->totalbytes + (g)->GCdebt) | 208 | #define gettotalbytes(g) ((g)->totalbytes + (g)->GCdebt) |
