diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-21 11:30:15 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-21 11:30:15 -0200 |
| commit | 96ea2e0fb462789015824823801ba34782364b68 (patch) | |
| tree | 4d8a4a0792a8fd51f16cf00af347b45313ccdc87 | |
| parent | 93ccdd52ef83e283f7357c7e9de3a8773b26a16d (diff) | |
| download | lua-96ea2e0fb462789015824823801ba34782364b68.tar.gz lua-96ea2e0fb462789015824823801ba34782364b68.tar.bz2 lua-96ea2e0fb462789015824823801ba34782364b68.zip | |
fallback to unary minus is 'arith' with operation code 'unm'
| -rw-r--r-- | fallback.c | 3 | ||||
| -rw-r--r-- | fallback.h | 7 | ||||
| -rw-r--r-- | opcode.c | 7 |
3 files changed, 9 insertions, 8 deletions
| @@ -3,7 +3,7 @@ | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_fallback="$Id: fallback.c,v 1.6 1994/11/16 17:38:08 roberto Exp roberto $"; | 6 | char *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 | }; |
| @@ -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 | ||
| 25 | void luaI_setfallback (void); | 24 | void luaI_setfallback (void); |
| 26 | int luaI_lock (Object *object); | 25 | int luaI_lock (Object *object); |
| @@ -3,7 +3,7 @@ | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_opcode="$Id: opcode.c,v 3.17 1994/11/17 21:23:43 roberto Exp roberto $"; | 6 | char *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; |
