aboutsummaryrefslogtreecommitdiff
path: root/ljumptab.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-03-02 15:56:14 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-03-02 15:56:14 -0300
commit893f382e94e05578063f91830ee735f48ee95c8b (patch)
tree212aaf256230dda170c3ec77f6f8533855dedd88 /ljumptab.h
parent0eb10c6303dadf29be349b0331e6029b5ae03298 (diff)
downloadlua-893f382e94e05578063f91830ee735f48ee95c8b.tar.gz
lua-893f382e94e05578063f91830ee735f48ee95c8b.tar.bz2
lua-893f382e94e05578063f91830ee735f48ee95c8b.zip
Jump Table for the interpreter
Diffstat (limited to 'ljumptab.h')
-rw-r--r--ljumptab.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/ljumptab.h b/ljumptab.h
new file mode 100644
index 00000000..ac6a0357
--- /dev/null
+++ b/ljumptab.h
@@ -0,0 +1,98 @@
1#undef vmdispatch
2#undef vmcase
3#undef vmbreak
4
5#define vmdispatch(x) goto *disptab[x];
6
7#define vmcase(l) L_##l:
8
9#define vmbreak vmfetch(); vmdispatch(GET_OPCODE(i));
10
11
12static void *disptab[] = {
13
14// you can update the following list with this command:
15//
16// sed -n '/^OP_/\!d; s/OP_/\&\&L_OP_/ ; s/,.*/,/ ; s/\/.*// ; p' lopcodes.h
17//
18//
19
20&&L_OP_MOVE,
21&&L_OP_LOADI,
22&&L_OP_LOADF,
23&&L_OP_LOADK,
24&&L_OP_LOADKX,
25&&L_OP_LOADBOOL,
26&&L_OP_LOADNIL,
27&&L_OP_GETUPVAL,
28&&L_OP_SETUPVAL,
29&&L_OP_GETTABUP,
30&&L_OP_GETTABLE,
31&&L_OP_GETI,
32&&L_OP_GETFIELD,
33&&L_OP_SETTABUP,
34&&L_OP_SETTABLE,
35&&L_OP_SETI,
36&&L_OP_SETFIELD,
37&&L_OP_NEWTABLE,
38&&L_OP_SELF,
39&&L_OP_ADDI,
40&&L_OP_SUBI,
41&&L_OP_MULI,
42&&L_OP_MODI,
43&&L_OP_POWI,
44&&L_OP_DIVI,
45&&L_OP_IDIVI,
46&&L_OP_BANDK,
47&&L_OP_BORK,
48&&L_OP_BXORK,
49&&L_OP_SHRI,
50&&L_OP_SHLI,
51&&L_OP_ADD,
52&&L_OP_SUB,
53&&L_OP_MUL,
54&&L_OP_MOD,
55&&L_OP_POW,
56&&L_OP_DIV,
57&&L_OP_IDIV,
58&&L_OP_BAND,
59&&L_OP_BOR,
60&&L_OP_BXOR,
61&&L_OP_SHL,
62&&L_OP_SHR,
63&&L_OP_UNM,
64&&L_OP_BNOT,
65&&L_OP_NOT,
66&&L_OP_LEN,
67&&L_OP_CONCAT,
68&&L_OP_CLOSE,
69&&L_OP_JMP,
70&&L_OP_EQ,
71&&L_OP_LT,
72&&L_OP_LE,
73&&L_OP_EQK,
74&&L_OP_EQI,
75&&L_OP_LTI,
76&&L_OP_LEI,
77&&L_OP_GTI,
78&&L_OP_GEI,
79&&L_OP_TEST,
80&&L_OP_TESTSET,
81&&L_OP_CALL,
82&&L_OP_TAILCALL,
83&&L_OP_RETURN,
84&&L_OP_RETURN0,
85&&L_OP_RETURN1,
86&&L_OP_FORLOOP1,
87&&L_OP_FORPREP1,
88&&L_OP_FORLOOP,
89&&L_OP_FORPREP,
90&&L_OP_TFORCALL,
91&&L_OP_TFORLOOP,
92&&L_OP_SETLIST,
93&&L_OP_CLOSURE,
94&&L_OP_VARARG,
95&&L_OP_PREPVARARG,
96&&L_OP_EXTRAARG
97
98};