Reordering of instructions in the main loop
The instructions in the main interpreter loop were reordered to
the same order of their enumeration in 'lopcodes.h'.
diff --git a/lvm.c b/lvm.c
index 4011819..ec65ea7 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1097,11 +1097,6 @@
setobjs2s(L, ra, RB(i));
vmbreak;
}
- vmcase(OP_LOADK) {
- TValue *rb = k + GETARG_Bx(i);
- setobj2s(L, ra, rb);
- vmbreak;
- }
vmcase(OP_LOADI) {
lua_Integer b = GETARG_sBx(i);
setivalue(s2v(ra), b);
@@ -1112,6 +1107,11 @@
setfltvalue(s2v(ra), cast_num(b));
vmbreak;
}
+ vmcase(OP_LOADK) {
+ TValue *rb = k + GETARG_Bx(i);
+ setobj2s(L, ra, rb);
+ vmbreak;
+ }
vmcase(OP_LOADKX) {
TValue *rb;
rb = k + GETARG_Ax(*pc); pc++;
@@ -1331,6 +1331,45 @@
op_arithK(L, luaV_idiv, luai_numidiv, TM_IDIV, 0);
vmbreak;
}
+ vmcase(OP_BANDK) {
+ op_bitwiseK(L, l_band, TM_BAND);
+ vmbreak;
+ }
+ vmcase(OP_BORK) {
+ op_bitwiseK(L, l_bor, TM_BOR);
+ vmbreak;
+ }
+ vmcase(OP_BXORK) {
+ op_bitwiseK(L, l_bxor, TM_BXOR);
+ vmbreak;
+ }
+ vmcase(OP_SHRI) {
+ TValue *rb = vRB(i);
+ int ic = GETARG_sC(i);
+ lua_Integer ib;
+ if (tointegerns(rb, &ib)) {
+ setivalue(s2v(ra), luaV_shiftl(ib, -ic));
+ }
+ else {
+ TMS ev = TM_SHR;
+ if (TESTARG_k(i)) {
+ ic = -ic; ev = TM_SHL;
+ }
+ Protect(luaT_trybiniTM(L, rb, ic, 0, ra, ev));
+ }
+ vmbreak;
+ }
+ vmcase(OP_SHLI) {
+ TValue *rb = vRB(i);
+ int ic = GETARG_sC(i);
+ lua_Integer ib;
+ if (tointegerns(rb, &ib)) {
+ setivalue(s2v(ra), luaV_shiftl(ic, ib));
+ }
+ else
+ Protect(luaT_trybiniTM(L, rb, ic, 1, ra, TM_SHL));
+ vmbreak;
+ }
vmcase(OP_ADD) {
op_arith(L, l_addi, luai_numadd, TM_ADD);
vmbreak;
@@ -1359,18 +1398,6 @@
op_arith(L, luaV_idiv, luai_numidiv, TM_IDIV);
vmbreak;
}
- vmcase(OP_BANDK) {
- op_bitwiseK(L, l_band, TM_BAND);
- vmbreak;
- }
- vmcase(OP_BORK) {
- op_bitwiseK(L, l_bor, TM_BOR);
- vmbreak;
- }
- vmcase(OP_BXORK) {
- op_bitwiseK(L, l_bxor, TM_BXOR);
- vmbreak;
- }
vmcase(OP_BAND) {
op_bitwise(L, l_band, TM_BAND);
vmbreak;
@@ -1383,33 +1410,6 @@
op_bitwise(L, l_bxor, TM_BXOR);
vmbreak;
}
- vmcase(OP_SHRI) {
- TValue *rb = vRB(i);
- int ic = GETARG_sC(i);
- lua_Integer ib;
- if (tointegerns(rb, &ib)) {
- setivalue(s2v(ra), luaV_shiftl(ib, -ic));
- }
- else {
- TMS ev = TM_SHR;
- if (TESTARG_k(i)) {
- ic = -ic; ev = TM_SHL;
- }
- Protect(luaT_trybiniTM(L, rb, ic, 0, ra, ev));
- }
- vmbreak;
- }
- vmcase(OP_SHLI) {
- TValue *rb = vRB(i);
- int ic = GETARG_sC(i);
- lua_Integer ib;
- if (tointegerns(rb, &ib)) {
- setivalue(s2v(ra), luaV_shiftl(ic, ib));
- }
- else
- Protect(luaT_trybiniTM(L, rb, ic, 1, ra, TM_SHL));
- vmbreak;
- }
vmcase(OP_SHR) {
TValue *rb = vRB(i);
TValue *rc = vRC(i);