eplicit 1-bit opcode operand 'k'

This commit is contained in:
Roberto Ierusalimschy
2017-10-04 18:56:32 -03:00
parent 283e7455ff
commit a1ef58b3a5
6 changed files with 103 additions and 96 deletions

22
lvm.c
View File

@@ -1,5 +1,5 @@
/*
** $Id: lvm.c,v 2.297 2017/10/01 19:13:43 roberto Exp roberto $
** $Id: lvm.c,v 2.298 2017/10/04 15:49:24 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
@@ -742,7 +742,7 @@ void luaV_finishOp (lua_State *L) {
#define RC(i) (base+GETARG_C(i))
#define vRC(i) s2v(RC(i))
#define KC(i) (k+GETARG_C(i))
#define RKC(i) ((GETARG_Ck(i)) ? k + GETARG_Cr(i) : s2v(base + GETARG_Cr(i)))
#define RKC(i) ((GETARG_k(i)) ? k + GETARG_C(i) : s2v(base + GETARG_C(i)))
@@ -992,7 +992,7 @@ void luaV_execute (lua_State *L) {
}
vmcase(OP_ADDI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (ttisinteger(rb)) {
setivalue(s2v(ra), intop(+, ivalue(rb), ic));
@@ -1001,12 +1001,12 @@ void luaV_execute (lua_State *L) {
setfltvalue(s2v(ra), luai_numadd(L, nb, cast_num(ic)));
}
else
Protect(luaT_trybiniTM(L, rb, ic, GETARG_Ck(i), ra, TM_ADD));
Protect(luaT_trybiniTM(L, rb, ic, GETARG_k(i), ra, TM_ADD));
vmbreak;
}
vmcase(OP_SUBI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (ttisinteger(rb)) {
setivalue(s2v(ra), intop(-, ivalue(rb), ic));
@@ -1020,7 +1020,7 @@ void luaV_execute (lua_State *L) {
}
vmcase(OP_MULI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (ttisinteger(rb)) {
setivalue(s2v(ra), intop(*, ivalue(rb), ic));
@@ -1029,12 +1029,12 @@ void luaV_execute (lua_State *L) {
setfltvalue(s2v(ra), luai_nummul(L, nb, cast_num(ic)));
}
else
Protect(luaT_trybiniTM(L, rb, ic, GETARG_Ck(i), ra, TM_MUL));
Protect(luaT_trybiniTM(L, rb, ic, GETARG_k(i), ra, TM_MUL));
vmbreak;
}
vmcase(OP_MODI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (ttisinteger(rb)) {
setivalue(s2v(ra), luaV_mod(L, ivalue(rb), ic));
@@ -1051,7 +1051,7 @@ void luaV_execute (lua_State *L) {
}
vmcase(OP_POWI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (tonumberns(rb, nb)) {
lua_Number nc = cast_num(ic);
@@ -1063,7 +1063,7 @@ void luaV_execute (lua_State *L) {
}
vmcase(OP_DIVI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (tonumberns(rb, nb)) {
lua_Number nc = cast_num(ic);
@@ -1075,7 +1075,7 @@ void luaV_execute (lua_State *L) {
}
vmcase(OP_IDIVI) {
TValue *rb = vRB(i);
int ic = GETARG_Cr(i);
int ic = GETARG_sC(i);
lua_Number nb;
if (ttisinteger(rb)) {
setivalue(s2v(ra), luaV_div(L, ivalue(rb), ic));