1 #include "opcodes.h"
abc_add(code_t * prev)2 code_t* abc_add(code_t*prev)
3 {
4     code_t*self = add_opcode(prev, 0xa0);
5     return self;
6 }
abc_add_i(code_t * prev)7 code_t* abc_add_i(code_t*prev)
8 {
9     code_t*self = add_opcode(prev, 0xc5);
10     return self;
11 }
abc_astype(code_t * prev,char * name)12 code_t* abc_astype(code_t*prev, char* name)
13 {
14     code_t*self = add_opcode(prev, 0x86);
15     self->data[0] = multiname_fromstring(name);
16     return self;
17 }
abc_astype2(code_t * prev,multiname_t * name)18 code_t* abc_astype2(code_t*prev, multiname_t* name)
19 {
20     code_t*self = add_opcode(prev, 0x86);
21     self->data[0] = multiname_clone(name);
22     return self;
23 }
abc_astypelate(code_t * prev)24 code_t* abc_astypelate(code_t*prev)
25 {
26     code_t*self = add_opcode(prev, 0x87);
27     return self;
28 }
abc_bitand(code_t * prev)29 code_t* abc_bitand(code_t*prev)
30 {
31     code_t*self = add_opcode(prev, 0xA8);
32     return self;
33 }
abc_bitnot(code_t * prev)34 code_t* abc_bitnot(code_t*prev)
35 {
36     code_t*self = add_opcode(prev, 0x97);
37     return self;
38 }
abc_bitor(code_t * prev)39 code_t* abc_bitor(code_t*prev)
40 {
41     code_t*self = add_opcode(prev, 0xa9);
42     return self;
43 }
abc_bitxor(code_t * prev)44 code_t* abc_bitxor(code_t*prev)
45 {
46     code_t*self = add_opcode(prev, 0xaa);
47     return self;
48 }
abc_call(code_t * prev,int v)49 code_t* abc_call(code_t*prev, int v)
50 {
51     code_t*self = add_opcode(prev, 0x41);
52     self->data[0] = (void*)(ptroff_t)v;
53     return self;
54 }
abc_callmethod(code_t * prev,abc_method_t * m,int v)55 code_t* abc_callmethod(code_t*prev, abc_method_t* m, int v)
56 {
57     code_t*self = add_opcode(prev, 0x43);
58     self->data[0] = m;
59     self->data[1] = (void*)(ptroff_t)v;
60     return self;
61 }
abc_callproplex(code_t * prev,char * name,int v)62 code_t* abc_callproplex(code_t*prev, char* name, int v)
63 {
64     code_t*self = add_opcode(prev, 0x4c);
65     self->data[0] = multiname_fromstring(name);
66     self->data[1] = (void*)(ptroff_t)v;
67     return self;
68 }
abc_callproplex2(code_t * prev,multiname_t * name,int v)69 code_t* abc_callproplex2(code_t*prev, multiname_t* name, int v)
70 {
71     code_t*self = add_opcode(prev, 0x4c);
72     self->data[0] = multiname_clone(name);
73     self->data[1] = (void*)(ptroff_t)v;
74     return self;
75 }
abc_callproperty(code_t * prev,char * name,int v)76 code_t* abc_callproperty(code_t*prev, char* name, int v)
77 {
78     code_t*self = add_opcode(prev, 0x46);
79     self->data[0] = multiname_fromstring(name);
80     self->data[1] = (void*)(ptroff_t)v;
81     return self;
82 }
abc_callproperty2(code_t * prev,multiname_t * name,int v)83 code_t* abc_callproperty2(code_t*prev, multiname_t* name, int v)
84 {
85     code_t*self = add_opcode(prev, 0x46);
86     self->data[0] = multiname_clone(name);
87     self->data[1] = (void*)(ptroff_t)v;
88     return self;
89 }
abc_callpropvoid(code_t * prev,char * name,int v)90 code_t* abc_callpropvoid(code_t*prev, char* name, int v)
91 {
92     code_t*self = add_opcode(prev, 0x4f);
93     self->data[0] = multiname_fromstring(name);
94     self->data[1] = (void*)(ptroff_t)v;
95     return self;
96 }
abc_callpropvoid2(code_t * prev,multiname_t * name,int v)97 code_t* abc_callpropvoid2(code_t*prev, multiname_t* name, int v)
98 {
99     code_t*self = add_opcode(prev, 0x4f);
100     self->data[0] = multiname_clone(name);
101     self->data[1] = (void*)(ptroff_t)v;
102     return self;
103 }
abc_callstatic(code_t * prev,abc_method_body_t * m,int v)104 code_t* abc_callstatic(code_t*prev, abc_method_body_t* m, int v)
105 {
106     code_t*self = add_opcode(prev, 0x44);
107     self->data[0] = m;
108     self->data[1] = (void*)(ptroff_t)v;
109     return self;
110 }
abc_callsuper(code_t * prev,char * name,int v)111 code_t* abc_callsuper(code_t*prev, char* name, int v)
112 {
113     code_t*self = add_opcode(prev, 0x45);
114     self->data[0] = multiname_fromstring(name);
115     self->data[1] = (void*)(ptroff_t)v;
116     return self;
117 }
abc_callsuper2(code_t * prev,multiname_t * name,int v)118 code_t* abc_callsuper2(code_t*prev, multiname_t* name, int v)
119 {
120     code_t*self = add_opcode(prev, 0x45);
121     self->data[0] = multiname_clone(name);
122     self->data[1] = (void*)(ptroff_t)v;
123     return self;
124 }
abc_callsupervoid(code_t * prev,char * name,int v)125 code_t* abc_callsupervoid(code_t*prev, char* name, int v)
126 {
127     code_t*self = add_opcode(prev, 0x4e);
128     self->data[0] = multiname_fromstring(name);
129     self->data[1] = (void*)(ptroff_t)v;
130     return self;
131 }
abc_callsupervoid2(code_t * prev,multiname_t * name,int v)132 code_t* abc_callsupervoid2(code_t*prev, multiname_t* name, int v)
133 {
134     code_t*self = add_opcode(prev, 0x4e);
135     self->data[0] = multiname_clone(name);
136     self->data[1] = (void*)(ptroff_t)v;
137     return self;
138 }
abc_checkfilter(code_t * prev)139 code_t* abc_checkfilter(code_t*prev)
140 {
141     code_t*self = add_opcode(prev, 0x78);
142     return self;
143 }
abc_coerce(code_t * prev,char * name)144 code_t* abc_coerce(code_t*prev, char* name)
145 {
146     code_t*self = add_opcode(prev, 0x80);
147     self->data[0] = multiname_fromstring(name);
148     return self;
149 }
abc_coerce2(code_t * prev,multiname_t * name)150 code_t* abc_coerce2(code_t*prev, multiname_t* name)
151 {
152     code_t*self = add_opcode(prev, 0x80);
153     self->data[0] = multiname_clone(name);
154     return self;
155 }
abc_coerce_a(code_t * prev)156 code_t* abc_coerce_a(code_t*prev)
157 {
158     code_t*self = add_opcode(prev, 0x82);
159     return self;
160 }
abc_coerce_s(code_t * prev)161 code_t* abc_coerce_s(code_t*prev)
162 {
163     code_t*self = add_opcode(prev, 0x85);
164     return self;
165 }
abc_construct(code_t * prev,int v)166 code_t* abc_construct(code_t*prev, int v)
167 {
168     code_t*self = add_opcode(prev, 0x42);
169     self->data[0] = (void*)(ptroff_t)v;
170     return self;
171 }
abc_constructprop(code_t * prev,char * name,int v)172 code_t* abc_constructprop(code_t*prev, char* name, int v)
173 {
174     code_t*self = add_opcode(prev, 0x4a);
175     self->data[0] = multiname_fromstring(name);
176     self->data[1] = (void*)(ptroff_t)v;
177     return self;
178 }
abc_constructprop2(code_t * prev,multiname_t * name,int v)179 code_t* abc_constructprop2(code_t*prev, multiname_t* name, int v)
180 {
181     code_t*self = add_opcode(prev, 0x4a);
182     self->data[0] = multiname_clone(name);
183     self->data[1] = (void*)(ptroff_t)v;
184     return self;
185 }
abc_constructsuper(code_t * prev,int v)186 code_t* abc_constructsuper(code_t*prev, int v)
187 {
188     code_t*self = add_opcode(prev, 0x49);
189     self->data[0] = (void*)(ptroff_t)v;
190     return self;
191 }
abc_convert_b(code_t * prev)192 code_t* abc_convert_b(code_t*prev)
193 {
194     code_t*self = add_opcode(prev, 0x76);
195     return self;
196 }
abc_convert_i(code_t * prev)197 code_t* abc_convert_i(code_t*prev)
198 {
199     code_t*self = add_opcode(prev, 0x73);
200     return self;
201 }
abc_convert_d(code_t * prev)202 code_t* abc_convert_d(code_t*prev)
203 {
204     code_t*self = add_opcode(prev, 0x75);
205     return self;
206 }
abc_convert_o(code_t * prev)207 code_t* abc_convert_o(code_t*prev)
208 {
209     code_t*self = add_opcode(prev, 0x77);
210     return self;
211 }
abc_convert_u(code_t * prev)212 code_t* abc_convert_u(code_t*prev)
213 {
214     code_t*self = add_opcode(prev, 0x74);
215     return self;
216 }
abc_convert_s(code_t * prev)217 code_t* abc_convert_s(code_t*prev)
218 {
219     code_t*self = add_opcode(prev, 0x70);
220     return self;
221 }
abc_debug(code_t * prev,void * debuginfo)222 code_t* abc_debug(code_t*prev, void* debuginfo)
223 {
224     code_t*self = add_opcode(prev, 0xef);
225     /* FIXME: write debuginfo debuginfo */
226     return self;
227 }
abc_debugfile(code_t * prev,char * name)228 code_t* abc_debugfile(code_t*prev, char* name)
229 {
230     code_t*self = add_opcode(prev, 0xf1);
231     self->data[0] = string_new4(name);
232     return self;
233 }
abc_debugfile2(code_t * prev,string_t * s)234 code_t* abc_debugfile2(code_t*prev, string_t* s)
235 {
236     code_t*self = add_opcode(prev, 0xf1);
237     self->data[0] = string_dup3(s);
238     return self;
239 }
abc_debugline(code_t * prev,int v)240 code_t* abc_debugline(code_t*prev, int v)
241 {
242     code_t*self = add_opcode(prev, 0xf0);
243     self->data[0] = (void*)(ptroff_t)v;
244     return self;
245 }
abc_declocal(code_t * prev,int reg)246 code_t* abc_declocal(code_t*prev, int reg)
247 {
248     code_t*self = add_opcode(prev, 0x94);
249     self->data[0] = (void*)(ptroff_t)reg;
250     return self;
251 }
abc_declocal_i(code_t * prev,int reg)252 code_t* abc_declocal_i(code_t*prev, int reg)
253 {
254     code_t*self = add_opcode(prev, 0xc3);
255     self->data[0] = (void*)(ptroff_t)reg;
256     return self;
257 }
abc_decrement(code_t * prev)258 code_t* abc_decrement(code_t*prev)
259 {
260     code_t*self = add_opcode(prev, 0x93);
261     return self;
262 }
abc_decrement_i(code_t * prev)263 code_t* abc_decrement_i(code_t*prev)
264 {
265     code_t*self = add_opcode(prev, 0xc1);
266     return self;
267 }
abc_deleteproperty(code_t * prev,char * name)268 code_t* abc_deleteproperty(code_t*prev, char* name)
269 {
270     code_t*self = add_opcode(prev, 0x6a);
271     self->data[0] = multiname_fromstring(name);
272     return self;
273 }
abc_deleteproperty2(code_t * prev,multiname_t * name)274 code_t* abc_deleteproperty2(code_t*prev, multiname_t* name)
275 {
276     code_t*self = add_opcode(prev, 0x6a);
277     self->data[0] = multiname_clone(name);
278     return self;
279 }
abc_divide(code_t * prev)280 code_t* abc_divide(code_t*prev)
281 {
282     code_t*self = add_opcode(prev, 0xa3);
283     return self;
284 }
abc_dup(code_t * prev)285 code_t* abc_dup(code_t*prev)
286 {
287     code_t*self = add_opcode(prev, 0x2a);
288     return self;
289 }
abc_dxns(code_t * prev,char * name)290 code_t* abc_dxns(code_t*prev, char* name)
291 {
292     code_t*self = add_opcode(prev, 0x06);
293     self->data[0] = string_new4(name);
294     return self;
295 }
abc_dxns2(code_t * prev,string_t * s)296 code_t* abc_dxns2(code_t*prev, string_t* s)
297 {
298     code_t*self = add_opcode(prev, 0x06);
299     self->data[0] = string_dup3(s);
300     return self;
301 }
abc_dxnslate(code_t * prev)302 code_t* abc_dxnslate(code_t*prev)
303 {
304     code_t*self = add_opcode(prev, 0x07);
305     return self;
306 }
abc_equals(code_t * prev)307 code_t* abc_equals(code_t*prev)
308 {
309     code_t*self = add_opcode(prev, 0xab);
310     return self;
311 }
abc_esc_xattr(code_t * prev)312 code_t* abc_esc_xattr(code_t*prev)
313 {
314     code_t*self = add_opcode(prev, 0x72);
315     return self;
316 }
abc_esc_xelem(code_t * prev)317 code_t* abc_esc_xelem(code_t*prev)
318 {
319     code_t*self = add_opcode(prev, 0x71);
320     return self;
321 }
abc_findproperty(code_t * prev,char * name)322 code_t* abc_findproperty(code_t*prev, char* name)
323 {
324     code_t*self = add_opcode(prev, 0x5e);
325     self->data[0] = multiname_fromstring(name);
326     return self;
327 }
abc_findproperty2(code_t * prev,multiname_t * name)328 code_t* abc_findproperty2(code_t*prev, multiname_t* name)
329 {
330     code_t*self = add_opcode(prev, 0x5e);
331     self->data[0] = multiname_clone(name);
332     return self;
333 }
abc_findpropstrict(code_t * prev,char * name)334 code_t* abc_findpropstrict(code_t*prev, char* name)
335 {
336     code_t*self = add_opcode(prev, 0x5d);
337     self->data[0] = multiname_fromstring(name);
338     return self;
339 }
abc_findpropstrict2(code_t * prev,multiname_t * name)340 code_t* abc_findpropstrict2(code_t*prev, multiname_t* name)
341 {
342     code_t*self = add_opcode(prev, 0x5d);
343     self->data[0] = multiname_clone(name);
344     return self;
345 }
abc_getdescendants(code_t * prev,char * name)346 code_t* abc_getdescendants(code_t*prev, char* name)
347 {
348     code_t*self = add_opcode(prev, 0x59);
349     self->data[0] = multiname_fromstring(name);
350     return self;
351 }
abc_getdescendants2(code_t * prev,multiname_t * name)352 code_t* abc_getdescendants2(code_t*prev, multiname_t* name)
353 {
354     code_t*self = add_opcode(prev, 0x59);
355     self->data[0] = multiname_clone(name);
356     return self;
357 }
abc_getglobalscope(code_t * prev)358 code_t* abc_getglobalscope(code_t*prev)
359 {
360     code_t*self = add_opcode(prev, 0x64);
361     return self;
362 }
abc_getglobalslot(code_t * prev,int v)363 code_t* abc_getglobalslot(code_t*prev, int v)
364 {
365     code_t*self = add_opcode(prev, 0x6e);
366     self->data[0] = (void*)(ptroff_t)v;
367     return self;
368 }
abc_getlex(code_t * prev,char * name)369 code_t* abc_getlex(code_t*prev, char* name)
370 {
371     code_t*self = add_opcode(prev, 0x60);
372     self->data[0] = multiname_fromstring(name);
373     return self;
374 }
abc_getlex2(code_t * prev,multiname_t * name)375 code_t* abc_getlex2(code_t*prev, multiname_t* name)
376 {
377     code_t*self = add_opcode(prev, 0x60);
378     self->data[0] = multiname_clone(name);
379     return self;
380 }
abc_getlocal(code_t * prev,int reg)381 code_t* abc_getlocal(code_t*prev, int reg)
382 {
383     code_t*self = add_opcode(prev, 0x62);
384     self->data[0] = (void*)(ptroff_t)reg;
385     return self;
386 }
abc_getlocal_0(code_t * prev)387 code_t* abc_getlocal_0(code_t*prev)
388 {
389     code_t*self = add_opcode(prev, 0xd0);
390     return self;
391 }
abc_getlocal_1(code_t * prev)392 code_t* abc_getlocal_1(code_t*prev)
393 {
394     code_t*self = add_opcode(prev, 0xd1);
395     return self;
396 }
abc_getlocal_2(code_t * prev)397 code_t* abc_getlocal_2(code_t*prev)
398 {
399     code_t*self = add_opcode(prev, 0xd2);
400     return self;
401 }
abc_getlocal_3(code_t * prev)402 code_t* abc_getlocal_3(code_t*prev)
403 {
404     code_t*self = add_opcode(prev, 0xd3);
405     return self;
406 }
abc_getproperty(code_t * prev,char * name)407 code_t* abc_getproperty(code_t*prev, char* name)
408 {
409     code_t*self = add_opcode(prev, 0x66);
410     self->data[0] = multiname_fromstring(name);
411     return self;
412 }
abc_getproperty2(code_t * prev,multiname_t * name)413 code_t* abc_getproperty2(code_t*prev, multiname_t* name)
414 {
415     code_t*self = add_opcode(prev, 0x66);
416     self->data[0] = multiname_clone(name);
417     return self;
418 }
abc_getscopeobject(code_t * prev,int v)419 code_t* abc_getscopeobject(code_t*prev, int v)
420 {
421     code_t*self = add_opcode(prev, 0x65);
422     self->data[0] = (void*)(ptroff_t)v;
423     return self;
424 }
abc_getslot(code_t * prev,int v)425 code_t* abc_getslot(code_t*prev, int v)
426 {
427     code_t*self = add_opcode(prev, 0x6c);
428     self->data[0] = (void*)(ptroff_t)v;
429     return self;
430 }
abc_getsuper(code_t * prev,char * name)431 code_t* abc_getsuper(code_t*prev, char* name)
432 {
433     code_t*self = add_opcode(prev, 0x04);
434     self->data[0] = multiname_fromstring(name);
435     return self;
436 }
abc_getsuper2(code_t * prev,multiname_t * name)437 code_t* abc_getsuper2(code_t*prev, multiname_t* name)
438 {
439     code_t*self = add_opcode(prev, 0x04);
440     self->data[0] = multiname_clone(name);
441     return self;
442 }
abc_greaterthan(code_t * prev)443 code_t* abc_greaterthan(code_t*prev)
444 {
445     code_t*self = add_opcode(prev, 0xaf);
446     return self;
447 }
abc_greaterequals(code_t * prev)448 code_t* abc_greaterequals(code_t*prev)
449 {
450     code_t*self = add_opcode(prev, 0xb0);
451     return self;
452 }
abc_hasnext(code_t * prev)453 code_t* abc_hasnext(code_t*prev)
454 {
455     code_t*self = add_opcode(prev, 0x1f);
456     return self;
457 }
abc_hasnext2(code_t * prev,int reg,int reg2)458 code_t* abc_hasnext2(code_t*prev, int reg, int reg2)
459 {
460     code_t*self = add_opcode(prev, 0x32);
461     self->data[0] = (void*)(ptroff_t)reg;
462     self->data[1] = (void*)(ptroff_t)reg2;
463     return self;
464 }
abc_ifeq(code_t * prev,code_t * label)465 code_t* abc_ifeq(code_t*prev, code_t* label)
466 {
467     code_t*self = add_opcode(prev, 0x13);
468     self->data[0] = 0; //placeholder
469     self->branch = label;
470     return self;
471 }
abc_iffalse(code_t * prev,code_t * label)472 code_t* abc_iffalse(code_t*prev, code_t* label)
473 {
474     code_t*self = add_opcode(prev, 0x12);
475     self->data[0] = 0; //placeholder
476     self->branch = label;
477     return self;
478 }
abc_ifge(code_t * prev,code_t * label)479 code_t* abc_ifge(code_t*prev, code_t* label)
480 {
481     code_t*self = add_opcode(prev, 0x18);
482     self->data[0] = 0; //placeholder
483     self->branch = label;
484     return self;
485 }
abc_ifgt(code_t * prev,code_t * label)486 code_t* abc_ifgt(code_t*prev, code_t* label)
487 {
488     code_t*self = add_opcode(prev, 0x17);
489     self->data[0] = 0; //placeholder
490     self->branch = label;
491     return self;
492 }
abc_ifle(code_t * prev,code_t * label)493 code_t* abc_ifle(code_t*prev, code_t* label)
494 {
495     code_t*self = add_opcode(prev, 0x16);
496     self->data[0] = 0; //placeholder
497     self->branch = label;
498     return self;
499 }
abc_iflt(code_t * prev,code_t * label)500 code_t* abc_iflt(code_t*prev, code_t* label)
501 {
502     code_t*self = add_opcode(prev, 0x15);
503     self->data[0] = 0; //placeholder
504     self->branch = label;
505     return self;
506 }
abc_ifnge(code_t * prev,code_t * label)507 code_t* abc_ifnge(code_t*prev, code_t* label)
508 {
509     code_t*self = add_opcode(prev, 0x0f);
510     self->data[0] = 0; //placeholder
511     self->branch = label;
512     return self;
513 }
abc_ifngt(code_t * prev,code_t * label)514 code_t* abc_ifngt(code_t*prev, code_t* label)
515 {
516     code_t*self = add_opcode(prev, 0x0e);
517     self->data[0] = 0; //placeholder
518     self->branch = label;
519     return self;
520 }
abc_ifnle(code_t * prev,code_t * label)521 code_t* abc_ifnle(code_t*prev, code_t* label)
522 {
523     code_t*self = add_opcode(prev, 0x0d);
524     self->data[0] = 0; //placeholder
525     self->branch = label;
526     return self;
527 }
abc_ifnlt(code_t * prev,code_t * label)528 code_t* abc_ifnlt(code_t*prev, code_t* label)
529 {
530     code_t*self = add_opcode(prev, 0x0c);
531     self->data[0] = 0; //placeholder
532     self->branch = label;
533     return self;
534 }
abc_ifne(code_t * prev,code_t * label)535 code_t* abc_ifne(code_t*prev, code_t* label)
536 {
537     code_t*self = add_opcode(prev, 0x14);
538     self->data[0] = 0; //placeholder
539     self->branch = label;
540     return self;
541 }
abc_ifstricteq(code_t * prev,code_t * label)542 code_t* abc_ifstricteq(code_t*prev, code_t* label)
543 {
544     code_t*self = add_opcode(prev, 0x19);
545     self->data[0] = 0; //placeholder
546     self->branch = label;
547     return self;
548 }
abc_ifstrictne(code_t * prev,code_t * label)549 code_t* abc_ifstrictne(code_t*prev, code_t* label)
550 {
551     code_t*self = add_opcode(prev, 0x1a);
552     self->data[0] = 0; //placeholder
553     self->branch = label;
554     return self;
555 }
abc_iftrue(code_t * prev,code_t * label)556 code_t* abc_iftrue(code_t*prev, code_t* label)
557 {
558     code_t*self = add_opcode(prev, 0x11);
559     self->data[0] = 0; //placeholder
560     self->branch = label;
561     return self;
562 }
abc_in(code_t * prev)563 code_t* abc_in(code_t*prev)
564 {
565     code_t*self = add_opcode(prev, 0xb4);
566     return self;
567 }
abc_inclocal(code_t * prev,int reg)568 code_t* abc_inclocal(code_t*prev, int reg)
569 {
570     code_t*self = add_opcode(prev, 0x92);
571     self->data[0] = (void*)(ptroff_t)reg;
572     return self;
573 }
abc_inclocal_i(code_t * prev,int reg)574 code_t* abc_inclocal_i(code_t*prev, int reg)
575 {
576     code_t*self = add_opcode(prev, 0xc2);
577     self->data[0] = (void*)(ptroff_t)reg;
578     return self;
579 }
abc_increment(code_t * prev)580 code_t* abc_increment(code_t*prev)
581 {
582     code_t*self = add_opcode(prev, 0x91);
583     return self;
584 }
abc_increment_i(code_t * prev)585 code_t* abc_increment_i(code_t*prev)
586 {
587     code_t*self = add_opcode(prev, 0xc0);
588     return self;
589 }
abc_initproperty(code_t * prev,char * name)590 code_t* abc_initproperty(code_t*prev, char* name)
591 {
592     code_t*self = add_opcode(prev, 0x68);
593     self->data[0] = multiname_fromstring(name);
594     return self;
595 }
abc_initproperty2(code_t * prev,multiname_t * name)596 code_t* abc_initproperty2(code_t*prev, multiname_t* name)
597 {
598     code_t*self = add_opcode(prev, 0x68);
599     self->data[0] = multiname_clone(name);
600     return self;
601 }
abc_instanceof(code_t * prev)602 code_t* abc_instanceof(code_t*prev)
603 {
604     code_t*self = add_opcode(prev, 0xb1);
605     return self;
606 }
abc_istype(code_t * prev,char * name)607 code_t* abc_istype(code_t*prev, char* name)
608 {
609     code_t*self = add_opcode(prev, 0xb2);
610     self->data[0] = multiname_fromstring(name);
611     return self;
612 }
abc_istype2(code_t * prev,multiname_t * name)613 code_t* abc_istype2(code_t*prev, multiname_t* name)
614 {
615     code_t*self = add_opcode(prev, 0xb2);
616     self->data[0] = multiname_clone(name);
617     return self;
618 }
abc_istypelate(code_t * prev)619 code_t* abc_istypelate(code_t*prev)
620 {
621     code_t*self = add_opcode(prev, 0xb3);
622     return self;
623 }
abc_jump(code_t * prev,code_t * label)624 code_t* abc_jump(code_t*prev, code_t* label)
625 {
626     code_t*self = add_opcode(prev, 0x10);
627     self->data[0] = 0; //placeholder
628     self->branch = label;
629     return self;
630 }
abc_kill(code_t * prev,int reg)631 code_t* abc_kill(code_t*prev, int reg)
632 {
633     code_t*self = add_opcode(prev, 0x08);
634     self->data[0] = (void*)(ptroff_t)reg;
635     return self;
636 }
abc_label(code_t * prev)637 code_t* abc_label(code_t*prev)
638 {
639     code_t*self = add_opcode(prev, 0x09);
640     return self;
641 }
abc_lessequals(code_t * prev)642 code_t* abc_lessequals(code_t*prev)
643 {
644     code_t*self = add_opcode(prev, 0xae);
645     return self;
646 }
abc_lessthan(code_t * prev)647 code_t* abc_lessthan(code_t*prev)
648 {
649     code_t*self = add_opcode(prev, 0xad);
650     return self;
651 }
abc_lookupswitch(code_t * prev,lookupswitch_t * l)652 code_t* abc_lookupswitch(code_t*prev, lookupswitch_t* l)
653 {
654     code_t*self = add_opcode(prev, 0x1b);
655     self->data[0] = l;
656     return self;
657 }
abc_lshift(code_t * prev)658 code_t* abc_lshift(code_t*prev)
659 {
660     code_t*self = add_opcode(prev, 0xa5);
661     return self;
662 }
abc_modulo(code_t * prev)663 code_t* abc_modulo(code_t*prev)
664 {
665     code_t*self = add_opcode(prev, 0xa4);
666     return self;
667 }
abc_multiply(code_t * prev)668 code_t* abc_multiply(code_t*prev)
669 {
670     code_t*self = add_opcode(prev, 0xa2);
671     return self;
672 }
abc_multiply_i(code_t * prev)673 code_t* abc_multiply_i(code_t*prev)
674 {
675     code_t*self = add_opcode(prev, 0xc7);
676     return self;
677 }
abc_negate(code_t * prev)678 code_t* abc_negate(code_t*prev)
679 {
680     code_t*self = add_opcode(prev, 0x90);
681     return self;
682 }
abc_negate_i(code_t * prev)683 code_t* abc_negate_i(code_t*prev)
684 {
685     code_t*self = add_opcode(prev, 0xc4);
686     return self;
687 }
abc_newactivation(code_t * prev)688 code_t* abc_newactivation(code_t*prev)
689 {
690     code_t*self = add_opcode(prev, 0x57);
691     return self;
692 }
abc_newarray(code_t * prev,int v)693 code_t* abc_newarray(code_t*prev, int v)
694 {
695     code_t*self = add_opcode(prev, 0x56);
696     self->data[0] = (void*)(ptroff_t)v;
697     return self;
698 }
abc_newcatch(code_t * prev,int v)699 code_t* abc_newcatch(code_t*prev, int v)
700 {
701     code_t*self = add_opcode(prev, 0x5a);
702     self->data[0] = (void*)(ptroff_t)v;
703     return self;
704 }
abc_newclass(code_t * prev,abc_class_t * m)705 code_t* abc_newclass(code_t*prev, abc_class_t* m)
706 {
707     code_t*self = add_opcode(prev, 0x58);
708     self->data[0] = m;
709     return self;
710 }
abc_newfunction(code_t * prev,abc_method_t * m)711 code_t* abc_newfunction(code_t*prev, abc_method_t* m)
712 {
713     code_t*self = add_opcode(prev, 0x40);
714     self->data[0] = m;
715     return self;
716 }
abc_newobject(code_t * prev,int v)717 code_t* abc_newobject(code_t*prev, int v)
718 {
719     code_t*self = add_opcode(prev, 0x55);
720     self->data[0] = (void*)(ptroff_t)v;
721     return self;
722 }
abc_nextname(code_t * prev)723 code_t* abc_nextname(code_t*prev)
724 {
725     code_t*self = add_opcode(prev, 0x1e);
726     return self;
727 }
abc_nextvalue(code_t * prev)728 code_t* abc_nextvalue(code_t*prev)
729 {
730     code_t*self = add_opcode(prev, 0x23);
731     return self;
732 }
abc_nop(code_t * prev)733 code_t* abc_nop(code_t*prev)
734 {
735     code_t*self = add_opcode(prev, 0x02);
736     return self;
737 }
abc_not(code_t * prev)738 code_t* abc_not(code_t*prev)
739 {
740     code_t*self = add_opcode(prev, 0x96);
741     return self;
742 }
abc_pop(code_t * prev)743 code_t* abc_pop(code_t*prev)
744 {
745     code_t*self = add_opcode(prev, 0x29);
746     return self;
747 }
abc_popscope(code_t * prev)748 code_t* abc_popscope(code_t*prev)
749 {
750     code_t*self = add_opcode(prev, 0x1d);
751     return self;
752 }
abc_pushbyte(code_t * prev,int v)753 code_t* abc_pushbyte(code_t*prev, int v)
754 {
755     code_t*self = add_opcode(prev, 0x24);
756     self->data[0] = (void*)(ptroff_t)v;
757     return self;
758 }
abc_pushdouble(code_t * prev,double f)759 code_t* abc_pushdouble(code_t*prev, double f)
760 {
761     code_t*self = add_opcode(prev, 0x2f);
762     double*fp = malloc(sizeof(double));
763     *fp = f;
764     self->data[0] = fp;
765     return self;
766 }
abc_pushfalse(code_t * prev)767 code_t* abc_pushfalse(code_t*prev)
768 {
769     code_t*self = add_opcode(prev, 0x27);
770     return self;
771 }
abc_pushint(code_t * prev,int i)772 code_t* abc_pushint(code_t*prev, int i)
773 {
774     code_t*self = add_opcode(prev, 0x2d);
775     self->data[0] = (void*)(ptroff_t)i;
776     return self;
777 }
abc_pushnamespace(code_t * prev,namespace_t * ns)778 code_t* abc_pushnamespace(code_t*prev, namespace_t* ns)
779 {
780     code_t*self = add_opcode(prev, 0x31);
781     self->data[0] = namespace_clone(ns);
782     return self;
783 }
abc_pushnan(code_t * prev)784 code_t* abc_pushnan(code_t*prev)
785 {
786     code_t*self = add_opcode(prev, 0x28);
787     return self;
788 }
abc_pushnull(code_t * prev)789 code_t* abc_pushnull(code_t*prev)
790 {
791     code_t*self = add_opcode(prev, 0x20);
792     return self;
793 }
abc_pushscope(code_t * prev)794 code_t* abc_pushscope(code_t*prev)
795 {
796     code_t*self = add_opcode(prev, 0x30);
797     return self;
798 }
abc_pushshort(code_t * prev,int v)799 code_t* abc_pushshort(code_t*prev, int v)
800 {
801     code_t*self = add_opcode(prev, 0x25);
802     self->data[0] = (void*)(ptroff_t)v;
803     return self;
804 }
abc_pushstring(code_t * prev,char * name)805 code_t* abc_pushstring(code_t*prev, char* name)
806 {
807     code_t*self = add_opcode(prev, 0x2c);
808     self->data[0] = string_new4(name);
809     return self;
810 }
abc_pushstring2(code_t * prev,string_t * s)811 code_t* abc_pushstring2(code_t*prev, string_t* s)
812 {
813     code_t*self = add_opcode(prev, 0x2c);
814     self->data[0] = string_dup3(s);
815     return self;
816 }
abc_pushtrue(code_t * prev)817 code_t* abc_pushtrue(code_t*prev)
818 {
819     code_t*self = add_opcode(prev, 0x26);
820     return self;
821 }
abc_pushuint(code_t * prev,unsigned int u)822 code_t* abc_pushuint(code_t*prev, unsigned int u)
823 {
824     code_t*self = add_opcode(prev, 0x2e);
825     self->data[0] = (void*)(ptroff_t)u;
826     return self;
827 }
abc_pushundefined(code_t * prev)828 code_t* abc_pushundefined(code_t*prev)
829 {
830     code_t*self = add_opcode(prev, 0x21);
831     return self;
832 }
abc_pushwith(code_t * prev)833 code_t* abc_pushwith(code_t*prev)
834 {
835     code_t*self = add_opcode(prev, 0x1c);
836     return self;
837 }
abc_returnvalue(code_t * prev)838 code_t* abc_returnvalue(code_t*prev)
839 {
840     code_t*self = add_opcode(prev, 0x48);
841     return self;
842 }
abc_returnvoid(code_t * prev)843 code_t* abc_returnvoid(code_t*prev)
844 {
845     code_t*self = add_opcode(prev, 0x47);
846     return self;
847 }
abc_rshift(code_t * prev)848 code_t* abc_rshift(code_t*prev)
849 {
850     code_t*self = add_opcode(prev, 0xa6);
851     return self;
852 }
abc_setlocal(code_t * prev,int reg)853 code_t* abc_setlocal(code_t*prev, int reg)
854 {
855     code_t*self = add_opcode(prev, 0x63);
856     self->data[0] = (void*)(ptroff_t)reg;
857     return self;
858 }
abc_setlocal_0(code_t * prev)859 code_t* abc_setlocal_0(code_t*prev)
860 {
861     code_t*self = add_opcode(prev, 0xd4);
862     return self;
863 }
abc_setlocal_1(code_t * prev)864 code_t* abc_setlocal_1(code_t*prev)
865 {
866     code_t*self = add_opcode(prev, 0xd5);
867     return self;
868 }
abc_setlocal_2(code_t * prev)869 code_t* abc_setlocal_2(code_t*prev)
870 {
871     code_t*self = add_opcode(prev, 0xd6);
872     return self;
873 }
abc_setlocal_3(code_t * prev)874 code_t* abc_setlocal_3(code_t*prev)
875 {
876     code_t*self = add_opcode(prev, 0xd7);
877     return self;
878 }
abc_setglobalslot(code_t * prev,int v)879 code_t* abc_setglobalslot(code_t*prev, int v)
880 {
881     code_t*self = add_opcode(prev, 0x6f);
882     self->data[0] = (void*)(ptroff_t)v;
883     return self;
884 }
abc_setproperty(code_t * prev,char * name)885 code_t* abc_setproperty(code_t*prev, char* name)
886 {
887     code_t*self = add_opcode(prev, 0x61);
888     self->data[0] = multiname_fromstring(name);
889     return self;
890 }
abc_setproperty2(code_t * prev,multiname_t * name)891 code_t* abc_setproperty2(code_t*prev, multiname_t* name)
892 {
893     code_t*self = add_opcode(prev, 0x61);
894     self->data[0] = multiname_clone(name);
895     return self;
896 }
abc_setslot(code_t * prev,int v)897 code_t* abc_setslot(code_t*prev, int v)
898 {
899     code_t*self = add_opcode(prev, 0x6d);
900     self->data[0] = (void*)(ptroff_t)v;
901     return self;
902 }
abc_setsuper(code_t * prev,char * name)903 code_t* abc_setsuper(code_t*prev, char* name)
904 {
905     code_t*self = add_opcode(prev, 0x05);
906     self->data[0] = multiname_fromstring(name);
907     return self;
908 }
abc_setsuper2(code_t * prev,multiname_t * name)909 code_t* abc_setsuper2(code_t*prev, multiname_t* name)
910 {
911     code_t*self = add_opcode(prev, 0x05);
912     self->data[0] = multiname_clone(name);
913     return self;
914 }
abc_strictequals(code_t * prev)915 code_t* abc_strictequals(code_t*prev)
916 {
917     code_t*self = add_opcode(prev, 0xac);
918     return self;
919 }
abc_subtract(code_t * prev)920 code_t* abc_subtract(code_t*prev)
921 {
922     code_t*self = add_opcode(prev, 0xa1);
923     return self;
924 }
abc_subtract_i(code_t * prev)925 code_t* abc_subtract_i(code_t*prev)
926 {
927     code_t*self = add_opcode(prev, 0xc6);
928     return self;
929 }
abc_swap(code_t * prev)930 code_t* abc_swap(code_t*prev)
931 {
932     code_t*self = add_opcode(prev, 0x2b);
933     return self;
934 }
abc_throw(code_t * prev)935 code_t* abc_throw(code_t*prev)
936 {
937     code_t*self = add_opcode(prev, 0x03);
938     return self;
939 }
abc_typeof(code_t * prev)940 code_t* abc_typeof(code_t*prev)
941 {
942     code_t*self = add_opcode(prev, 0x95);
943     return self;
944 }
abc_urshift(code_t * prev)945 code_t* abc_urshift(code_t*prev)
946 {
947     code_t*self = add_opcode(prev, 0xa7);
948     return self;
949 }
abc_applytype(code_t * prev,int v)950 code_t* abc_applytype(code_t*prev, int v)
951 {
952     code_t*self = add_opcode(prev, 0x53);
953     self->data[0] = (void*)(ptroff_t)v;
954     return self;
955 }
abc___pushpackage__(code_t * prev,char * name)956 code_t* abc___pushpackage__(code_t*prev, char* name)
957 {
958     code_t*self = add_opcode(prev, 0xfb);
959     self->data[0] = string_new4(name);
960     return self;
961 }
abc___pushpackage__2(code_t * prev,string_t * s)962 code_t* abc___pushpackage__2(code_t*prev, string_t* s)
963 {
964     code_t*self = add_opcode(prev, 0xfb);
965     self->data[0] = string_dup3(s);
966     return self;
967 }
abc___rethrow__(code_t * prev)968 code_t* abc___rethrow__(code_t*prev)
969 {
970     code_t*self = add_opcode(prev, 0xfc);
971     return self;
972 }
abc___fallthrough__(code_t * prev,char * name)973 code_t* abc___fallthrough__(code_t*prev, char* name)
974 {
975     code_t*self = add_opcode(prev, 0xfd);
976     self->data[0] = string_new4(name);
977     return self;
978 }
abc___fallthrough__2(code_t * prev,string_t * s)979 code_t* abc___fallthrough__2(code_t*prev, string_t* s)
980 {
981     code_t*self = add_opcode(prev, 0xfd);
982     self->data[0] = string_dup3(s);
983     return self;
984 }
abc___continue__(code_t * prev,char * name)985 code_t* abc___continue__(code_t*prev, char* name)
986 {
987     code_t*self = add_opcode(prev, 0xfe);
988     self->data[0] = string_new4(name);
989     return self;
990 }
abc___continue__2(code_t * prev,string_t * s)991 code_t* abc___continue__2(code_t*prev, string_t* s)
992 {
993     code_t*self = add_opcode(prev, 0xfe);
994     self->data[0] = string_dup3(s);
995     return self;
996 }
abc___break__(code_t * prev,char * name)997 code_t* abc___break__(code_t*prev, char* name)
998 {
999     code_t*self = add_opcode(prev, 0xff);
1000     self->data[0] = string_new4(name);
1001     return self;
1002 }
abc___break__2(code_t * prev,string_t * s)1003 code_t* abc___break__2(code_t*prev, string_t* s)
1004 {
1005     code_t*self = add_opcode(prev, 0xff);
1006     self->data[0] = string_dup3(s);
1007     return self;
1008 }
1009