From 916587508c117decb2f4d70677fa06be18803874 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Sun, 11 Oct 2009 17:02:19 -0300 Subject: parser keeps list of active local variables in a single dynamic array, therefore saving C stack space --- lparser.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'lparser.h') diff --git a/lparser.h b/lparser.h index 850b787d..4fcdc621 100644 --- a/lparser.h +++ b/lparser.h @@ -1,5 +1,5 @@ /* -** $Id: lparser.h,v 1.59 2009/09/28 16:32:50 roberto Exp roberto $ +** $Id: lparser.h,v 1.60 2009/09/30 15:38:37 roberto Exp roberto $ ** Lua Parser ** See Copyright Notice in lua.h */ @@ -51,6 +51,14 @@ typedef struct vardesc { } vardesc; +/* list of all active local variables */ +typedef struct Varlist { + vardesc *actvar; + int nactvar; + int actvarsize; +} Varlist; + + struct BlockCnt; /* defined in lparser.c */ @@ -68,16 +76,16 @@ typedef struct FuncState { int freereg; /* first free register */ int nk; /* number of elements in `k' */ int np; /* number of elements in `p' */ + int firstlocal; /* index of first local var of this function */ short nlocvars; /* number of elements in `locvars' */ lu_byte nactvar; /* number of active local variables */ lu_byte nups; /* number of upvalues */ lu_byte envreg; /* register holding current lexical environment */ - vardesc actvar[LUAI_MAXVARS]; /* stack of active variables */ } FuncState; LUAI_FUNC Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, - const char *name); + Varlist *varl, const char *name); #endif -- cgit v1.2.3-55-g6feb