commit ab5a6500296dbd847632ccc2fb43b44bba4c34f5
parent fb9de1b4d77494d55c6e0c3c8e5c681dad36b49e
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Mon, 8 May 2017 13:07:34 -0300
details (direct access to 'Ck' bit in instructions)
Diffstat:
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/lopcodes.h b/lopcodes.h
@@ -1,5 +1,5 @@
/*
-** $Id: lopcodes.h,v 1.152 2017/04/26 17:46:52 roberto Exp roberto $
+** $Id: lopcodes.h,v 1.153 2017/04/28 20:57:45 roberto Exp roberto $
** Opcodes for Lua virtual machine
** See Copyright Notice in lua.h
*/
@@ -106,6 +106,9 @@ enum OpMode {iABC, iABx, iAsBx, iAx}; /* basic instruction format */
#define GETARG_C(i) getarg(i, POS_C, SIZE_C)
#define SETARG_C(i,v) setarg(i, v, POS_C, SIZE_C)
+#define GETARG_Cr(i) getarg(i, POS_C, SIZE_C - 1)
+#define GETARG_Ck(i) getarg(i, (POS_C + SIZE_C - 1), 1)
+
#define GETARG_Bx(i) getarg(i, POS_Bx, SIZE_Bx)
#define SETARG_Bx(i,v) setarg(i, v, POS_Bx, SIZE_Bx)
diff --git a/lvm.c b/lvm.c
@@ -1,5 +1,5 @@
/*
-** $Id: lvm.c,v 2.276 2017/05/04 13:32:01 roberto Exp roberto $
+** $Id: lvm.c,v 2.277 2017/05/05 17:16:11 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
@@ -737,9 +737,9 @@ void luaV_finishOp (lua_State *L) {
#define RC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgR, base+GETARG_C(i))
#define KC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgK, k+GETARG_C(i))
#define RKB(i) check_exp(getBMode(GET_OPCODE(i)) == OpArgK, \
- (GETARG_Bk(i)) ? k+GETARG_Br(i) : base+GETARG_Br(i))
+ (GETARG_Bk(i)) ? k + GETARG_Br(i) : base + GETARG_Br(i))
#define RKC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgK, \
- ISK(GETARG_C(i)) ? k+INDEXK(GETARG_C(i)) : base+GETARG_C(i))
+ (GETARG_Ck(i)) ? k + GETARG_Cr(i) : base + GETARG_Cr(i))