aboutsummaryrefslogtreecommitdiff
path: root/opcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcode.c')
-rw-r--r--opcode.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/opcode.c b/opcode.c
index b2f5cb41..e5877ad0 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 2.2 1994/07/19 21:27:18 celes Exp celes $"; 6char *rcs_opcode="$Id: opcode.c,v 2.3 1994/08/03 14:15:46 celes Exp celes $";
7 7
8#include <stdio.h> 8#include <stdio.h>
9#include <stdlib.h> 9#include <stdlib.h>
@@ -211,6 +211,14 @@ int lua_execute (Byte *pc)
211 tag(top) = T_STRING; svalue(top++) = lua_constant[code.w]; 211 tag(top) = T_STRING; svalue(top++) = lua_constant[code.w];
212 } 212 }
213 break; 213 break;
214
215 case PUSHFUNCTION:
216 {
217 CodeCode code;
218 get_code(code,pc);
219 tag(top) = T_FUNCTION; bvalue(top++) = code.b;
220 }
221 break;
214 222
215 case PUSHLOCAL0: case PUSHLOCAL1: case PUSHLOCAL2: 223 case PUSHLOCAL0: case PUSHLOCAL1: case PUSHLOCAL2:
216 case PUSHLOCAL3: case PUSHLOCAL4: case PUSHLOCAL5: 224 case PUSHLOCAL3: case PUSHLOCAL4: case PUSHLOCAL5:
@@ -235,7 +243,7 @@ int lua_execute (Byte *pc)
235 return 1; 243 return 1;
236 } 244 }
237 { 245 {
238 Object *h = lua_hashdefine (avalue(top-1), top); 246 Object *h = lua_hashget (avalue(top-1), top);
239 if (h == NULL) return 1; 247 if (h == NULL) return 1;
240 *(top-1) = *h; 248 *(top-1) = *h;
241 } 249 }
@@ -773,7 +781,7 @@ Object *lua_getfield (Object *object, char *field)
773 Object ref; 781 Object ref;
774 tag(&ref) = T_STRING; 782 tag(&ref) = T_STRING;
775 svalue(&ref) = lua_createstring(field); 783 svalue(&ref) = lua_createstring(field);
776 return (lua_hashdefine(avalue(object), &ref)); 784 return (lua_hashget(avalue(object), &ref));
777 } 785 }
778} 786}
779 787
@@ -791,7 +799,7 @@ Object *lua_getindexed (Object *object, float index)
791 Object ref; 799 Object ref;
792 tag(&ref) = T_NUMBER; 800 tag(&ref) = T_NUMBER;
793 nvalue(&ref) = index; 801 nvalue(&ref) = index;
794 return (lua_hashdefine(avalue(object), &ref)); 802 return (lua_hashget(avalue(object), &ref));
795 } 803 }
796} 804}
797 805
@@ -1025,6 +1033,7 @@ void lua_print (void)
1025 { 1033 {
1026 if (lua_isnumber(obj)) printf("%g\n",lua_getnumber (obj)); 1034 if (lua_isnumber(obj)) printf("%g\n",lua_getnumber (obj));
1027 else if (lua_isstring(obj)) printf("%s\n",lua_getstring (obj)); 1035 else if (lua_isstring(obj)) printf("%s\n",lua_getstring (obj));
1036 else if (lua_isfunction(obj)) printf("function: %p\n",bvalue(obj));
1028 else if (lua_iscfunction(obj)) printf("cfunction: %p\n",lua_getcfunction (obj)); 1037 else if (lua_iscfunction(obj)) printf("cfunction: %p\n",lua_getcfunction (obj));
1029 else if (lua_isuserdata(obj)) printf("userdata: %p\n",lua_getuserdata (obj)); 1038 else if (lua_isuserdata(obj)) printf("userdata: %p\n",lua_getuserdata (obj));
1030 else if (lua_istable(obj)) printf("table: %p\n",obj); 1039 else if (lua_istable(obj)) printf("table: %p\n",obj);