commit ce4fb88b34421bc4426db7985314ba7ed757a284
parent e742d542534637c7c64e7acd461512c80646a475
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Tue, 6 Dec 1994 12:26:59 -0200
opcode PUSHSELF has a parameter that indicates the method to be called
Diffstat:
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/lua.stx b/lua.stx
@@ -1,6 +1,6 @@
%{
-char *rcs_luastx = "$Id: lua.stx,v 3.11 1994/11/23 14:39:52 roberto Stab roberto $";
+char *rcs_luastx = "$Id: lua.stx,v 3.12 1994/11/25 19:24:57 roberto Exp $";
#include <stdio.h>
#include <stdlib.h>
@@ -418,9 +418,8 @@ functioncall : funcvalue funcParams
funcvalue : varexp { $$ = 0; }
| varexp ':' NAME
{
- code_byte(PUSHSTRING);
- code_word(luaI_findconstant($3));
code_byte(PUSHSELF);
+ code_word(luaI_findconstant($3));
$$ = 1;
}
;
@@ -830,7 +829,15 @@ static void PrintCode (Byte *code, Byte *end)
printf ("%d STOREGLOBAL %d\n", n, c.w);
}
break;
- case PUSHSELF: printf ("%d PUSHSELF\n", (p++)-code); break;
+ case PUSHSELF:
+ {
+ CodeWord c;
+ int n = p-code;
+ p++;
+ get_word(c,p);
+ printf ("%d PUSHSELF %d\n", n, c.w);
+ }
+ break;
case STOREINDEXED0: printf ("%d STOREINDEXED0\n", (p++)-code); break;
case STOREINDEXED: printf ("%d STOREINDEXED %d\n", p-code, *(++p));
p++;
diff --git a/opcode.c b/opcode.c
@@ -3,7 +3,7 @@
** TecCGraf - PUC-Rio
*/
-char *rcs_opcode="$Id: opcode.c,v 3.22 1994/11/23 14:31:11 roberto Stab roberto $";
+char *rcs_opcode="$Id: opcode.c,v 3.23 1994/11/30 21:20:37 roberto Exp roberto $";
#include <setjmp.h>
#include <stdio.h>
@@ -803,7 +803,10 @@ static int lua_execute (Byte *pc, int base)
case PUSHSELF:
{
- Object receiver = *(top-2);
+ Object receiver = *(top-1);
+ CodeWord code;
+ get_word(code,pc);
+ tag(top) = LUA_T_STRING; tsvalue(top++) = lua_constant[code.w];
pushsubscript();
*(top++) = receiver;
break;