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