aboutsummaryrefslogtreecommitdiff
path: root/lparser.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-07-27 15:09:01 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-07-27 15:09:01 -0300
commit59bcd137ae09456d9315b5c9b0cce520230423a7 (patch)
tree8b9a1a1650016cab52c93a6932428d564b51002a /lparser.h
parent5ab6d36d99a30cadeff18a9467ac88c114973554 (diff)
downloadlua-59bcd137ae09456d9315b5c9b0cce520230423a7.tar.gz
lua-59bcd137ae09456d9315b5c9b0cce520230423a7.tar.bz2
lua-59bcd137ae09456d9315b5c9b0cce520230423a7.zip
reducing even more use of C stack by the parser: struct 'FuncState'
does not need field 'L' + number of labels/gotos in a chunk may be limited to SHRT_MAX. (Also removed some non-needed 'unsigned's.)
Diffstat (limited to 'lparser.h')
-rw-r--r--lparser.h13
1 files changed, 6 insertions, 7 deletions
diff --git a/lparser.h b/lparser.h
index de37e125..24abb050 100644
--- a/lparser.h
+++ b/lparser.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lparser.h,v 1.67 2011/02/07 17:14:50 roberto Exp roberto $ 2** $Id: lparser.h,v 1.68 2011/02/23 13:13:10 roberto Exp roberto $
3** Lua Parser 3** Lua Parser
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -55,7 +55,7 @@ typedef struct expdesc {
55 55
56/* description of active local variable */ 56/* description of active local variable */
57typedef struct Vardesc { 57typedef struct Vardesc {
58 unsigned short idx; /* variable index in stack */ 58 short idx; /* variable index in stack */
59} Vardesc; 59} Vardesc;
60 60
61 61
@@ -98,18 +98,17 @@ typedef struct FuncState {
98 Table *h; /* table to find (and reuse) elements in `k' */ 98 Table *h; /* table to find (and reuse) elements in `k' */
99 struct FuncState *prev; /* enclosing function */ 99 struct FuncState *prev; /* enclosing function */
100 struct LexState *ls; /* lexical state */ 100 struct LexState *ls; /* lexical state */
101 struct lua_State *L; /* copy of the Lua state */
102 struct BlockCnt *bl; /* chain of current blocks */ 101 struct BlockCnt *bl; /* chain of current blocks */
103 int pc; /* next position to code (equivalent to `ncode') */ 102 int pc; /* next position to code (equivalent to `ncode') */
104 int lasttarget; /* `pc' of last `jump target' */ 103 int lasttarget; /* 'label' of last 'jump label' */
105 int jpc; /* list of pending jumps to `pc' */ 104 int jpc; /* list of pending jumps to `pc' */
106 int freereg; /* first free register */
107 int nk; /* number of elements in `k' */ 105 int nk; /* number of elements in `k' */
108 int np; /* number of elements in `p' */ 106 int np; /* number of elements in `p' */
109 int firstlocal; /* index of first local var of this function */ 107 int firstlocal; /* index of first local var (in Dyndata array) */
110 short nlocvars; /* number of elements in `locvars' */ 108 short nlocvars; /* number of elements in 'f->locvars' */
111 lu_byte nactvar; /* number of active local variables */ 109 lu_byte nactvar; /* number of active local variables */
112 lu_byte nups; /* number of upvalues */ 110 lu_byte nups; /* number of upvalues */
111 lu_byte freereg; /* first free register */
113} FuncState; 112} FuncState;
114 113
115 114