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