added GPL headers
[swftools.git] / lib / as3 / opcodes.h
1 /* opcodes.h
2
3    Routines for handling Flash2 AVM2 ABC Actionscript
4
5    Extension module for the rfxswf library.
6    Part of the swftools package.
7
8    Copyright (c) 2008 Matthias Kramm <kramm@quiss.org>
9  
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 2 of the License, or
13    (at your option) any later version.
14
15    This program is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program; if not, write to the Free Software
22    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
23
24 #ifndef __opcodes_h__
25 #define __opcodes_h__
26 #include "abc.h"
27 #include "pool.h"
28 #include "code.h"
29 code_t* abc_add(code_t*prev);
30 #define add(method) (method->code = abc_add(method->code))
31 code_t* abc_add_i(code_t*prev);
32 #define add_i(method) (method->code = abc_add_i(method->code))
33 code_t* abc_astype(code_t*prev, char* name);
34 #define astype(method,name) (method->code = abc_astype(method->code,name))
35 code_t* abc_astype2(code_t*prev, multiname_t* name);
36 #define astype2(method,name) (method->code = abc_astype2(method->code,name))
37 code_t* abc_astypelate(code_t*prev);
38 #define astypelate(method) (method->code = abc_astypelate(method->code))
39 code_t* abc_bitand(code_t*prev);
40 #define bitand(method) (method->code = abc_bitand(method->code))
41 code_t* abc_bitnot(code_t*prev);
42 #define bitnot(method) (method->code = abc_bitnot(method->code))
43 code_t* abc_bitor(code_t*prev);
44 #define bitor(method) (method->code = abc_bitor(method->code))
45 code_t* abc_bitxor(code_t*prev);
46 #define bitxor(method) (method->code = abc_bitxor(method->code))
47 code_t* abc_call(code_t*prev, int v);
48 #define call(method,v) (method->code = abc_call(method->code,v))
49 code_t* abc_callmethod(code_t*prev, abc_method_body_t* m, int v);
50 #define callmethod(method,m,v) (method->code = abc_callmethod(method->code,m,v))
51 code_t* abc_callproplex(code_t*prev, char* name, int v);
52 #define callproplex(method,name,v) (method->code = abc_callproplex(method->code,name,v))
53 code_t* abc_callproplex2(code_t*prev, multiname_t* name, int v);
54 #define callproplex2(method,name,v) (method->code = abc_callproplex2(method->code,name,v))
55 code_t* abc_callproperty(code_t*prev, char* name, int v);
56 #define callproperty(method,name,v) (method->code = abc_callproperty(method->code,name,v))
57 code_t* abc_callproperty2(code_t*prev, multiname_t* name, int v);
58 #define callproperty2(method,name,v) (method->code = abc_callproperty2(method->code,name,v))
59 code_t* abc_callpropvoid(code_t*prev, char* name, int v);
60 #define callpropvoid(method,name,v) (method->code = abc_callpropvoid(method->code,name,v))
61 code_t* abc_callpropvoid2(code_t*prev, multiname_t* name, int v);
62 #define callpropvoid2(method,name,v) (method->code = abc_callpropvoid2(method->code,name,v))
63 code_t* abc_callstatic(code_t*prev, abc_method_t* m, int v);
64 #define callstatic(method,m,v) (method->code = abc_callstatic(method->code,m,v))
65 code_t* abc_callsuper(code_t*prev, char* name, int v);
66 #define callsuper(method,name,v) (method->code = abc_callsuper(method->code,name,v))
67 code_t* abc_callsuper2(code_t*prev, multiname_t* name, int v);
68 #define callsuper2(method,name,v) (method->code = abc_callsuper2(method->code,name,v))
69 code_t* abc_callsupervoid(code_t*prev, char* name, int v);
70 #define callsupervoid(method,name,v) (method->code = abc_callsupervoid(method->code,name,v))
71 code_t* abc_callsupervoid2(code_t*prev, multiname_t* name, int v);
72 #define callsupervoid2(method,name,v) (method->code = abc_callsupervoid2(method->code,name,v))
73 code_t* abc_checkfilter(code_t*prev);
74 #define checkfilter(method) (method->code = abc_checkfilter(method->code))
75 code_t* abc_coerce(code_t*prev, char* name);
76 #define coerce(method,name) (method->code = abc_coerce(method->code,name))
77 code_t* abc_coerce2(code_t*prev, multiname_t* name);
78 #define coerce2(method,name) (method->code = abc_coerce2(method->code,name))
79 code_t* abc_coerce_a(code_t*prev);
80 #define coerce_a(method) (method->code = abc_coerce_a(method->code))
81 code_t* abc_coerce_s(code_t*prev);
82 #define coerce_s(method) (method->code = abc_coerce_s(method->code))
83 code_t* abc_construct(code_t*prev, int v);
84 #define construct(method,v) (method->code = abc_construct(method->code,v))
85 code_t* abc_constructprop(code_t*prev, char* name, int v);
86 #define constructprop(method,name,v) (method->code = abc_constructprop(method->code,name,v))
87 code_t* abc_constructprop2(code_t*prev, multiname_t* name, int v);
88 #define constructprop2(method,name,v) (method->code = abc_constructprop2(method->code,name,v))
89 code_t* abc_constructsuper(code_t*prev, int v);
90 #define constructsuper(method,v) (method->code = abc_constructsuper(method->code,v))
91 code_t* abc_convert_b(code_t*prev);
92 #define convert_b(method) (method->code = abc_convert_b(method->code))
93 code_t* abc_convert_i(code_t*prev);
94 #define convert_i(method) (method->code = abc_convert_i(method->code))
95 code_t* abc_convert_d(code_t*prev);
96 #define convert_d(method) (method->code = abc_convert_d(method->code))
97 code_t* abc_convert_o(code_t*prev);
98 #define convert_o(method) (method->code = abc_convert_o(method->code))
99 code_t* abc_convert_u(code_t*prev);
100 #define convert_u(method) (method->code = abc_convert_u(method->code))
101 code_t* abc_convert_s(code_t*prev);
102 #define convert_s(method) (method->code = abc_convert_s(method->code))
103 code_t* abc_debug(code_t*prev, void* debuginfo);
104 #define debug(method,debuginfo) (method->code = abc_debug(method->code,debuginfo))
105 code_t* abc_debugfile(code_t*prev, char* s);
106 #define debugfile(method,s) (method->code = abc_debugfile(method->code,s))
107 code_t* abc_debugline(code_t*prev, int v);
108 #define debugline(method,v) (method->code = abc_debugline(method->code,v))
109 code_t* abc_declocal(code_t*prev, int reg);
110 #define declocal(method,reg) (method->code = abc_declocal(method->code,reg))
111 code_t* abc_declocal_i(code_t*prev, int reg);
112 #define declocal_i(method,reg) (method->code = abc_declocal_i(method->code,reg))
113 code_t* abc_decrement(code_t*prev);
114 #define decrement(method) (method->code = abc_decrement(method->code))
115 code_t* abc_decrement_i(code_t*prev);
116 #define decrement_i(method) (method->code = abc_decrement_i(method->code))
117 code_t* abc_deleteproperty(code_t*prev, char* name);
118 #define deleteproperty(method,name) (method->code = abc_deleteproperty(method->code,name))
119 code_t* abc_deleteproperty2(code_t*prev, multiname_t* name);
120 #define deleteproperty2(method,name) (method->code = abc_deleteproperty2(method->code,name))
121 code_t* abc_divide(code_t*prev);
122 #define divide(method) (method->code = abc_divide(method->code))
123 code_t* abc_dup(code_t*prev);
124 #define dup(method) (method->code = abc_dup(method->code))
125 code_t* abc_dxns(code_t*prev, char* s);
126 #define dxns(method,s) (method->code = abc_dxns(method->code,s))
127 code_t* abc_dxnslate(code_t*prev);
128 #define dxnslate(method) (method->code = abc_dxnslate(method->code))
129 code_t* abc_equals(code_t*prev);
130 #define equals(method) (method->code = abc_equals(method->code))
131 code_t* abc_esc_xattr(code_t*prev);
132 #define esc_xattr(method) (method->code = abc_esc_xattr(method->code))
133 code_t* abc_esc_xelem(code_t*prev);
134 #define esc_xelem(method) (method->code = abc_esc_xelem(method->code))
135 code_t* abc_findproperty(code_t*prev, char* name);
136 #define findproperty(method,name) (method->code = abc_findproperty(method->code,name))
137 code_t* abc_findproperty2(code_t*prev, multiname_t* name);
138 #define findproperty2(method,name) (method->code = abc_findproperty2(method->code,name))
139 code_t* abc_findpropstrict(code_t*prev, char* name);
140 #define findpropstrict(method,name) (method->code = abc_findpropstrict(method->code,name))
141 code_t* abc_findpropstrict2(code_t*prev, multiname_t* name);
142 #define findpropstrict2(method,name) (method->code = abc_findpropstrict2(method->code,name))
143 code_t* abc_getdescendants(code_t*prev, char* name);
144 #define getdescendants(method,name) (method->code = abc_getdescendants(method->code,name))
145 code_t* abc_getdescendants2(code_t*prev, multiname_t* name);
146 #define getdescendants2(method,name) (method->code = abc_getdescendants2(method->code,name))
147 code_t* abc_getglobalscope(code_t*prev);
148 #define getglobalscope(method) (method->code = abc_getglobalscope(method->code))
149 code_t* abc_getglobalslot(code_t*prev, int v);
150 #define getglobalslot(method,v) (method->code = abc_getglobalslot(method->code,v))
151 code_t* abc_getlex(code_t*prev, char* name);
152 #define getlex(method,name) (method->code = abc_getlex(method->code,name))
153 code_t* abc_getlex2(code_t*prev, multiname_t* name);
154 #define getlex2(method,name) (method->code = abc_getlex2(method->code,name))
155 code_t* abc_getlocal(code_t*prev, int reg);
156 #define getlocal(method,reg) (method->code = abc_getlocal(method->code,reg))
157 code_t* abc_getlocal_0(code_t*prev);
158 #define getlocal_0(method) (method->code = abc_getlocal_0(method->code))
159 code_t* abc_getlocal_1(code_t*prev);
160 #define getlocal_1(method) (method->code = abc_getlocal_1(method->code))
161 code_t* abc_getlocal_2(code_t*prev);
162 #define getlocal_2(method) (method->code = abc_getlocal_2(method->code))
163 code_t* abc_getlocal_3(code_t*prev);
164 #define getlocal_3(method) (method->code = abc_getlocal_3(method->code))
165 code_t* abc_getproperty(code_t*prev, char* name);
166 #define getproperty(method,name) (method->code = abc_getproperty(method->code,name))
167 code_t* abc_getproperty2(code_t*prev, multiname_t* name);
168 #define getproperty2(method,name) (method->code = abc_getproperty2(method->code,name))
169 code_t* abc_getscopeobject(code_t*prev, int v);
170 #define getscopeobject(method,v) (method->code = abc_getscopeobject(method->code,v))
171 code_t* abc_getslot(code_t*prev, int v);
172 #define getslot(method,v) (method->code = abc_getslot(method->code,v))
173 code_t* abc_getsuper(code_t*prev, char* name);
174 #define getsuper(method,name) (method->code = abc_getsuper(method->code,name))
175 code_t* abc_getsuper2(code_t*prev, multiname_t* name);
176 #define getsuper2(method,name) (method->code = abc_getsuper2(method->code,name))
177 code_t* abc_greaterthan(code_t*prev);
178 #define greaterthan(method) (method->code = abc_greaterthan(method->code))
179 code_t* abc_greaterequals(code_t*prev);
180 #define greaterequals(method) (method->code = abc_greaterequals(method->code))
181 code_t* abc_hasnext(code_t*prev);
182 #define hasnext(method) (method->code = abc_hasnext(method->code))
183 code_t* abc_hasnext2(code_t*prev, int reg, int reg2);
184 #define hasnext2(method,reg,reg2) (method->code = abc_hasnext2(method->code,reg,reg2))
185 code_t* abc_ifeq(code_t*prev, code_t* label);
186 #define ifeq(method,label) (method->code = abc_ifeq(method->code,label))
187 code_t* abc_iffalse(code_t*prev, code_t* label);
188 #define iffalse(method,label) (method->code = abc_iffalse(method->code,label))
189 code_t* abc_ifge(code_t*prev, code_t* label);
190 #define ifge(method,label) (method->code = abc_ifge(method->code,label))
191 code_t* abc_ifgt(code_t*prev, code_t* label);
192 #define ifgt(method,label) (method->code = abc_ifgt(method->code,label))
193 code_t* abc_ifle(code_t*prev, code_t* label);
194 #define ifle(method,label) (method->code = abc_ifle(method->code,label))
195 code_t* abc_iflt(code_t*prev, code_t* label);
196 #define iflt(method,label) (method->code = abc_iflt(method->code,label))
197 code_t* abc_ifnge(code_t*prev, code_t* label);
198 #define ifnge(method,label) (method->code = abc_ifnge(method->code,label))
199 code_t* abc_ifngt(code_t*prev, code_t* label);
200 #define ifngt(method,label) (method->code = abc_ifngt(method->code,label))
201 code_t* abc_ifnle(code_t*prev, code_t* label);
202 #define ifnle(method,label) (method->code = abc_ifnle(method->code,label))
203 code_t* abc_ifnlt(code_t*prev, code_t* label);
204 #define ifnlt(method,label) (method->code = abc_ifnlt(method->code,label))
205 code_t* abc_ifne(code_t*prev, code_t* label);
206 #define ifne(method,label) (method->code = abc_ifne(method->code,label))
207 code_t* abc_ifstricteq(code_t*prev, code_t* label);
208 #define ifstricteq(method,label) (method->code = abc_ifstricteq(method->code,label))
209 code_t* abc_ifstrictne(code_t*prev, code_t* label);
210 #define ifstrictne(method,label) (method->code = abc_ifstrictne(method->code,label))
211 code_t* abc_iftrue(code_t*prev, code_t* label);
212 #define iftrue(method,label) (method->code = abc_iftrue(method->code,label))
213 code_t* abc_in(code_t*prev);
214 #define in(method) (method->code = abc_in(method->code))
215 code_t* abc_inclocal(code_t*prev, int reg);
216 #define inclocal(method,reg) (method->code = abc_inclocal(method->code,reg))
217 code_t* abc_inclocal_i(code_t*prev, int reg);
218 #define inclocal_i(method,reg) (method->code = abc_inclocal_i(method->code,reg))
219 code_t* abc_increment(code_t*prev);
220 #define increment(method) (method->code = abc_increment(method->code))
221 code_t* abc_increment_i(code_t*prev);
222 #define increment_i(method) (method->code = abc_increment_i(method->code))
223 code_t* abc_initproperty(code_t*prev, char* name);
224 #define initproperty(method,name) (method->code = abc_initproperty(method->code,name))
225 code_t* abc_initproperty2(code_t*prev, multiname_t* name);
226 #define initproperty2(method,name) (method->code = abc_initproperty2(method->code,name))
227 code_t* abc_instanceof(code_t*prev);
228 #define instanceof(method) (method->code = abc_instanceof(method->code))
229 code_t* abc_istype(code_t*prev, char* name);
230 #define istype(method,name) (method->code = abc_istype(method->code,name))
231 code_t* abc_istype2(code_t*prev, multiname_t* name);
232 #define istype2(method,name) (method->code = abc_istype2(method->code,name))
233 code_t* abc_istypelate(code_t*prev);
234 #define istypelate(method) (method->code = abc_istypelate(method->code))
235 code_t* abc_jump(code_t*prev, code_t* label);
236 #define jump(method,label) (method->code = abc_jump(method->code,label))
237 code_t* abc_kill(code_t*prev, int reg);
238 #define kill(method,reg) (method->code = abc_kill(method->code,reg))
239 code_t* abc_label(code_t*prev);
240 #define label(method) (method->code = abc_label(method->code))
241 code_t* abc_lessequals(code_t*prev);
242 #define lessequals(method) (method->code = abc_lessequals(method->code))
243 code_t* abc_lessthan(code_t*prev);
244 #define lessthan(method) (method->code = abc_lessthan(method->code))
245 code_t* abc_lookupswitch(code_t*prev, lookupswitch_t* l);
246 #define lookupswitch(method,l) (method->code = abc_lookupswitch(method->code,l))
247 code_t* abc_lshift(code_t*prev);
248 #define lshift(method) (method->code = abc_lshift(method->code))
249 code_t* abc_modulo(code_t*prev);
250 #define modulo(method) (method->code = abc_modulo(method->code))
251 code_t* abc_multiply(code_t*prev);
252 #define multiply(method) (method->code = abc_multiply(method->code))
253 code_t* abc_multiply_i(code_t*prev);
254 #define multiply_i(method) (method->code = abc_multiply_i(method->code))
255 code_t* abc_negate(code_t*prev);
256 #define negate(method) (method->code = abc_negate(method->code))
257 code_t* abc_negate_i(code_t*prev);
258 #define negate_i(method) (method->code = abc_negate_i(method->code))
259 code_t* abc_newactivation(code_t*prev);
260 #define newactivation(method) (method->code = abc_newactivation(method->code))
261 code_t* abc_newarray(code_t*prev, int v);
262 #define newarray(method,v) (method->code = abc_newarray(method->code,v))
263 code_t* abc_newcatch(code_t*prev, int v);
264 #define newcatch(method,v) (method->code = abc_newcatch(method->code,v))
265 code_t* abc_newclass(code_t*prev, abc_class_t* m);
266 #define newclass(method,m) (method->code = abc_newclass(method->code,m))
267 code_t* abc_newfunction(code_t*prev, abc_method_body_t* m);
268 #define newfunction(method,m) (method->code = abc_newfunction(method->code,m))
269 code_t* abc_newobject(code_t*prev, int v);
270 #define newobject(method,v) (method->code = abc_newobject(method->code,v))
271 code_t* abc_nextname(code_t*prev);
272 #define nextname(method) (method->code = abc_nextname(method->code))
273 code_t* abc_nextvalue(code_t*prev);
274 #define nextvalue(method) (method->code = abc_nextvalue(method->code))
275 code_t* abc_nop(code_t*prev);
276 #define nop(method) (method->code = abc_nop(method->code))
277 code_t* abc_not(code_t*prev);
278 #define not(method) (method->code = abc_not(method->code))
279 code_t* abc_pop(code_t*prev);
280 #define pop(method) (method->code = abc_pop(method->code))
281 code_t* abc_popscope(code_t*prev);
282 #define popscope(method) (method->code = abc_popscope(method->code))
283 code_t* abc_pushbyte(code_t*prev, int v);
284 #define pushbyte(method,v) (method->code = abc_pushbyte(method->code,v))
285 code_t* abc_pushdouble(code_t*prev, double f);
286 #define pushdouble(method,f) (method->code = abc_pushdouble(method->code,f))
287 code_t* abc_pushfalse(code_t*prev);
288 #define pushfalse(method) (method->code = abc_pushfalse(method->code))
289 code_t* abc_pushint(code_t*prev, int i);
290 #define pushint(method,i) (method->code = abc_pushint(method->code,i))
291 code_t* abc_pushnamespace(code_t*prev, int v);
292 #define pushnamespace(method,v) (method->code = abc_pushnamespace(method->code,v))
293 code_t* abc_pushnan(code_t*prev);
294 #define pushnan(method) (method->code = abc_pushnan(method->code))
295 code_t* abc_pushnull(code_t*prev);
296 #define pushnull(method) (method->code = abc_pushnull(method->code))
297 code_t* abc_pushscope(code_t*prev);
298 #define pushscope(method) (method->code = abc_pushscope(method->code))
299 code_t* abc_pushshort(code_t*prev, int v);
300 #define pushshort(method,v) (method->code = abc_pushshort(method->code,v))
301 code_t* abc_pushstring(code_t*prev, char* s);
302 #define pushstring(method,s) (method->code = abc_pushstring(method->code,s))
303 code_t* abc_pushtrue(code_t*prev);
304 #define pushtrue(method) (method->code = abc_pushtrue(method->code))
305 code_t* abc_pushuint(code_t*prev, unsigned int u);
306 #define pushuint(method,u) (method->code = abc_pushuint(method->code,u))
307 code_t* abc_pushundefined(code_t*prev);
308 #define pushundefined(method) (method->code = abc_pushundefined(method->code))
309 code_t* abc_pushwith(code_t*prev);
310 #define pushwith(method) (method->code = abc_pushwith(method->code))
311 code_t* abc_returnvalue(code_t*prev);
312 #define returnvalue(method) (method->code = abc_returnvalue(method->code))
313 code_t* abc_returnvoid(code_t*prev);
314 #define returnvoid(method) (method->code = abc_returnvoid(method->code))
315 code_t* abc_rshift(code_t*prev);
316 #define rshift(method) (method->code = abc_rshift(method->code))
317 code_t* abc_setlocal(code_t*prev, int reg);
318 #define setlocal(method,reg) (method->code = abc_setlocal(method->code,reg))
319 code_t* abc_setlocal_0(code_t*prev);
320 #define setlocal_0(method) (method->code = abc_setlocal_0(method->code))
321 code_t* abc_setlocal_1(code_t*prev);
322 #define setlocal_1(method) (method->code = abc_setlocal_1(method->code))
323 code_t* abc_setlocal_2(code_t*prev);
324 #define setlocal_2(method) (method->code = abc_setlocal_2(method->code))
325 code_t* abc_setlocal_3(code_t*prev);
326 #define setlocal_3(method) (method->code = abc_setlocal_3(method->code))
327 code_t* abc_setglobalslot(code_t*prev, int v);
328 #define setglobalslot(method,v) (method->code = abc_setglobalslot(method->code,v))
329 code_t* abc_setproperty(code_t*prev, char* name);
330 #define setproperty(method,name) (method->code = abc_setproperty(method->code,name))
331 code_t* abc_setproperty2(code_t*prev, multiname_t* name);
332 #define setproperty2(method,name) (method->code = abc_setproperty2(method->code,name))
333 code_t* abc_setslot(code_t*prev, int v);
334 #define setslot(method,v) (method->code = abc_setslot(method->code,v))
335 code_t* abc_setsuper(code_t*prev, char* name);
336 #define setsuper(method,name) (method->code = abc_setsuper(method->code,name))
337 code_t* abc_setsuper2(code_t*prev, multiname_t* name);
338 #define setsuper2(method,name) (method->code = abc_setsuper2(method->code,name))
339 code_t* abc_strictequals(code_t*prev);
340 #define strictequals(method) (method->code = abc_strictequals(method->code))
341 code_t* abc_subtract(code_t*prev);
342 #define subtract(method) (method->code = abc_subtract(method->code))
343 code_t* abc_subtract_i(code_t*prev);
344 #define subtract_i(method) (method->code = abc_subtract_i(method->code))
345 code_t* abc_swap(code_t*prev);
346 #define swap(method) (method->code = abc_swap(method->code))
347 code_t* abc_throw(code_t*prev);
348 #define throw(method) (method->code = abc_throw(method->code))
349 code_t* abc_typeof(code_t*prev);
350 #define typeof(method) (method->code = abc_typeof(method->code))
351 code_t* abc_urshift(code_t*prev);
352 #define urshift(method) (method->code = abc_urshift(method->code))
353 #endif