diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-09-28 13:53:29 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-09-28 13:53:29 -0300 |
commit | 722bdbe17d0192baf72978f88069d12a921e9bfb (patch) | |
tree | 78da619d4799721e67a760bf4220b568f636cb86 /lvm.c | |
parent | 1b100335839e13021b4731f0407b87e4f7544dc0 (diff) | |
download | lua-722bdbe17d0192baf72978f88069d12a921e9bfb.tar.gz lua-722bdbe17d0192baf72978f88069d12a921e9bfb.tar.bz2 lua-722bdbe17d0192baf72978f88069d12a921e9bfb.zip |
no more 'getBMode'-'getCMode' (imprecise + we will need more space
for op mode) + better control of op modes
Diffstat (limited to 'lvm.c')
-rw-r--r-- | lvm.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lvm.c,v 2.294 2017/09/26 18:14:45 roberto Exp roberto $ | 2 | ** $Id: lvm.c,v 2.295 2017/09/27 18:59:08 roberto Exp roberto $ |
3 | ** Lua virtual machine | 3 | ** Lua virtual machine |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -733,14 +733,13 @@ void luaV_finishOp (lua_State *L) { | |||
733 | 733 | ||
734 | 734 | ||
735 | #define RA(i) (base+GETARG_A(i)) | 735 | #define RA(i) (base+GETARG_A(i)) |
736 | #define RB(i) check_exp(getBMode(GET_OPCODE(i)) == OpArgR, base+GETARG_Br(i)) | 736 | #define RB(i) (base+GETARG_Br(i)) |
737 | #define vRB(i) s2v(RB(i)) | 737 | #define vRB(i) s2v(RB(i)) |
738 | #define KB(i) check_exp(getBMode(GET_OPCODE(i)) == OpArgK, k+GETARG_B(i)) | 738 | #define KB(i) (k+GETARG_B(i)) |
739 | #define RC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgR, base+GETARG_C(i)) | 739 | #define RC(i) (base+GETARG_C(i)) |
740 | #define vRC(i) s2v(RC(i)) | 740 | #define vRC(i) s2v(RC(i)) |
741 | #define KC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgK, k+GETARG_C(i)) | 741 | #define KC(i) (k+GETARG_C(i)) |
742 | #define RKC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgK, \ | 742 | #define RKC(i) ((GETARG_Ck(i)) ? k + GETARG_Cr(i) : s2v(base + GETARG_Cr(i))) |
743 | (GETARG_Ck(i)) ? k + GETARG_Cr(i) : s2v(base + GETARG_Cr(i))) | ||
744 | 743 | ||
745 | 744 | ||
746 | 745 | ||
@@ -834,8 +833,7 @@ void luaV_execute (lua_State *L) { | |||
834 | } | 833 | } |
835 | vmcase(OP_LOADKX) { | 834 | vmcase(OP_LOADKX) { |
836 | TValue *rb; | 835 | TValue *rb; |
837 | lua_assert(GET_OPCODE(*pc) == OP_EXTRAARG); | 836 | rb = k + GETARG_Ax(*pc); pc++; |
838 | rb = k + GETARG_Ax(*pc++); | ||
839 | setobj2s(L, ra, rb); | 837 | setobj2s(L, ra, rb); |
840 | vmbreak; | 838 | vmbreak; |
841 | } | 839 | } |
@@ -1409,8 +1407,7 @@ void luaV_execute (lua_State *L) { | |||
1409 | Table *h; | 1407 | Table *h; |
1410 | if (n == 0) n = cast_int(L->top - ra) - 1; | 1408 | if (n == 0) n = cast_int(L->top - ra) - 1; |
1411 | if (c == 0) { | 1409 | if (c == 0) { |
1412 | lua_assert(GET_OPCODE(*pc) == OP_EXTRAARG); | 1410 | c = GETARG_Ax(*pc); pc++; |
1413 | c = GETARG_Ax(*pc++); | ||
1414 | } | 1411 | } |
1415 | h = hvalue(s2v(ra)); | 1412 | h = hvalue(s2v(ra)); |
1416 | last = ((c-1)*LFIELDS_PER_FLUSH) + n; | 1413 | last = ((c-1)*LFIELDS_PER_FLUSH) + n; |