aboutsummaryrefslogtreecommitdiff
path: root/lobject.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-11-13 09:49:19 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-11-13 09:49:19 -0200
commit3010eb05365e77065009db39d20ef9a4110479a6 (patch)
treed880230c27289095a21a7350568b114b8c743242 /lobject.h
parent2f91f95d94d3a27fee6b45c31ea9ab631924a8bf (diff)
downloadlua-3010eb05365e77065009db39d20ef9a4110479a6.tar.gz
lua-3010eb05365e77065009db39d20ef9a4110479a6.tar.bz2
lua-3010eb05365e77065009db39d20ef9a4110479a6.zip
all objects with several children (tables, closures, stacks, prototypes)
go to `gray' queue
Diffstat (limited to 'lobject.h')
-rw-r--r--lobject.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/lobject.h b/lobject.h
index 1867ee99..d0352c10 100644
--- a/lobject.h
+++ b/lobject.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.h,v 1.151 2002/11/04 12:31:44 roberto Exp roberto $ 2** $Id: lobject.h,v 1.152 2002/11/07 15:37:10 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*/
@@ -219,6 +219,7 @@ typedef struct Proto {
219 int sizep; /* size of `p' */ 219 int sizep; /* size of `p' */
220 int sizelocvars; 220 int sizelocvars;
221 int lineDefined; 221 int lineDefined;
222 GCObject *gclist;
222 lu_byte nupvalues; 223 lu_byte nupvalues;
223 lu_byte numparams; 224 lu_byte numparams;
224 lu_byte is_vararg; 225 lu_byte is_vararg;
@@ -249,19 +250,18 @@ typedef struct UpVal {
249** Closures 250** Closures
250*/ 251*/
251 252
253#define ClosureHeader \
254 CommonHeader; lu_byte isC; lu_byte nupvalues; GCObject *gclist
255
252typedef struct CClosure { 256typedef struct CClosure {
253 CommonHeader; 257 ClosureHeader;
254 lu_byte isC; /* 0 for Lua functions, 1 for C functions */
255 lu_byte nupvalues;
256 lua_CFunction f; 258 lua_CFunction f;
257 TObject upvalue[1]; 259 TObject upvalue[1];
258} CClosure; 260} CClosure;
259 261
260 262
261typedef struct LClosure { 263typedef struct LClosure {
262 CommonHeader; 264 ClosureHeader;
263 lu_byte isC;
264 lu_byte nupvalues; /* first five fields must be equal to CClosure!! */
265 struct Proto *p; 265 struct Proto *p;
266 TObject g; /* global table for this closure */ 266 TObject g; /* global table for this closure */
267 UpVal *upvals[1]; 267 UpVal *upvals[1];
@@ -298,7 +298,7 @@ typedef struct Table {
298 TObject *array; /* array part */ 298 TObject *array; /* array part */
299 Node *node; 299 Node *node;
300 Node *firstfree; /* this position is free; all positions after it are full */ 300 Node *firstfree; /* this position is free; all positions after it are full */
301 struct Table *gclist; 301 GCObject *gclist;
302 int sizearray; /* size of `array' array */ 302 int sizearray; /* size of `array' array */
303} Table; 303} Table;
304 304