X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fopcodes.c;h=9030f46530fbc8ad986f0b84536728740040c741;hb=0fd17f47ee30d90181e51f30fc17a6c31646137e;hp=e8ec223b596f42ae7ac2c7f25a7f431da152659a;hpb=b1d1dd968034b5c2e87caa49fd255ff836ea55af;p=swftools.git diff --git a/lib/as3/opcodes.c b/lib/as3/opcodes.c index e8ec223..9030f46 100644 --- a/lib/as3/opcodes.c +++ b/lib/as3/opcodes.c @@ -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] = strdup(s); + 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] = string_dup3(s); return self; } code_t* abc_pushtrue(code_t*prev) @@ -929,8 +947,62 @@ code_t* abc_urshift(code_t*prev) code_t*self = add_opcode(prev, 0xa7); return self; } -code_t* abc___break__(code_t*prev) +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; }