diff --git a/lopcodes.h b/lopcodes.h index fabeeb0e..886d31d1 100644 --- a/lopcodes.h +++ b/lopcodes.h @@ -1,5 +1,5 @@ /* -** $Id: lopcodes.h,v 1.24 1999/02/09 15:58:45 roberto Exp roberto $ +** $Id: lopcodes.h,v 1.25 1999/02/09 18:01:55 roberto Exp roberto $ ** Opcodes for Lua virtual machine ** See Copyright Notice in lua.h */ @@ -106,6 +106,7 @@ CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ SETLINEW,/* w - - LINE=w */ SETLINE,/* b - - LINE=b */ +LONGARGW,/* w (add w*(1<<16) to arg of next instruction) */ LONGARG /* b (add b*(1<<16) to arg of next instruction) */ } OpCode; diff --git a/lvm.c b/lvm.c index f9175885..5eee2799 100644 --- a/lvm.c +++ b/lvm.c @@ -1,5 +1,5 @@ /* -** $Id: lvm.c,v 1.48 1999/02/09 15:58:45 roberto Exp roberto $ +** $Id: lvm.c,v 1.49 1999/02/09 18:01:55 roberto Exp roberto $ ** Lua virtual machine ** See Copyright Notice in lua.h */ @@ -638,8 +638,9 @@ StkId luaV_execute (Closure *cl, TProtoFunc *tf, StkId base) { luaD_lineHook(aux); break; - case LONGARG: - aux = highbyte(highbyte(*pc++)); + case LONGARGW: aux += highbyte(*pc++); + case LONGARG: aux += *pc++; + aux = highbyte(highbyte(aux)); goto switchentry; /* do not reset "aux" */ }