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