2 # [MAIN] #default section name
4 # MMD_EQ ... MMD_STRCMP must be in one block
7 # INPLACE MMD variant must always be normal op + 1
10 # init must be first for JITed vtable meths
11 void init_pmc(PMC* initializer)
12 PMC* instantiate(PMC* sig)
13 PMC* new_from_string(STRING* rep, INTVAL flags)
14 void morph(INTVAL type) :write
19 # XXX FIXME should this be marked as writing?
20 PMC* getprop(STRING* key)
21 void setprop(STRING* key, PMC* value)
22 void delprop(STRING* key)
26 INTVAL type_keyed(PMC* key)
27 INTVAL type_keyed_int(INTVAL key)
28 INTVAL type_keyed_str(STRING* key)
30 UINTVAL subtype(INTVAL type)
35 PMC* clone_pmc(PMC* args)
37 PMC* find_method(STRING* method_name)
39 INTVAL hash(size_t seed)
43 INTVAL get_integer_keyed(PMC* key)
44 INTVAL get_integer_keyed_int(INTVAL key)
45 INTVAL get_integer_keyed_str(STRING* key)
48 FLOATVAL get_number_keyed(PMC* key)
49 FLOATVAL get_number_keyed_int(INTVAL key)
50 FLOATVAL get_number_keyed_str(STRING* key)
56 STRING* get_string_keyed(PMC* key)
57 STRING* get_string_keyed_int(INTVAL key)
58 STRING* get_string_keyed_str(STRING* key)
63 PMC* get_pmc_keyed(PMC* key)
64 PMC* get_pmc_keyed_int(INTVAL key)
65 PMC* get_pmc_keyed_str(STRING* key)
66 PMC* slice(PMC* key, INTVAL flag)
69 void* get_pointer_keyed(PMC* key)
70 void* get_pointer_keyed_int(INTVAL key)
71 void* get_pointer_keyed_str(STRING* key)
74 void set_integer_native(INTVAL value)
75 void set_integer_same(PMC* value)
76 void set_integer_keyed(PMC* key, INTVAL value)
77 void set_integer_keyed_int(INTVAL key, INTVAL value)
78 void set_integer_keyed_str(STRING* key, INTVAL value)
80 void set_number_native(FLOATVAL value)
81 void set_number_same(PMC* value)
82 void set_number_keyed(PMC* key, FLOATVAL value)
83 void set_number_keyed_int(INTVAL key, FLOATVAL value)
84 void set_number_keyed_str(STRING* key, FLOATVAL value)
86 void set_bignum_int(INTVAL value)
87 void set_bignum_num(FLOATVAL value)
88 void set_bignum_str(STRING* value)
90 void set_string_native(STRING* value)
91 void assign_string_native(STRING* value)
92 void set_string_same(PMC* value)
93 void set_string_keyed(PMC* key, STRING* value)
94 void set_string_keyed_int(INTVAL key, STRING* value)
95 void set_string_keyed_str(STRING* key, STRING* value)
97 void set_bool(INTVAL value)
99 void set_pmc(PMC* value)
100 void assign_pmc(PMC* value)
101 void set_pmc_keyed(PMC* key, PMC* value)
102 void set_pmc_keyed_int(INTVAL key, PMC* value)
103 void set_pmc_keyed_str(STRING* key, PMC* value)
105 void set_pointer(void* value)
106 void set_pointer_keyed(PMC* key, void* value)
107 void set_pointer_keyed_int(INTVAL key, void* value)
108 void set_pointer_keyed_str(STRING* key, void* value)
120 void push_integer(INTVAL value)
121 void push_float(FLOATVAL value)
122 void push_string(STRING* value)
123 void push_pmc(PMC* value)
126 INTVAL shift_integer()
127 FLOATVAL shift_float()
128 STRING* shift_string()
132 void unshift_integer(INTVAL value)
133 void unshift_float(FLOATVAL value)
134 void unshift_string(STRING* value)
135 void unshift_pmc(PMC* value)
140 void splice(PMC* value, INTVAL offset, INTVAL count)
142 # XXX marking writing here?
144 PMC* add(PMC* value, PMC* dest) MMD_ADD
145 PMC* add_int(INTVAL value, PMC* dest) MMD_ADD_INT
146 PMC* add_float(FLOATVAL value, PMC* dest) MMD_ADD_FLOAT
148 void i_add(PMC* value) MMD_I_ADD
149 void i_add_int(INTVAL value) MMD_I_ADD_INT
150 void i_add_float(FLOATVAL value) MMD_I_ADD_FLOAT
152 PMC* subtract(PMC* value, PMC* dest) MMD_SUBTRACT
153 PMC* subtract_int(INTVAL value, PMC* dest) MMD_SUBTRACT_INT
154 PMC* subtract_float(FLOATVAL value, PMC* dest) MMD_SUBTRACT_FLOAT
156 void i_subtract(PMC* value) MMD_I_SUBTRACT
157 void i_subtract_int(INTVAL value) MMD_I_SUBTRACT_INT
158 void i_subtract_float(FLOATVAL value) MMD_I_SUBTRACT_FLOAT
160 PMC* multiply(PMC* value, PMC* dest) MMD_MULTIPLY
161 PMC* multiply_int(INTVAL value, PMC* dest) MMD_MULTIPLY_INT
162 PMC* multiply_float(FLOATVAL value, PMC* dest) MMD_MULTIPLY_FLOAT
164 void i_multiply(PMC* value) MMD_I_MULTIPLY
165 void i_multiply_int(INTVAL value) MMD_I_MULTIPLY_INT
166 void i_multiply_float(FLOATVAL value) MMD_I_MULTIPLY_FLOAT
168 PMC* divide(PMC* value, PMC* dest) MMD_DIVIDE
169 PMC* divide_int(INTVAL value, PMC* dest) MMD_DIVIDE_INT
170 PMC* divide_float(FLOATVAL value, PMC* dest) MMD_DIVIDE_FLOAT
172 void i_divide(PMC* value) MMD_I_DIVIDE
173 void i_divide_int(INTVAL value) MMD_I_DIVIDE_INT
174 void i_divide_float(FLOATVAL value) MMD_I_DIVIDE_FLOAT
176 PMC* floor_divide(PMC* value, PMC* dest) MMD_FLOOR_DIVIDE
177 PMC* floor_divide_int(INTVAL value, PMC* dest) MMD_FLOOR_DIVIDE_INT
178 PMC* floor_divide_float(FLOATVAL value, PMC* dest) MMD_FLOOR_DIVIDE_FLOAT
180 void i_floor_divide(PMC* value) MMD_I_FLOOR_DIVIDE
181 void i_floor_divide_int(INTVAL value) MMD_I_FLOOR_DIVIDE_INT
182 void i_floor_divide_float(FLOATVAL value) MMD_I_FLOOR_DIVIDE_FLOAT
184 PMC* modulus(PMC* value, PMC* dest) MMD_MOD
185 PMC* modulus_int(INTVAL value, PMC* dest) MMD_MOD_INT
186 PMC* modulus_float(FLOATVAL value, PMC* dest) MMD_MOD_FLOAT
188 void i_modulus(PMC* value) MMD_I_MOD
189 void i_modulus_int(INTVAL value) MMD_I_MOD_INT
190 void i_modulus_float(FLOATVAL value) MMD_I_MOD_FLOAT
192 PMC* cmodulus(PMC* value, PMC* dest) MMD_CMOD
193 PMC* cmodulus_int(INTVAL value, PMC* dest) MMD_CMOD_INT
194 PMC* cmodulus_float(FLOATVAL value, PMC* dest) MMD_CMOD_FLOAT
196 void i_cmodulus(PMC* value) MMD_I_CMOD
197 void i_cmodulus_int(INTVAL value) MMD_I_CMOD_INT
198 void i_cmodulus_float(FLOATVAL value) MMD_I_CMOD_FLOAT
200 PMC* pow(PMC* value, PMC* dest) MMD_POW
201 PMC* pow_int(INTVAL value, PMC* dest) MMD_POW_INT
202 PMC* pow_float(FLOATVAL value, PMC* dest) MMD_POW_FLOAT
204 void i_pow(PMC* value) MMD_I_POW
205 void i_pow_int(INTVAL value) MMD_I_POW_INT
206 void i_pow_float(FLOATVAL value) MMD_I_POW_FLOAT
208 void increment() :write
209 void decrement() :write
211 PMC* absolute(PMC* dest)
212 void i_absolute() :write
218 PMC* bitwise_or(PMC* value, PMC* dest) MMD_BOR
219 PMC* bitwise_or_int(INTVAL value, PMC* dest) MMD_BOR_INT
221 void i_bitwise_or(PMC* value) MMD_I_BOR
222 void i_bitwise_or_int(INTVAL value) MMD_I_BOR_INT
224 PMC* bitwise_and(PMC* value, PMC* dest) MMD_BAND
225 PMC* bitwise_and_int(INTVAL value, PMC* dest) MMD_BAND_INT
227 void i_bitwise_and(PMC* value) MMD_I_BAND
228 void i_bitwise_and_int(INTVAL value) MMD_I_BAND_INT
230 PMC* bitwise_xor(PMC* value, PMC* dest) MMD_BXOR
231 PMC* bitwise_xor_int(INTVAL value, PMC* dest) MMD_BXOR_INT
233 void i_bitwise_xor(PMC* value) MMD_I_BXOR
234 void i_bitwise_xor_int(INTVAL value) MMD_I_BXOR_INT
236 PMC* bitwise_ors(PMC* value, PMC* dest) MMD_SOR
237 PMC* bitwise_ors_str(STRING* value, PMC* dest) MMD_SOR_STR
239 void i_bitwise_ors(PMC* value) MMD_I_SOR
240 void i_bitwise_ors_str(STRING* value) MMD_I_SOR_STR
242 PMC* bitwise_ands(PMC* value, PMC* dest) MMD_SAND
243 PMC* bitwise_ands_str(STRING* value, PMC* dest) MMD_SAND_STR
245 void i_bitwise_ands(PMC* value) MMD_I_SAND
246 void i_bitwise_ands_str(STRING* value) MMD_I_SAND_STR
248 PMC* bitwise_xors(PMC* value, PMC* dest) MMD_SXOR
249 PMC* bitwise_xors_str(STRING* value, PMC* dest) MMD_SXOR_STR
251 void i_bitwise_xors(PMC* value) MMD_I_SXOR
252 void i_bitwise_xors_str(STRING* value) MMD_I_SXOR_STR
254 PMC* bitwise_not(PMC* dest)
255 void i_bitwise_not() :write
257 PMC* bitwise_nots(PMC* dest)
258 void i_bitwise_nots() :write
260 PMC* bitwise_shl(PMC* value, PMC* dest) MMD_BSL
261 PMC* bitwise_shl_int(INTVAL value, PMC* dest) MMD_BSL_INT
263 void i_bitwise_shl(PMC* value) MMD_I_BSL
264 void i_bitwise_shl_int(INTVAL value) MMD_I_BSL_INT
266 PMC* bitwise_shr(PMC* value, PMC* dest) MMD_BSR
267 PMC* bitwise_shr_int(INTVAL value, PMC* dest) MMD_BSR_INT
269 void i_bitwise_shr(PMC* value) MMD_I_BSR
270 void i_bitwise_shr_int(INTVAL value) MMD_I_BSR_INT
272 PMC* bitwise_lsr(PMC* value, PMC* dest) MMD_LSR
273 PMC* bitwise_lsr_int(INTVAL value, PMC* dest) MMD_LSR_INT
275 void i_bitwise_lsr(PMC* value) MMD_I_LSR
276 void i_bitwise_lsr_int(INTVAL value) MMD_I_LSR_INT
279 INTVAL is_equal(PMC* value) MMD_EQ
280 INTVAL is_equal_num(PMC* value) MMD_NUMEQ
281 INTVAL is_equal_string(PMC* value) MMD_STREQ
283 INTVAL is_same(PMC* value)
285 INTVAL cmp(PMC* value) MMD_CMP
286 INTVAL cmp_num(PMC* value) MMD_NUMCMP
287 INTVAL cmp_string(PMC* value) MMD_STRCMP
289 PMC* logical_or(PMC* value, PMC* dest) MMD_LOR
291 PMC* logical_and(PMC* value, PMC* dest) MMD_LAND
293 PMC* logical_xor(PMC* value, PMC* dest) MMD_LXOR
295 PMC* logical_not(PMC* dest)
296 void i_logical_not() :write
300 PMC* concatenate(PMC* value, PMC* dest) MMD_CONCAT
301 PMC* concatenate_str(STRING* value, PMC* dest) MMD_CONCAT_STR
303 void i_concatenate(PMC* value) MMD_I_CONCAT
304 void i_concatenate_str(STRING* value) MMD_I_CONCAT_STR
306 PMC* repeat(PMC* value, PMC* dest) MMD_REPEAT
307 PMC* repeat_int(INTVAL value, PMC* dest) MMD_REPEAT_INT
309 void i_repeat(PMC* value) MMD_I_REPEAT
310 void i_repeat_int(INTVAL value) MMD_I_REPEAT_INT
312 void substr(INTVAL offset, INTVAL length, PMC* dest)
313 STRING* substr_str(INTVAL offset, INTVAL length)
316 INTVAL exists_keyed(PMC* key)
317 INTVAL exists_keyed_int(INTVAL key)
318 INTVAL exists_keyed_str(STRING* key)
322 INTVAL defined_keyed(PMC* key)
323 INTVAL defined_keyed_int(INTVAL key)
324 INTVAL defined_keyed_str(STRING* key)
327 void delete_keyed(PMC* key)
328 void delete_keyed_int(INTVAL key)
329 void delete_keyed_str(STRING* key)
332 PMC* nextkey_keyed(PMC* key, INTVAL what)
333 PMC* nextkey_keyed_int(INTVAL key, INTVAL what)
334 PMC* nextkey_keyed_str(STRING* key, INTVAL what)
337 opcode_t* invoke(void* next)
339 INTVAL can(STRING* method)
341 INTVAL does(STRING* method)
343 INTVAL isa(STRING* _class)
345 PMC* get_attr(INTVAL idx)
346 PMC* get_attr_str(STRING* idx)
347 void set_attr(INTVAL idx, PMC* value) :write
348 void set_attr_str(STRING* idx, PMC* value) :write
353 void add_parent(PMC* parent) :write
354 void remove_parent(PMC* parent) :write
356 void add_role(PMC* role) :write
357 void remove_role(PMC* role) :write
359 void add_attribute(STRING* name, PMC* type) :write
360 void remove_attribute(STRING* name) :write
362 void add_method(STRING* method_name, PMC* sub_pmc) :write
363 void remove_method(STRING* method_name) :write
366 PMC* inspect_str(STRING* what)
371 PMC* get_anonymous_subclass()
374 void become_parent(PMC* _class)
376 PMC* subclass(PMC* name)
378 void freeze(visit_info* info)
379 void thaw (visit_info* info) :write
380 void thawfinish (visit_info* info) :write
381 void visit (visit_info* info)