numerous small bugfixes
[swftools.git] / lib / as3 / opcodes.c
index 4197ec3..9030f46 100644 (file)
@@ -52,7 +52,7 @@ code_t* abc_call(code_t*prev, int v)
     self->data[0] = (void*)(ptroff_t)v;
     return self;
 }
-code_t* abc_callmethod(code_t*prev, abc_method_body_t* m, int v)
+code_t* abc_callmethod(code_t*prev, abc_method_t* m, int v)
 {
     code_t*self = add_opcode(prev, 0x43);
     self->data[0] = m;
@@ -101,7 +101,7 @@ code_t* abc_callpropvoid2(code_t*prev, multiname_t* name, int v)
     self->data[1] = (void*)(ptroff_t)v;
     return self;
 }
-code_t* abc_callstatic(code_t*prev, abc_method_t* m, int v)
+code_t* abc_callstatic(code_t*prev, abc_method_body_t* m, int v)
 {
     code_t*self = add_opcode(prev, 0x44);
     self->data[0] = m;
@@ -225,10 +225,16 @@ code_t* abc_debug(code_t*prev, void* debuginfo)
     /* FIXME: write debuginfo debuginfo */
     return self;
 }
-code_t* abc_debugfile(code_t*prev, char* s)
+code_t* abc_debugfile(code_t*prev, char* name)
 {
     code_t*self = add_opcode(prev, 0xf1);
-    self->data[0] = strdup(s);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc_debugfile2(code_t*prev, string_t* s)
+{
+    code_t*self = add_opcode(prev, 0xf1);
+    self->data[0] = string_dup3(s);
     return self;
 }
 code_t* abc_debugline(code_t*prev, int v)
@@ -281,10 +287,16 @@ code_t* abc_dup(code_t*prev)
     code_t*self = add_opcode(prev, 0x2a);
     return self;
 }
-code_t* abc_dxns(code_t*prev, char* s)
+code_t* abc_dxns(code_t*prev, char* name)
 {
     code_t*self = add_opcode(prev, 0x06);
-    self->data[0] = strdup(s);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc_dxns2(code_t*prev, string_t* s)
+{
+    code_t*self = add_opcode(prev, 0x06);
+    self->data[0] = string_dup3(s);
     return self;
 }
 code_t* abc_dxnslate(code_t*prev)
@@ -696,7 +708,7 @@ code_t* abc_newclass(code_t*prev, abc_class_t* m)
     self->data[0] = m;
     return self;
 }
-code_t* abc_newfunction(code_t*prev, abc_method_body_t* m)
+code_t* abc_newfunction(code_t*prev, abc_method_t* m)
 {
     code_t*self = add_opcode(prev, 0x40);
     self->data[0] = m;
@@ -790,10 +802,16 @@ code_t* abc_pushshort(code_t*prev, int v)
     self->data[0] = (void*)(ptroff_t)v;
     return self;
 }
-code_t* abc_pushstring(code_t*prev, char* s)
+code_t* abc_pushstring(code_t*prev, char* name)
+{
+    code_t*self = add_opcode(prev, 0x2c);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc_pushstring2(code_t*prev, string_t* s)
 {
     code_t*self = add_opcode(prev, 0x2c);
-    self->data[0] = strdup(s);
+    self->data[0] = string_dup3(s);
     return self;
 }
 code_t* abc_pushtrue(code_t*prev)
@@ -929,3 +947,62 @@ code_t* abc_urshift(code_t*prev)
     code_t*self = add_opcode(prev, 0xa7);
     return self;
 }
+code_t* abc_applytype(code_t*prev, int v)
+{
+    code_t*self = add_opcode(prev, 0x53);
+    self->data[0] = (void*)(ptroff_t)v;
+    return self;
+}
+code_t* abc___pushpackage__(code_t*prev, char* name)
+{
+    code_t*self = add_opcode(prev, 0xfb);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc___pushpackage__2(code_t*prev, string_t* s)
+{
+    code_t*self = add_opcode(prev, 0xfb);
+    self->data[0] = string_dup3(s);
+    return self;
+}
+code_t* abc___rethrow__(code_t*prev)
+{
+    code_t*self = add_opcode(prev, 0xfc);
+    return self;
+}
+code_t* abc___fallthrough__(code_t*prev, char* name)
+{
+    code_t*self = add_opcode(prev, 0xfd);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc___fallthrough__2(code_t*prev, string_t* s)
+{
+    code_t*self = add_opcode(prev, 0xfd);
+    self->data[0] = string_dup3(s);
+    return self;
+}
+code_t* abc___continue__(code_t*prev, char* name)
+{
+    code_t*self = add_opcode(prev, 0xfe);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc___continue__2(code_t*prev, string_t* s)
+{
+    code_t*self = add_opcode(prev, 0xfe);
+    self->data[0] = string_dup3(s);
+    return self;
+}
+code_t* abc___break__(code_t*prev, char* name)
+{
+    code_t*self = add_opcode(prev, 0xff);
+    self->data[0] = string_new4(name);
+    return self;
+}
+code_t* abc___break__2(code_t*prev, string_t* s)
+{
+    code_t*self = add_opcode(prev, 0xff);
+    self->data[0] = string_dup3(s);
+    return self;
+}