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