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 19static 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