/src/gpac/src/quickjs/quickjs-opcode.h
Line | Count | Source |
1 | | /* |
2 | | * QuickJS opcode definitions |
3 | | * |
4 | | * Copyright (c) 2017-2018 Fabrice Bellard |
5 | | * Copyright (c) 2017-2018 Charlie Gordon |
6 | | * |
7 | | * Permission is hereby granted, free of charge, to any person obtaining a copy |
8 | | * of this software and associated documentation files (the "Software"), to deal |
9 | | * in the Software without restriction, including without limitation the rights |
10 | | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
11 | | * copies of the Software, and to permit persons to whom the Software is |
12 | | * furnished to do so, subject to the following conditions: |
13 | | * |
14 | | * The above copyright notice and this permission notice shall be included in |
15 | | * all copies or substantial portions of the Software. |
16 | | * |
17 | | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
18 | | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
19 | | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
20 | | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
21 | | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
22 | | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
23 | | * THE SOFTWARE. |
24 | | */ |
25 | |
|
26 | | #ifdef FMT |
27 | | FMT(none) |
28 | | FMT(none_int) |
29 | | FMT(none_loc) |
30 | | FMT(none_arg) |
31 | | FMT(none_var_ref) |
32 | | FMT(u8) |
33 | | FMT(i8) |
34 | | FMT(loc8) |
35 | | FMT(const8) |
36 | | FMT(label8) |
37 | | FMT(u16) |
38 | | FMT(i16) |
39 | | FMT(label16) |
40 | | FMT(npop) |
41 | | FMT(npopx) |
42 | | FMT(npop_u16) |
43 | | FMT(loc) |
44 | | FMT(arg) |
45 | | FMT(var_ref) |
46 | | FMT(u32) |
47 | | FMT(i32) |
48 | | FMT(const) |
49 | | FMT(label) |
50 | | FMT(atom) |
51 | | FMT(atom_u8) |
52 | | FMT(atom_u16) |
53 | | FMT(atom_label_u8) |
54 | | FMT(atom_label_u16) |
55 | | FMT(label_u16) |
56 | | #undef FMT |
57 | | #endif /* FMT */ |
58 | |
|
59 | 0 | #ifdef DEF |
60 | |
|
61 | | #ifndef def |
62 | | #define def(id, size, n_pop, n_push, f) DEF(id, size, n_pop, n_push, f) |
63 | | #endif |
64 | |
|
65 | 0 | DEF(invalid, 1, 0, 0, none) /* never emitted */ |
66 | | |
67 | | /* push values */ |
68 | 0 | DEF( push_i32, 5, 0, 1, i32) |
69 | 0 | DEF( push_const, 5, 0, 1, const) |
70 | 0 | DEF( fclosure, 5, 0, 1, const) /* must follow push_const */ |
71 | 0 | DEF(push_atom_value, 5, 0, 1, atom) |
72 | 0 | DEF( private_symbol, 5, 0, 1, atom) |
73 | 0 | DEF( undefined, 1, 0, 1, none) |
74 | 0 | DEF( null, 1, 0, 1, none) |
75 | 0 | DEF( push_this, 1, 0, 1, none) /* only used at the start of a function */ |
76 | 0 | DEF( push_false, 1, 0, 1, none) |
77 | 0 | DEF( push_true, 1, 0, 1, none) |
78 | 0 | DEF( object, 1, 0, 1, none) |
79 | 0 | DEF( special_object, 2, 0, 1, u8) /* only used at the start of a function */ |
80 | 0 | DEF( rest, 3, 0, 1, u16) /* only used at the start of a function */ |
81 | |
|
82 | 0 | DEF( drop, 1, 1, 0, none) /* a -> */ |
83 | 0 | DEF( nip, 1, 2, 1, none) /* a b -> b */ |
84 | 0 | DEF( nip1, 1, 3, 2, none) /* a b c -> b c */ |
85 | 0 | DEF( dup, 1, 1, 2, none) /* a -> a a */ |
86 | 0 | DEF( dup1, 1, 2, 3, none) /* a b -> a a b */ |
87 | 0 | DEF( dup2, 1, 2, 4, none) /* a b -> a b a b */ |
88 | 0 | DEF( dup3, 1, 3, 6, none) /* a b c -> a b c a b c */ |
89 | 0 | DEF( insert2, 1, 2, 3, none) /* obj a -> a obj a (dup_x1) */ |
90 | 0 | DEF( insert3, 1, 3, 4, none) /* obj prop a -> a obj prop a (dup_x2) */ |
91 | 0 | DEF( insert4, 1, 4, 5, none) /* this obj prop a -> a this obj prop a */ |
92 | 0 | DEF( perm3, 1, 3, 3, none) /* obj a b -> a obj b */ |
93 | 0 | DEF( perm4, 1, 4, 4, none) /* obj prop a b -> a obj prop b */ |
94 | 0 | DEF( perm5, 1, 5, 5, none) /* this obj prop a b -> a this obj prop b */ |
95 | 0 | DEF( swap, 1, 2, 2, none) /* a b -> b a */ |
96 | 0 | DEF( swap2, 1, 4, 4, none) /* a b c d -> c d a b */ |
97 | 0 | DEF( rot3l, 1, 3, 3, none) /* x a b -> a b x */ |
98 | 0 | DEF( rot3r, 1, 3, 3, none) /* a b x -> x a b */ |
99 | 0 | DEF( rot4l, 1, 4, 4, none) /* x a b c -> a b c x */ |
100 | 0 | DEF( rot5l, 1, 5, 5, none) /* x a b c d -> a b c d x */ |
101 | |
|
102 | 0 | DEF(call_constructor, 3, 2, 1, npop) /* func new.target args -> ret. arguments are not counted in n_pop */ |
103 | 0 | DEF( call, 3, 1, 1, npop) /* arguments are not counted in n_pop */ |
104 | 0 | DEF( tail_call, 3, 1, 0, npop) /* arguments are not counted in n_pop */ |
105 | 0 | DEF( call_method, 3, 2, 1, npop) /* arguments are not counted in n_pop */ |
106 | 0 | DEF(tail_call_method, 3, 2, 0, npop) /* arguments are not counted in n_pop */ |
107 | 0 | DEF( array_from, 3, 0, 1, npop) /* arguments are not counted in n_pop */ |
108 | 0 | DEF( apply, 3, 3, 1, u16) |
109 | 0 | DEF( return, 1, 1, 0, none) |
110 | 0 | DEF( return_undef, 1, 0, 0, none) |
111 | 0 | DEF(check_ctor_return, 1, 1, 2, none) |
112 | 0 | DEF( check_ctor, 1, 0, 0, none) |
113 | 0 | DEF( check_brand, 1, 2, 2, none) /* this_obj func -> this_obj func */ |
114 | 0 | DEF( add_brand, 1, 2, 0, none) /* this_obj home_obj -> */ |
115 | 0 | DEF( return_async, 1, 1, 0, none) |
116 | 0 | DEF( throw, 1, 1, 0, none) |
117 | 0 | DEF( throw_error, 6, 0, 0, atom_u8) |
118 | 0 | DEF( eval, 5, 1, 1, npop_u16) /* func args... -> ret_val */ |
119 | 0 | DEF( apply_eval, 3, 2, 1, u16) /* func array -> ret_eval */ |
120 | 0 | DEF( regexp, 1, 2, 1, none) /* create a RegExp object from the pattern and a |
121 | | bytecode string */ |
122 | 0 | DEF( get_super, 1, 1, 1, none) |
123 | 0 | DEF( import, 1, 1, 1, none) /* dynamic module import */ |
124 | |
|
125 | 0 | DEF( check_var, 5, 0, 1, atom) /* check if a variable exists */ |
126 | 0 | DEF( get_var_undef, 5, 0, 1, atom) /* push undefined if the variable does not exist */ |
127 | 0 | DEF( get_var, 5, 0, 1, atom) /* throw an exception if the variable does not exist */ |
128 | 0 | DEF( put_var, 5, 1, 0, atom) /* must come after get_var */ |
129 | 0 | DEF( put_var_init, 5, 1, 0, atom) /* must come after put_var. Used to initialize a global lexical variable */ |
130 | 0 | DEF( put_var_strict, 5, 2, 0, atom) /* for strict mode variable write */ |
131 | |
|
132 | 0 | DEF( get_ref_value, 1, 2, 3, none) |
133 | 0 | DEF( put_ref_value, 1, 3, 0, none) |
134 | |
|
135 | 0 | DEF( define_var, 6, 0, 0, atom_u8) |
136 | 0 | DEF(check_define_var, 6, 0, 0, atom_u8) |
137 | 0 | DEF( define_func, 6, 1, 0, atom_u8) |
138 | 0 | DEF( get_field, 5, 1, 1, atom) |
139 | 0 | DEF( get_field2, 5, 1, 2, atom) |
140 | 0 | DEF( put_field, 5, 2, 0, atom) |
141 | 0 | DEF( get_private_field, 1, 2, 1, none) /* obj prop -> value */ |
142 | 0 | DEF( put_private_field, 1, 3, 0, none) /* obj value prop -> */ |
143 | 0 | DEF(define_private_field, 1, 3, 1, none) /* obj prop value -> obj */ |
144 | 0 | DEF( get_array_el, 1, 2, 1, none) |
145 | 0 | DEF( get_array_el2, 1, 2, 2, none) /* obj prop -> obj value */ |
146 | 0 | DEF( put_array_el, 1, 3, 0, none) |
147 | 0 | DEF(get_super_value, 1, 3, 1, none) /* this obj prop -> value */ |
148 | 0 | DEF(put_super_value, 1, 4, 0, none) /* this obj prop value -> */ |
149 | 0 | DEF( define_field, 5, 2, 1, atom) |
150 | 0 | DEF( set_name, 5, 1, 1, atom) |
151 | 0 | DEF(set_name_computed, 1, 2, 2, none) |
152 | 0 | DEF( set_proto, 1, 2, 1, none) |
153 | 0 | DEF(set_home_object, 1, 2, 2, none) |
154 | 0 | DEF(define_array_el, 1, 3, 2, none) |
155 | 0 | DEF( append, 1, 3, 2, none) /* append enumerated object, update length */ |
156 | 0 | DEF(copy_data_properties, 2, 3, 3, u8) |
157 | 0 | DEF( define_method, 6, 2, 1, atom_u8) |
158 | 0 | DEF(define_method_computed, 2, 3, 1, u8) /* must come after define_method */ |
159 | 0 | DEF( define_class, 6, 2, 2, atom_u8) /* parent ctor -> ctor proto */ |
160 | 0 | DEF( define_class_computed, 6, 3, 3, atom_u8) /* field_name parent ctor -> field_name ctor proto (class with computed name) */ |
161 | |
|
162 | 0 | DEF( get_loc, 3, 0, 1, loc) |
163 | 0 | DEF( put_loc, 3, 1, 0, loc) /* must come after get_loc */ |
164 | 0 | DEF( set_loc, 3, 1, 1, loc) /* must come after put_loc */ |
165 | 0 | DEF( get_arg, 3, 0, 1, arg) |
166 | 0 | DEF( put_arg, 3, 1, 0, arg) /* must come after get_arg */ |
167 | 0 | DEF( set_arg, 3, 1, 1, arg) /* must come after put_arg */ |
168 | 0 | DEF( get_var_ref, 3, 0, 1, var_ref) |
169 | 0 | DEF( put_var_ref, 3, 1, 0, var_ref) /* must come after get_var_ref */ |
170 | 0 | DEF( set_var_ref, 3, 1, 1, var_ref) /* must come after put_var_ref */ |
171 | 0 | DEF(set_loc_uninitialized, 3, 0, 0, loc) |
172 | 0 | DEF( get_loc_check, 3, 0, 1, loc) |
173 | 0 | DEF( put_loc_check, 3, 1, 0, loc) /* must come after get_loc_check */ |
174 | 0 | DEF( put_loc_check_init, 3, 1, 0, loc) |
175 | 0 | DEF(get_var_ref_check, 3, 0, 1, var_ref) |
176 | 0 | DEF(put_var_ref_check, 3, 1, 0, var_ref) /* must come after get_var_ref_check */ |
177 | 0 | DEF(put_var_ref_check_init, 3, 1, 0, var_ref) |
178 | 0 | DEF( close_loc, 3, 0, 0, loc) |
179 | 0 | DEF( if_false, 5, 1, 0, label) |
180 | 0 | DEF( if_true, 5, 1, 0, label) /* must come after if_false */ |
181 | 0 | DEF( goto, 5, 0, 0, label) /* must come after if_true */ |
182 | 0 | DEF( catch, 5, 0, 1, label) |
183 | 0 | DEF( gosub, 5, 0, 0, label) /* used to execute the finally block */ |
184 | 0 | DEF( ret, 1, 1, 0, none) /* used to return from the finally block */ |
185 | |
|
186 | 0 | DEF( to_object, 1, 1, 1, none) |
187 | | //DEF( to_string, 1, 1, 1, none) |
188 | 0 | DEF( to_propkey, 1, 1, 1, none) |
189 | 0 | DEF( to_propkey2, 1, 2, 2, none) |
190 | |
|
191 | 0 | DEF( with_get_var, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ |
192 | 0 | DEF( with_put_var, 10, 2, 1, atom_label_u8) /* must be in the same order as scope_xxx */ |
193 | 0 | DEF(with_delete_var, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ |
194 | 0 | DEF( with_make_ref, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ |
195 | 0 | DEF( with_get_ref, 10, 1, 0, atom_label_u8) /* must be in the same order as scope_xxx */ |
196 | 0 | DEF(with_get_ref_undef, 10, 1, 0, atom_label_u8) |
197 | |
|
198 | 0 | DEF( make_loc_ref, 7, 0, 2, atom_u16) |
199 | 0 | DEF( make_arg_ref, 7, 0, 2, atom_u16) |
200 | 0 | DEF(make_var_ref_ref, 7, 0, 2, atom_u16) |
201 | 0 | DEF( make_var_ref, 5, 0, 2, atom) |
202 | |
|
203 | 0 | DEF( for_in_start, 1, 1, 1, none) |
204 | 0 | DEF( for_of_start, 1, 1, 3, none) |
205 | 0 | DEF(for_await_of_start, 1, 1, 3, none) |
206 | 0 | DEF( for_in_next, 1, 1, 3, none) |
207 | 0 | DEF( for_of_next, 2, 3, 5, u8) |
208 | 0 | DEF(iterator_check_object, 1, 1, 1, none) |
209 | 0 | DEF(iterator_get_value_done, 1, 1, 2, none) |
210 | 0 | DEF( iterator_close, 1, 3, 0, none) |
211 | 0 | DEF(iterator_close_return, 1, 4, 4, none) |
212 | 0 | DEF( iterator_next, 1, 4, 4, none) |
213 | 0 | DEF( iterator_call, 2, 4, 5, u8) |
214 | 0 | DEF( initial_yield, 1, 0, 0, none) |
215 | 0 | DEF( yield, 1, 1, 2, none) |
216 | 0 | DEF( yield_star, 1, 1, 2, none) |
217 | 0 | DEF(async_yield_star, 1, 1, 2, none) |
218 | 0 | DEF( await, 1, 1, 1, none) |
219 | | |
220 | | /* arithmetic/logic operations */ |
221 | 0 | DEF( neg, 1, 1, 1, none) |
222 | 0 | DEF( plus, 1, 1, 1, none) |
223 | 0 | DEF( dec, 1, 1, 1, none) |
224 | 0 | DEF( inc, 1, 1, 1, none) |
225 | 0 | DEF( post_dec, 1, 1, 2, none) |
226 | 0 | DEF( post_inc, 1, 1, 2, none) |
227 | 0 | DEF( dec_loc, 2, 0, 0, loc8) |
228 | 0 | DEF( inc_loc, 2, 0, 0, loc8) |
229 | 0 | DEF( add_loc, 2, 1, 0, loc8) |
230 | 0 | DEF( not, 1, 1, 1, none) |
231 | 0 | DEF( lnot, 1, 1, 1, none) |
232 | 0 | DEF( typeof, 1, 1, 1, none) |
233 | 0 | DEF( delete, 1, 2, 1, none) |
234 | 0 | DEF( delete_var, 5, 0, 1, atom) |
235 | |
|
236 | 0 | DEF( mul, 1, 2, 1, none) |
237 | 0 | DEF( div, 1, 2, 1, none) |
238 | 0 | DEF( mod, 1, 2, 1, none) |
239 | 0 | DEF( add, 1, 2, 1, none) |
240 | 0 | DEF( sub, 1, 2, 1, none) |
241 | 0 | DEF( pow, 1, 2, 1, none) |
242 | 0 | DEF( shl, 1, 2, 1, none) |
243 | 0 | DEF( sar, 1, 2, 1, none) |
244 | 0 | DEF( shr, 1, 2, 1, none) |
245 | 0 | DEF( lt, 1, 2, 1, none) |
246 | 0 | DEF( lte, 1, 2, 1, none) |
247 | 0 | DEF( gt, 1, 2, 1, none) |
248 | 0 | DEF( gte, 1, 2, 1, none) |
249 | 0 | DEF( instanceof, 1, 2, 1, none) |
250 | 0 | DEF( in, 1, 2, 1, none) |
251 | 0 | DEF( eq, 1, 2, 1, none) |
252 | 0 | DEF( neq, 1, 2, 1, none) |
253 | 0 | DEF( strict_eq, 1, 2, 1, none) |
254 | 0 | DEF( strict_neq, 1, 2, 1, none) |
255 | 0 | DEF( and, 1, 2, 1, none) |
256 | 0 | DEF( xor, 1, 2, 1, none) |
257 | 0 | DEF( or, 1, 2, 1, none) |
258 | 0 | DEF(is_undefined_or_null, 1, 1, 1, none) |
259 | | #ifdef CONFIG_BIGNUM |
260 | | DEF( mul_pow10, 1, 2, 1, none) |
261 | | DEF( math_mod, 1, 2, 1, none) |
262 | | #endif |
263 | | /* must be the last non short and non temporary opcode */ |
264 | 0 | DEF( nop, 1, 0, 0, none) |
265 | | |
266 | | /* temporary opcodes: never emitted in the final bytecode */ |
267 | |
|
268 | 0 | def( enter_scope, 3, 0, 0, u16) /* emitted in phase 1, removed in phase 2 */ |
269 | 0 | def( leave_scope, 3, 0, 0, u16) /* emitted in phase 1, removed in phase 2 */ |
270 | |
|
271 | 0 | def( label, 5, 0, 0, label) /* emitted in phase 1, removed in phase 3 */ |
272 | |
|
273 | 0 | def(scope_get_var_undef, 7, 0, 1, atom_u16) /* emitted in phase 1, removed in phase 2 */ |
274 | 0 | def( scope_get_var, 7, 0, 1, atom_u16) /* emitted in phase 1, removed in phase 2 */ |
275 | 0 | def( scope_put_var, 7, 1, 0, atom_u16) /* emitted in phase 1, removed in phase 2 */ |
276 | 0 | def(scope_delete_var, 7, 0, 1, atom_u16) /* emitted in phase 1, removed in phase 2 */ |
277 | 0 | def( scope_make_ref, 11, 0, 2, atom_label_u16) /* emitted in phase 1, removed in phase 2 */ |
278 | 0 | def( scope_get_ref, 7, 0, 2, atom_u16) /* emitted in phase 1, removed in phase 2 */ |
279 | 0 | def(scope_put_var_init, 7, 0, 2, atom_u16) /* emitted in phase 1, removed in phase 2 */ |
280 | 0 | def(scope_get_private_field, 7, 1, 1, atom_u16) /* obj -> value, emitted in phase 1, removed in phase 2 */ |
281 | 0 | def(scope_get_private_field2, 7, 1, 2, atom_u16) /* obj -> obj value, emitted in phase 1, removed in phase 2 */ |
282 | 0 | def(scope_put_private_field, 7, 1, 1, atom_u16) /* obj value ->, emitted in phase 1, removed in phase 2 */ |
283 | |
|
284 | 0 | def( set_class_name, 5, 1, 1, u32) /* emitted in phase 1, removed in phase 2 */ |
285 | | |
286 | 0 | def( line_num, 5, 0, 0, u32) /* emitted in phase 1, removed in phase 3 */ |
287 | |
|
288 | 0 | #if SHORT_OPCODES |
289 | 0 | DEF( push_minus1, 1, 0, 1, none_int) |
290 | 0 | DEF( push_0, 1, 0, 1, none_int) |
291 | 0 | DEF( push_1, 1, 0, 1, none_int) |
292 | 0 | DEF( push_2, 1, 0, 1, none_int) |
293 | 0 | DEF( push_3, 1, 0, 1, none_int) |
294 | 0 | DEF( push_4, 1, 0, 1, none_int) |
295 | 0 | DEF( push_5, 1, 0, 1, none_int) |
296 | 0 | DEF( push_6, 1, 0, 1, none_int) |
297 | 0 | DEF( push_7, 1, 0, 1, none_int) |
298 | 0 | DEF( push_i8, 2, 0, 1, i8) |
299 | 0 | DEF( push_i16, 3, 0, 1, i16) |
300 | 0 | DEF( push_const8, 2, 0, 1, const8) |
301 | 0 | DEF( fclosure8, 2, 0, 1, const8) /* must follow push_const8 */ |
302 | 0 | DEF(push_empty_string, 1, 0, 1, none) |
303 | |
|
304 | 0 | DEF( get_loc8, 2, 0, 1, loc8) |
305 | 0 | DEF( put_loc8, 2, 1, 0, loc8) |
306 | 0 | DEF( set_loc8, 2, 1, 1, loc8) |
307 | |
|
308 | 0 | DEF( get_loc0, 1, 0, 1, none_loc) |
309 | 0 | DEF( get_loc1, 1, 0, 1, none_loc) |
310 | 0 | DEF( get_loc2, 1, 0, 1, none_loc) |
311 | 0 | DEF( get_loc3, 1, 0, 1, none_loc) |
312 | 0 | DEF( put_loc0, 1, 1, 0, none_loc) |
313 | 0 | DEF( put_loc1, 1, 1, 0, none_loc) |
314 | 0 | DEF( put_loc2, 1, 1, 0, none_loc) |
315 | 0 | DEF( put_loc3, 1, 1, 0, none_loc) |
316 | 0 | DEF( set_loc0, 1, 1, 1, none_loc) |
317 | 0 | DEF( set_loc1, 1, 1, 1, none_loc) |
318 | 0 | DEF( set_loc2, 1, 1, 1, none_loc) |
319 | 0 | DEF( set_loc3, 1, 1, 1, none_loc) |
320 | 0 | DEF( get_arg0, 1, 0, 1, none_arg) |
321 | 0 | DEF( get_arg1, 1, 0, 1, none_arg) |
322 | 0 | DEF( get_arg2, 1, 0, 1, none_arg) |
323 | 0 | DEF( get_arg3, 1, 0, 1, none_arg) |
324 | 0 | DEF( put_arg0, 1, 1, 0, none_arg) |
325 | 0 | DEF( put_arg1, 1, 1, 0, none_arg) |
326 | 0 | DEF( put_arg2, 1, 1, 0, none_arg) |
327 | 0 | DEF( put_arg3, 1, 1, 0, none_arg) |
328 | 0 | DEF( set_arg0, 1, 1, 1, none_arg) |
329 | 0 | DEF( set_arg1, 1, 1, 1, none_arg) |
330 | 0 | DEF( set_arg2, 1, 1, 1, none_arg) |
331 | 0 | DEF( set_arg3, 1, 1, 1, none_arg) |
332 | 0 | DEF( get_var_ref0, 1, 0, 1, none_var_ref) |
333 | 0 | DEF( get_var_ref1, 1, 0, 1, none_var_ref) |
334 | 0 | DEF( get_var_ref2, 1, 0, 1, none_var_ref) |
335 | 0 | DEF( get_var_ref3, 1, 0, 1, none_var_ref) |
336 | 0 | DEF( put_var_ref0, 1, 1, 0, none_var_ref) |
337 | 0 | DEF( put_var_ref1, 1, 1, 0, none_var_ref) |
338 | 0 | DEF( put_var_ref2, 1, 1, 0, none_var_ref) |
339 | 0 | DEF( put_var_ref3, 1, 1, 0, none_var_ref) |
340 | 0 | DEF( set_var_ref0, 1, 1, 1, none_var_ref) |
341 | 0 | DEF( set_var_ref1, 1, 1, 1, none_var_ref) |
342 | 0 | DEF( set_var_ref2, 1, 1, 1, none_var_ref) |
343 | 0 | DEF( set_var_ref3, 1, 1, 1, none_var_ref) |
344 | |
|
345 | 0 | DEF( get_length, 1, 1, 1, none) |
346 | |
|
347 | 0 | DEF( if_false8, 2, 1, 0, label8) |
348 | 0 | DEF( if_true8, 2, 1, 0, label8) /* must come after if_false8 */ |
349 | 0 | DEF( goto8, 2, 0, 0, label8) /* must come after if_true8 */ |
350 | 0 | DEF( goto16, 3, 0, 0, label16) |
351 | |
|
352 | 0 | DEF( call0, 1, 1, 1, npopx) |
353 | 0 | DEF( call1, 1, 1, 1, npopx) |
354 | 0 | DEF( call2, 1, 1, 1, npopx) |
355 | 0 | DEF( call3, 1, 1, 1, npopx) |
356 | |
|
357 | 0 | DEF( is_undefined, 1, 1, 1, none) |
358 | 0 | DEF( is_null, 1, 1, 1, none) |
359 | 0 | DEF(typeof_is_undefined, 1, 1, 1, none) |
360 | 0 | DEF( typeof_is_function, 1, 1, 1, none) |
361 | 0 | #endif |
362 | |
|
363 | 0 | #undef DEF |
364 | 0 | #undef def |
365 | 0 | #endif /* DEF */ |