From 4ac58853dc820127a11a14ed8bde1fae9458369e Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 19 Jan 2001 11:20:30 -0200 Subject: thead-specific state separated from "global" state --- lstate.h | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'lstate.h') diff --git a/lstate.h b/lstate.h index abd212ad..c7735b04 100644 --- a/lstate.h +++ b/lstate.h @@ -1,5 +1,5 @@ /* -** $Id: lstate.h,v 1.42 2000/11/24 17:39:56 roberto Exp roberto $ +** $Id: lstate.h,v 1.43 2000/12/26 18:46:09 roberto Exp roberto $ ** Global State ** See Copyright Notice in lua.h */ @@ -42,24 +42,17 @@ typedef struct stringtable { } stringtable; - -struct lua_State { - /* thread-specific state */ - 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 */ +/* +** "global state", shared by all threads of this state +*/ +typedef struct global_State { char *Mbuffer; /* global buffer */ size_t Mbuffsize; /* size of Mbuffer */ - /* global state */ 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 sizeTM; /* size of TMtable */ int ntag; /* number of tags in TMtable */ @@ -69,11 +62,29 @@ struct lua_State { int refFree; /* list of free positions in refArray */ mem_int GCthreshold; mem_int nblocks; /* number of `bytes' currently allocated */ +} global_State; + + +/* +** "per thread" state +*/ +struct lua_State { + 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 */ + Hash *gt; /* table for globals */ lua_Hook callhook; lua_Hook linehook; int allowhooks; + global_State *G; }; +#define G(L) (L->G) + + #endif -- cgit v1.2.3-55-g6feb