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