summaryrefslogtreecommitdiff
path: root/src/lstate.h
diff options
context:
space:
mode:
authorLua Team <team@lua.org>2000-11-06 12:00:00 +0000
committerrepogen <>2000-11-06 12:00:00 +0000
commit8cb71cb5548e3138e5d4e4744f52c79d9fafb116 (patch)
tree25859eb162c67eafc46866e0ec3a9a7ebf93157a /src/lstate.h
parentb7610da5fed99f59ac73ae452da8839a0f2c1bda (diff)
downloadlua-github-4.0.tar.gz
Lua 4.04.0
Diffstat (limited to 'src/lstate.h')
-rw-r--r--src/lstate.h87
1 files changed, 35 insertions, 52 deletions
diff --git a/src/lstate.h b/src/lstate.h
index 168257dd..0c8f5521 100644
--- a/src/lstate.h
+++ b/src/lstate.h
@@ -1,5 +1,5 @@
/*
-** $Id: lstate.h,v 1.19 1999/05/11 20:08:20 roberto Exp $
+** $Id: lstate.h,v 1.41 2000/10/05 13:00:17 roberto Exp $
** Global State
** See Copyright Notice in lua.h
*/
@@ -7,88 +7,71 @@
#ifndef lstate_h
#define lstate_h
-#include <setjmp.h>
-
#include "lobject.h"
#include "lua.h"
#include "luadebug.h"
-#define GARBAGE_BLOCK 150
-
-typedef int StkId; /* index to stack elements */
+typedef TObject *StkId; /* index to stack elements */
/*
-** "jmp_buf" may be an array, so it is better to make sure it has an
-** address (and not that it *is* an address...)
+** marks for Reference array
*/
-struct lua_longjmp {
- jmp_buf b;
-};
+#define NONEXT -1 /* to end the free list */
+#define HOLD -2
+#define COLLECTED -3
+#define LOCK -4
-struct Stack {
- TObject *top;
- TObject *stack;
- TObject *last;
+struct Ref {
+ TObject o;
+ int st; /* can be LOCK, HOLD, COLLECTED, or next (for free list) */
};
-struct C_Lua_Stack {
- StkId base; /* when Lua calls C or C calls Lua, points to */
- /* the first slot after the last parameter. */
- StkId lua2C; /* points to first element of "array" lua2C */
- int num; /* size of "array" lua2C */
-};
+
+struct lua_longjmp; /* defined in ldo.c */
+struct TM; /* defined in ltm.h */
typedef struct stringtable {
int size;
- int nuse; /* number of elements (including EMPTYs) */
- TaggedString **hash;
+ lint32 nuse; /* number of elements */
+ TString **hash;
} stringtable;
-enum Status {LOCK, HOLD, FREE, COLLECTED};
-
-struct ref {
- TObject o;
- enum Status status;
-};
-
struct lua_State {
/* thread-specific state */
- struct Stack stack; /* Lua stack */
- struct C_Lua_Stack Cstack; /* C2lua struct */
+ StkId top; /* first free slot in the stack */
+ StkId stack; /* stack base */
+ StkId stack_last; /* last free slot in the stack */
+ int stacksize;
+ StkId Cbase; /* base for current C function */
struct lua_longjmp *errorJmp; /* current error recover point */
char *Mbuffer; /* global buffer */
- int Mbuffbase; /* current first position of Mbuffer */
- int Mbuffsize; /* size of Mbuffer */
- int Mbuffnext; /* next position to fill in Mbuffer */
- struct C_Lua_Stack *Cblocks;
- int numCblocks; /* number of nested Cblocks */
- int debug;
- lua_CHFunction callhook;
- lua_LHFunction linehook;
+ size_t Mbuffsize; /* size of Mbuffer */
/* global state */
- GCnode rootproto; /* list of all prototypes */
- GCnode rootcl; /* list of all closures */
- GCnode roottable; /* list of all tables */
- GCnode rootglobal; /* list of strings with global values */
- stringtable *string_root; /* array of hash tables for strings and udata */
- struct IM *IMtable; /* table for tag methods */
- int last_tag; /* last used tag in IMtable */
- struct ref *refArray; /* locked objects */
+ Proto *rootproto; /* list of all prototypes */
+ Closure *rootcl; /* list of all closures */
+ Hash *roottable; /* list of all tables */
+ stringtable strt; /* hash table for strings */
+ stringtable udt; /* hash table for udata */
+ Hash *gt; /* table for globals */
+ struct TM *TMtable; /* table for tag methods */
+ int last_tag; /* last used tag in TMtable */
+ struct Ref *refArray; /* locked objects */
int refSize; /* size of refArray */
+ int refFree; /* list of free positions in refArray */
unsigned long GCthreshold;
- unsigned long nblocks; /* number of 'blocks' currently allocated */
+ unsigned long nblocks; /* number of `bytes' currently allocated */
+ lua_Hook callhook;
+ lua_Hook linehook;
+ int allowhooks;
};
-#define L lua_state
-
-
#endif