|
|
@ -1097,11 +1097,6 @@ void luaV_execute (lua_State *L, CallInfo *ci) { |
|
|
|
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 @@ void luaV_execute (lua_State *L, CallInfo *ci) { |
|
|
|
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 @@ void luaV_execute (lua_State *L, CallInfo *ci) { |
|
|
|
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 @@ void luaV_execute (lua_State *L, CallInfo *ci) { |
|
|
|
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 @@ void luaV_execute (lua_State *L, CallInfo *ci) { |
|
|
|
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); |
|
|
|