diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-08-16 11:45:55 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-08-16 11:45:55 -0300 |
commit | da19c436cc361401563eeda2cca3d161a6ddeef7 (patch) | |
tree | 9d2d7e3f6c00d88dc659d123c79d4157ffd36ffb /lobject.h | |
parent | 0039feb9dae27e25c0c719f49d954741fb2babf3 (diff) | |
download | lua-da19c436cc361401563eeda2cca3d161a6ddeef7.tar.gz lua-da19c436cc361401563eeda2cca3d161a6ddeef7.tar.bz2 lua-da19c436cc361401563eeda2cca3d161a6ddeef7.zip |
cleaning the stage for generational collection
Diffstat (limited to 'lobject.h')
-rw-r--r-- | lobject.h | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lobject.h,v 1.141 2002/08/05 14:08:02 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 1.142 2002/08/06 17:06:56 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 | */ |
@@ -101,8 +101,9 @@ typedef union TString { | |||
101 | struct { | 101 | struct { |
102 | lu_hash hash; | 102 | lu_hash hash; |
103 | size_t len; | 103 | size_t len; |
104 | int marked; | ||
105 | union TString *nexthash; /* chain for hash table */ | 104 | union TString *nexthash; /* chain for hash table */ |
105 | lu_byte marked; | ||
106 | lu_byte reserved; | ||
106 | } tsv; | 107 | } tsv; |
107 | } TString; | 108 | } TString; |
108 | 109 | ||
@@ -117,7 +118,8 @@ typedef union Udata { | |||
117 | struct { | 118 | struct { |
118 | struct Table *metatable; | 119 | struct Table *metatable; |
119 | union Udata *next; /* chain for list of all udata */ | 120 | union Udata *next; /* chain for list of all udata */ |
120 | size_t len; /* least 2 bits reserved for gc mark */ | 121 | size_t len; |
122 | lu_byte marked; | ||
121 | } uv; | 123 | } uv; |
122 | } Udata; | 124 | } Udata; |
123 | 125 | ||
@@ -164,6 +166,7 @@ typedef struct UpVal { | |||
164 | TObject *v; /* points to stack or to its own value */ | 166 | TObject *v; /* points to stack or to its own value */ |
165 | struct UpVal *next; | 167 | struct UpVal *next; |
166 | TObject value; /* the value (when closed) */ | 168 | TObject value; /* the value (when closed) */ |
169 | lu_byte marked; | ||
167 | } UpVal; | 170 | } UpVal; |
168 | 171 | ||
169 | 172 | ||
@@ -219,11 +222,12 @@ typedef struct Table { | |||
219 | Node *node; | 222 | Node *node; |
220 | Node *firstfree; /* this position is free; all positions after it are full */ | 223 | Node *firstfree; /* this position is free; all positions after it are full */ |
221 | struct Table *next; | 224 | struct Table *next; |
222 | struct Table *mark; /* marked tables (point to itself when not marked) */ | 225 | struct Table *gclist; |
223 | int sizearray; /* size of `array' array */ | 226 | int sizearray; /* size of `array' array */ |
224 | lu_byte flags; /* 1<<p means tagmethod(p) is not present */ | 227 | lu_byte flags; /* 1<<p means tagmethod(p) is not present */ |
225 | lu_byte lsizenode; /* log2 of size of `node' array */ | 228 | lu_byte lsizenode; /* log2 of size of `node' array */ |
226 | lu_byte mode; | 229 | lu_byte mode; |
230 | lu_byte marked; | ||
227 | } Table; | 231 | } Table; |
228 | 232 | ||
229 | /* bit masks for `mode' */ | 233 | /* bit masks for `mode' */ |