summaryrefslogtreecommitdiff
path: root/opcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcode.c')
-rw-r--r--opcode.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/opcode.c b/opcode.c
index 919b2059..ed8a534e 100644
--- a/opcode.c
+++ b/opcode.c
@@ -3,7 +3,7 @@
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4*/ 4*/
5 5
6char *rcs_opcode="$Id: opcode.c,v 3.81 1997/02/20 15:51:14 roberto Exp roberto $"; 6char *rcs_opcode="$Id: opcode.c,v 3.82 1997/02/26 17:38:41 roberto Unstable roberto $";
7 7
8#include <setjmp.h> 8#include <setjmp.h>
9#include <stdio.h> 9#include <stdio.h>
@@ -1184,7 +1184,7 @@ static StkId lua_execute (Byte *pc, StkId base)
1184 } 1184 }
1185 break; 1185 break;
1186 1186
1187 case STORERECORD: 1187 case STORERECORD: /* opcode obsolete: supersed by STOREMAP */
1188 { 1188 {
1189 int n = *(pc++); 1189 int n = *(pc++);
1190 Object *arr = top-n-1; 1190 Object *arr = top-n-1;
@@ -1200,6 +1200,16 @@ static StkId lua_execute (Byte *pc, StkId base)
1200 } 1200 }
1201 break; 1201 break;
1202 1202
1203 case STOREMAP: {
1204 int n = *(pc++);
1205 Object *arr = top-(2*n)-1;
1206 while (n--) {
1207 *(lua_hashdefine (avalue(arr), top-2)) = *(top-1);
1208 top-=2;
1209 }
1210 }
1211 break;
1212
1203 case ADJUST0: 1213 case ADJUST0:
1204 adjust_top(base); 1214 adjust_top(base);
1205 break; 1215 break;