aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1994-11-21 11:30:15 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1994-11-21 11:30:15 -0200
commit96ea2e0fb462789015824823801ba34782364b68 (patch)
tree4d8a4a0792a8fd51f16cf00af347b45313ccdc87
parent93ccdd52ef83e283f7357c7e9de3a8773b26a16d (diff)
downloadlua-96ea2e0fb462789015824823801ba34782364b68.tar.gz
lua-96ea2e0fb462789015824823801ba34782364b68.tar.bz2
lua-96ea2e0fb462789015824823801ba34782364b68.zip
fallback to unary minus is 'arith' with operation code 'unm'
-rw-r--r--fallback.c3
-rw-r--r--fallback.h7
-rw-r--r--opcode.c7
3 files changed, 9 insertions, 8 deletions
diff --git a/fallback.c b/fallback.c
index f99fe63d..a41712cc 100644
--- a/fallback.c
+++ b/fallback.c
@@ -3,7 +3,7 @@
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4*/ 4*/
5 5
6char *rcs_fallback="$Id: fallback.c,v 1.6 1994/11/16 17:38:08 roberto Exp roberto $"; 6char *rcs_fallback="$Id: fallback.c,v 1.7 1994/11/18 19:46:21 roberto Exp roberto $";
7 7
8#include <stdio.h> 8#include <stdio.h>
9 9
@@ -33,7 +33,6 @@ struct FB luaI_fallBacks[] = {
33{"arith", {LUA_T_CFUNCTION, arithFB}}, 33{"arith", {LUA_T_CFUNCTION, arithFB}},
34{"order", {LUA_T_CFUNCTION, orderFB}}, 34{"order", {LUA_T_CFUNCTION, orderFB}},
35{"concat", {LUA_T_CFUNCTION, concatFB}}, 35{"concat", {LUA_T_CFUNCTION, concatFB}},
36{"unminus", {LUA_T_CFUNCTION, arithFB}},
37{"settable", {LUA_T_CFUNCTION, gettableFB}}, 36{"settable", {LUA_T_CFUNCTION, gettableFB}},
38{"gc", {LUA_T_CFUNCTION, GDFB}} 37{"gc", {LUA_T_CFUNCTION, GDFB}}
39}; 38};
diff --git a/fallback.h b/fallback.h
index d447ce04..33c22b0d 100644
--- a/fallback.h
+++ b/fallback.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: fallback.h,v 1.4 1994/11/10 17:36:54 roberto Exp roberto $ 2** $Id: fallback.h,v 1.5 1994/11/18 19:46:21 roberto Exp roberto $
3*/ 3*/
4 4
5#ifndef fallback_h 5#ifndef fallback_h
@@ -18,9 +18,8 @@ extern struct FB {
18#define FB_ARITH 3 18#define FB_ARITH 3
19#define FB_ORDER 4 19#define FB_ORDER 4
20#define FB_CONCAT 5 20#define FB_CONCAT 5
21#define FB_UNMINUS 6 21#define FB_SETTABLE 6
22#define FB_SETTABLE 7 22#define FB_GC 7
23#define FB_GC 8
24 23
25void luaI_setfallback (void); 24void luaI_setfallback (void);
26int luaI_lock (Object *object); 25int luaI_lock (Object *object);
diff --git a/opcode.c b/opcode.c
index d1869654..55a41ee1 100644
--- a/opcode.c
+++ b/opcode.c
@@ -3,7 +3,7 @@
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4*/ 4*/
5 5
6char *rcs_opcode="$Id: opcode.c,v 3.17 1994/11/17 21:23:43 roberto Exp roberto $"; 6char *rcs_opcode="$Id: opcode.c,v 3.18 1994/11/18 19:46:21 roberto Exp roberto $";
7 7
8#include <setjmp.h> 8#include <setjmp.h>
9#include <stdio.h> 9#include <stdio.h>
@@ -989,7 +989,10 @@ static int lua_execute (Byte *pc, int base)
989 989
990 case MINUSOP: 990 case MINUSOP:
991 if (tonumber(top-1)) 991 if (tonumber(top-1))
992 do_call(&luaI_fallBacks[FB_UNMINUS].function, (top-stack)-1, 1, (top-stack)-1); 992 {
993 tag(top++) = LUA_T_NIL;
994 call_arith("unm");
995 }
993 else 996 else
994 nvalue(top-1) = - nvalue(top-1); 997 nvalue(top-1) = - nvalue(top-1);
995 break; 998 break;