aboutsummaryrefslogtreecommitdiff
path: root/lparser.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-03-04 17:18:15 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-03-04 17:18:15 -0300
commit563de491be90601f23a735aede89ea9a3ef86ee9 (patch)
treec92677f388289ead55c8a8778493b0af7e41f159 /lparser.h
parent29e01934253adf5fbf43faff81d87d7470cef8ce (diff)
downloadlua-563de491be90601f23a735aede89ea9a3ef86ee9.tar.gz
lua-563de491be90601f23a735aede89ea9a3ef86ee9.tar.bz2
lua-563de491be90601f23a735aede89ea9a3ef86ee9.zip
a better way to control optimizations.
Diffstat (limited to 'lparser.h')
-rw-r--r--lparser.h19
1 files changed, 4 insertions, 15 deletions
diff --git a/lparser.h b/lparser.h
index a64b8dda..adc7f012 100644
--- a/lparser.h
+++ b/lparser.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lparser.h,v 1.8 2000/03/03 14:58:26 roberto Exp roberto $ 2** $Id: lparser.h,v 1.9 2000/03/03 18:53:17 roberto Exp roberto $
3** LL(1) Parser and code generator for Lua 3** LL(1) Parser and code generator for Lua
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -46,13 +46,11 @@
46** Expression descriptor 46** Expression descriptor
47*/ 47*/
48 48
49#define NOJUMPS 0
50
51typedef enum { 49typedef enum {
52 VGLOBAL, /* info is constant index of global name */ 50 VGLOBAL, /* info is constant index of global name */
53 VLOCAL, /* info is stack index */ 51 VLOCAL, /* info is stack index */
54 VINDEXED, /* info is info of the index expression */ 52 VINDEXED,
55 VEXP /* info is NOJUMPS if exp has no internal jumps */ 53 VEXP /* info is jump target if exp has internal jumps */
56} expkind; 54} expkind;
57 55
58typedef struct expdesc { 56typedef struct expdesc {
@@ -61,22 +59,13 @@ typedef struct expdesc {
61} expdesc; 59} expdesc;
62 60
63 61
64/*
65** Expression List descriptor:
66** tells number of expressions in the list,
67** and gives the `info' of last expression.
68*/
69typedef struct listdesc {
70 int n;
71 int info; /* 0 if last expression has no internal jumps */
72} listdesc;
73
74 62
75/* state needed to generate code for a given function */ 63/* state needed to generate code for a given function */
76typedef struct FuncState { 64typedef struct FuncState {
77 TProtoFunc *f; /* current function header */ 65 TProtoFunc *f; /* current function header */
78 struct FuncState *prev; /* enclosing function */ 66 struct FuncState *prev; /* enclosing function */
79 int pc; /* next position to code */ 67 int pc; /* next position to code */
68 int lasttarget; /* `pc' of last `jump target' */
80 int stacksize; /* number of values on activation register */ 69 int stacksize; /* number of values on activation register */
81 int nlocalvar; /* number of active local variables */ 70 int nlocalvar; /* number of active local variables */
82 int nupvalues; /* number of upvalues */ 71 int nupvalues; /* number of upvalues */