From ce4fb88b34421bc4426db7985314ba7ed757a284 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 6 Dec 1994 12:27:18 -0200 Subject: opcode PUSHSELF has a parameter that indicates the method to be called --- lua.stx | 15 +++++++++++---- opcode.c | 7 +++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lua.stx b/lua.stx index bd61cfb7..2dd21a3c 100644 --- 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 #include @@ -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 index a6945ced..64dcca68 100644 --- 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 #include @@ -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; -- cgit v1.2.3-55-g6feb