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