aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-09-27 15:59:08 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-09-27 15:59:08 -0300
commit1b100335839e13021b4731f0407b87e4f7544dc0 (patch)
tree085979000de158de7d034c34d208b1318bbea90f /lvm.c
parent00e728af885d2781e365071557530a6685110d7e (diff)
downloadlua-1b100335839e13021b4731f0407b87e4f7544dc0.tar.gz
lua-1b100335839e13021b4731f0407b87e4f7544dc0.tar.bz2
lua-1b100335839e13021b4731f0407b87e4f7544dc0.zip
new function 'luaT_trybiniTM'
to handle tag methods for instructions with immediate integer arguments
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/lvm.c b/lvm.c
index 75eb8fe4..f34f3dfe 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.c,v 2.293 2017/09/19 18:38:14 roberto Exp roberto $ 2** $Id: lvm.c,v 2.294 2017/09/26 18:14:45 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*/
@@ -999,15 +999,8 @@ void luaV_execute (lua_State *L) {
999 else if (tonumberns(rb, nb)) { 999 else if (tonumberns(rb, nb)) {
1000 setfltvalue(s2v(ra), luai_numadd(L, nb, cast_num(ic))); 1000 setfltvalue(s2v(ra), luai_numadd(L, nb, cast_num(ic)));
1001 } 1001 }
1002 else { 1002 else
1003 TValue aux; TValue *rc; 1003 Protect(luaT_trybiniTM(L, rb, ic, GETARG_Bk(i), ra, TM_ADD));
1004 setivalue(&aux, ic);
1005 if (GETARG_Bk(i)) { /* arguments were exchanged? */
1006 rc = rb; rb = &aux; /* correct them */
1007 }
1008 else rc = &aux;
1009 Protect(luaT_trybinTM(L, rb, rc, ra, TM_ADD));
1010 }
1011 vmbreak; 1004 vmbreak;
1012 } 1005 }
1013 vmcase(OP_ADD) { 1006 vmcase(OP_ADD) {