aboutsummaryrefslogtreecommitdiff
path: root/lobject.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-10-04 15:51:04 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-10-04 15:51:04 -0200
commit4343420d4d559a7d4cdacdbc1fd61552dcf59f04 (patch)
tree57e0bdd41e2f3a4ab70d3150022569751e3d02ad /lobject.h
parent1f7103e05d01a6a4c300a73bcfc8d9b17b2c20a4 (diff)
downloadlua-4343420d4d559a7d4cdacdbc1fd61552dcf59f04.tar.gz
lua-4343420d4d559a7d4cdacdbc1fd61552dcf59f04.tar.bz2
lua-4343420d4d559a7d4cdacdbc1fd61552dcf59f04.zip
simplified version of `gc' tag method (only for userdata now).
Diffstat (limited to 'lobject.h')
-rw-r--r--lobject.h24
1 files changed, 9 insertions, 15 deletions
diff --git a/lobject.h b/lobject.h
index 2e69ebf5..99239909 100644
--- a/lobject.h
+++ b/lobject.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.h,v 1.29 1999/08/16 20:52:00 roberto Exp roberto $ 2** $Id: lobject.h,v 1.30 1999/09/06 20:34:18 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*/
@@ -86,20 +86,12 @@ typedef struct TObject {
86 86
87 87
88/* 88/*
89** generic header for garbage collector lists
90*/
91typedef struct GCnode {
92 struct GCnode *next;
93 int marked;
94} GCnode;
95
96
97/*
98** String headers for string table 89** String headers for string table
99*/ 90*/
100 91
101typedef struct TaggedString { 92typedef struct TaggedString {
102 GCnode head; 93 struct TaggedString *next;
94 int marked;
103 unsigned long hash; 95 unsigned long hash;
104 int constindex; /* hint to reuse constants (= -1 if this is a userdata) */ 96 int constindex; /* hint to reuse constants (= -1 if this is a userdata) */
105 union { 97 union {
@@ -122,7 +114,8 @@ typedef struct TaggedString {
122** Function Prototypes 114** Function Prototypes
123*/ 115*/
124typedef struct TProtoFunc { 116typedef struct TProtoFunc {
125 GCnode head; 117 struct TProtoFunc *next;
118 int marked;
126 struct TObject *consts; 119 struct TObject *consts;
127 int nconsts; 120 int nconsts;
128 Byte *code; /* ends with opcode ENDCODE */ 121 Byte *code; /* ends with opcode ENDCODE */
@@ -157,7 +150,8 @@ typedef struct LocVar {
157** Closures 150** Closures
158*/ 151*/
159typedef struct Closure { 152typedef struct Closure {
160 GCnode head; 153 struct Closure *next;
154 int marked;
161 int nelems; /* not included the first one (always the prototype) */ 155 int nelems; /* not included the first one (always the prototype) */
162 TObject consts[1]; /* at least one for prototype */ 156 TObject consts[1]; /* at least one for prototype */
163} Closure; 157} Closure;
@@ -170,7 +164,8 @@ typedef struct node {
170} Node; 164} Node;
171 165
172typedef struct Hash { 166typedef struct Hash {
173 GCnode head; 167 struct Hash *next;
168 int marked;
174 Node *node; 169 Node *node;
175 int nhash; 170 int nhash;
176 int nuse; 171 int nuse;
@@ -189,7 +184,6 @@ extern const TObject luaO_nilobject;
189 : luaO_equalval(t1,t2)) 184 : luaO_equalval(t1,t2))
190int luaO_equalval (const TObject *t1, const TObject *t2); 185int luaO_equalval (const TObject *t1, const TObject *t2);
191int luaO_redimension (int oldsize); 186int luaO_redimension (int oldsize);
192void luaO_insertlist (GCnode *root, GCnode *node);
193int luaO_str2d (const char *s, real *result); 187int luaO_str2d (const char *s, real *result);
194 188
195#ifdef OLD_ANSI 189#ifdef OLD_ANSI