1 | /* |
2 | ** $Id: ljumptab.h $ |
3 | ** Jump Table for the Lua interpreter |
4 | ** See Copyright Notice in lua.h |
5 | */ |
6 | |
7 | |
8 | #undef vmdispatch |
9 | #undef vmcase |
10 | #undef vmbreak |
11 | |
12 | #define vmdispatch(x) goto *disptab[x]; |
13 | |
14 | #define vmcase(l) L_##l: |
15 | |
16 | #define vmbreak vmfetch(); vmdispatch(GET_OPCODE(i)); |
17 | |
18 | |
19 | static const void *const disptab[NUM_OPCODES] = { |
20 | |
21 | #if 0 |
22 | ** you can update the following list with this command: |
23 | ** |
24 | ** sed -n '/^OP_/\!d; s/OP_/\&\&L_OP_/ ; s/,.*/,/ ; s/\/.*// ; p' lopcodes.h |
25 | ** |
26 | #endif |
27 | |
28 | &&L_OP_MOVE, |
29 | &&L_OP_LOADI, |
30 | &&L_OP_LOADF, |
31 | &&L_OP_LOADK, |
32 | &&L_OP_LOADKX, |
33 | &&L_OP_LOADFALSE, |
34 | &&L_OP_LFALSESKIP, |
35 | &&L_OP_LOADTRUE, |
36 | &&L_OP_LOADNIL, |
37 | &&L_OP_GETUPVAL, |
38 | &&L_OP_SETUPVAL, |
39 | &&L_OP_GETTABUP, |
40 | &&L_OP_GETTABLE, |
41 | &&L_OP_GETI, |
42 | &&L_OP_GETFIELD, |
43 | &&L_OP_SETTABUP, |
44 | &&L_OP_SETTABLE, |
45 | &&L_OP_SETI, |
46 | &&L_OP_SETFIELD, |
47 | &&L_OP_NEWTABLE, |
48 | &&L_OP_SELF, |
49 | &&L_OP_ADDI, |
50 | &&L_OP_ADDK, |
51 | &&L_OP_SUBK, |
52 | &&L_OP_MULK, |
53 | &&L_OP_MODK, |
54 | &&L_OP_POWK, |
55 | &&L_OP_DIVK, |
56 | &&L_OP_IDIVK, |
57 | &&L_OP_BANDK, |
58 | &&L_OP_BORK, |
59 | &&L_OP_BXORK, |
60 | &&L_OP_SHRI, |
61 | &&L_OP_SHLI, |
62 | &&L_OP_ADD, |
63 | &&L_OP_SUB, |
64 | &&L_OP_MUL, |
65 | &&L_OP_MOD, |
66 | &&L_OP_POW, |
67 | &&L_OP_DIV, |
68 | &&L_OP_IDIV, |
69 | &&L_OP_BAND, |
70 | &&L_OP_BOR, |
71 | &&L_OP_BXOR, |
72 | &&L_OP_SHL, |
73 | &&L_OP_SHR, |
74 | &&L_OP_MMBIN, |
75 | &&L_OP_MMBINI, |
76 | &&L_OP_MMBINK, |
77 | &&L_OP_UNM, |
78 | &&L_OP_BNOT, |
79 | &&L_OP_NOT, |
80 | &&L_OP_LEN, |
81 | &&L_OP_CONCAT, |
82 | &&L_OP_CLOSE, |
83 | &&L_OP_TBC, |
84 | &&L_OP_JMP, |
85 | &&L_OP_EQ, |
86 | &&L_OP_LT, |
87 | &&L_OP_LE, |
88 | &&L_OP_EQK, |
89 | &&L_OP_EQI, |
90 | &&L_OP_LTI, |
91 | &&L_OP_LEI, |
92 | &&L_OP_GTI, |
93 | &&L_OP_GEI, |
94 | &&L_OP_TEST, |
95 | &&L_OP_TESTSET, |
96 | &&L_OP_CALL, |
97 | &&L_OP_TAILCALL, |
98 | &&L_OP_RETURN, |
99 | &&L_OP_RETURN0, |
100 | &&L_OP_RETURN1, |
101 | &&L_OP_FORLOOP, |
102 | &&L_OP_FORPREP, |
103 | &&L_OP_TFORPREP, |
104 | &&L_OP_TFORCALL, |
105 | &&L_OP_TFORLOOP, |
106 | &&L_OP_SETLIST, |
107 | &&L_OP_CLOSURE, |
108 | &&L_OP_VARARG, |
109 | &&L_OP_VARARGPREP, |
110 | &&L_OP_EXTRAARG |
111 | |
112 | }; |
113 | |