Jelajahi Sumber

LONGARGW (for completeness).

Roberto Ierusalimschy 26 tahun lalu
induk
melakukan
c364e9f97e
2 mengubah file dengan 6 tambahan dan 4 penghapusan
  1. 2 1
      lopcodes.h
  2. 4 3
      lvm.c

+ 2 - 1
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;

+ 4 - 3
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" */
 
     }