summaryrefslogtreecommitdiff
path: root/apps/plugins/lua/lparser.h
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2014-04-02 20:46:06 +0200
committerMarcin Bukat <marcin.bukat@gmail.com>2014-04-02 20:46:06 +0200
commitbfd0179042b0b02fb88748d54e56e7e208bb117f (patch)
tree42d5fd51574054caaf673420fca1ec962d62d2f2 /apps/plugins/lua/lparser.h
parent36378988ad4059982742f05f5eb50580b456840a (diff)
downloadrockbox-bfd0179042b0b02fb88748d54e56e7e208bb117f.zip
rockbox-bfd0179042b0b02fb88748d54e56e7e208bb117f.tar.gz
rockbox-bfd0179042b0b02fb88748d54e56e7e208bb117f.tar.bz2
rockbox-bfd0179042b0b02fb88748d54e56e7e208bb117f.tar.xz
Revert "Update lua plugin to 5.2.3"
FILE typedef to *void needs more work to not break sim and application builds. I checked only a few random native builds unfortunately. Sorry for inconvenience.
Diffstat (limited to 'apps/plugins/lua/lparser.h')
-rw-r--r--apps/plugins/lua/lparser.h75
1 files changed, 19 insertions, 56 deletions
diff --git a/apps/plugins/lua/lparser.h b/apps/plugins/lua/lparser.h
index 0346e3c..f9b8e24 100644
--- a/apps/plugins/lua/lparser.h
+++ b/apps/plugins/lua/lparser.h
@@ -1,5 +1,5 @@
/*
-** $Id: lparser.h,v 1.70.1.1 2013/04/12 18:48:47 roberto Exp $
+** $Id$
** Lua Parser
** See Copyright Notice in lua.h
*/
@@ -23,72 +23,34 @@ typedef enum {
VFALSE,
VK, /* info = index of constant in `k' */
VKNUM, /* nval = numerical value */
- VNONRELOC, /* info = result register */
VLOCAL, /* info = local register */
- VUPVAL, /* info = index of upvalue in 'upvalues' */
- VINDEXED, /* t = table register/upvalue; idx = index R/K */
+ VUPVAL, /* info = index of upvalue in `upvalues' */
+ VGLOBAL, /* info = index of table; aux = index of global name in `k' */
+ VINDEXED, /* info = table register; aux = index register (or `k') */
VJMP, /* info = instruction pc */
VRELOCABLE, /* info = instruction pc */
+ VNONRELOC, /* info = result register */
VCALL, /* info = instruction pc */
VVARARG /* info = instruction pc */
} expkind;
-
-#define vkisvar(k) (VLOCAL <= (k) && (k) <= VINDEXED)
-#define vkisinreg(k) ((k) == VNONRELOC || (k) == VLOCAL)
-
typedef struct expdesc {
expkind k;
union {
- struct { /* for indexed variables (VINDEXED) */
- short idx; /* index (R/K) */
- lu_byte t; /* table (register or upvalue) */
- lu_byte vt; /* whether 't' is register (VLOCAL) or upvalue (VUPVAL) */
- } ind;
- int info; /* for generic use */
- lua_Number nval; /* for VKNUM */
+ struct { int info, aux; } s;
+ lua_Number nval;
} u;
int t; /* patch list of `exit when true' */
int f; /* patch list of `exit when false' */
} expdesc;
-/* description of active local variable */
-typedef struct Vardesc {
- short idx; /* variable index in stack */
-} Vardesc;
-
-
-/* description of pending goto statements and label statements */
-typedef struct Labeldesc {
- TString *name; /* label identifier */
- int pc; /* position in code */
- int line; /* line where it appeared */
- lu_byte nactvar; /* local level where it appears in current block */
-} Labeldesc;
-
-
-/* list of labels or gotos */
-typedef struct Labellist {
- Labeldesc *arr; /* array */
- int n; /* number of entries in use */
- int size; /* array size */
-} Labellist;
-
-
-/* dynamic structures used by the parser */
-typedef struct Dyndata {
- struct { /* list of active local variables */
- Vardesc *arr;
- int n;
- int size;
- } actvar;
- Labellist gt; /* list of pending gotos */
- Labellist label; /* list of active labels */
-} Dyndata;
+typedef struct upvaldesc {
+ lu_byte k;
+ lu_byte info;
+} upvaldesc;
-/* control of blocks */
struct BlockCnt; /* defined in lparser.c */
@@ -98,22 +60,23 @@ typedef struct FuncState {
Table *h; /* table to find (and reuse) elements in `k' */
struct FuncState *prev; /* enclosing function */
struct LexState *ls; /* lexical state */
+ struct lua_State *L; /* copy of the Lua state */
struct BlockCnt *bl; /* chain of current blocks */
int pc; /* next position to code (equivalent to `ncode') */
- int lasttarget; /* 'label' of last 'jump label' */
+ int lasttarget; /* `pc' of last `jump target' */
int jpc; /* list of pending jumps to `pc' */
+ 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 (in Dyndata array) */
- short nlocvars; /* number of elements in 'f->locvars' */
+ short nlocvars; /* number of elements in `locvars' */
lu_byte nactvar; /* number of active local variables */
- lu_byte nups; /* number of upvalues */
- lu_byte freereg; /* first free register */
+ upvaldesc upvalues[LUAI_MAXUPVALUES]; /* upvalues */
+ unsigned short actvar[LUAI_MAXVARS]; /* declared-variable stack */
} FuncState;
-LUAI_FUNC Closure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
- Dyndata *dyd, const char *name, int firstchar);
+LUAI_FUNC Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
+ const char *name);
#endif