* src/pbc_merge.c:
[parrot.git] / src / vtable.tbl
blob6a67454e80b84dbb78e4faf8bd0b880546b0eb81
1 # $Id$
2 # [MAIN] #default section name
4 # MMD_EQ ... MMD_STRCMP must be in one block
5 # see src/mmd.c
7 # INPLACE MMD variant must always be normal op + 1
9 void init()
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
15 void mark()
16 void destroy()
17 PMC* get_namespace()
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)
23 PMC* getprops()
25 INTVAL type()
26 INTVAL type_keyed(PMC* key)
27 INTVAL type_keyed_int(INTVAL key)
28 INTVAL type_keyed_str(STRING* key)
30 STRING* name()
32 PMC* clone()
33 PMC* clone_pmc(PMC* args)
35 PMC* find_method(STRING* method_name)
37 [FETCH]
38 INTVAL get_integer()
39 INTVAL get_integer_keyed(PMC* key)
40 INTVAL get_integer_keyed_int(INTVAL key)
41 INTVAL get_integer_keyed_str(STRING* key)
43 FLOATVAL get_number()
44 FLOATVAL get_number_keyed(PMC* key)
45 FLOATVAL get_number_keyed_int(INTVAL key)
46 FLOATVAL get_number_keyed_str(STRING* key)
48 PMC* get_bignum()
50 STRING* get_string()
51 STRING* get_repr()
52 STRING* get_string_keyed(PMC* key)
53 STRING* get_string_keyed_int(INTVAL key)
54 STRING* get_string_keyed_str(STRING* key)
56 INTVAL get_bool()
58 PMC* get_pmc()
59 PMC* get_pmc_keyed(PMC* key)
60 PMC* get_pmc_keyed_int(INTVAL key)
61 PMC* get_pmc_keyed_str(STRING* key)
62 PMC* slice(PMC* key, INTVAL flag)
64 void* get_pointer()
65 void* get_pointer_keyed(PMC* key)
66 void* get_pointer_keyed_int(INTVAL key)
67 void* get_pointer_keyed_str(STRING* key)
69 [STORE] :write
70 void set_integer_native(INTVAL value)
71 void set_integer_same(PMC* value)
72 void set_integer_keyed(PMC* key, INTVAL value)
73 void set_integer_keyed_int(INTVAL key, INTVAL value)
74 void set_integer_keyed_str(STRING* key, INTVAL value)
76 void set_number_native(FLOATVAL value)
77 void set_number_same(PMC* value)
78 void set_number_keyed(PMC* key, FLOATVAL value)
79 void set_number_keyed_int(INTVAL key, FLOATVAL value)
80 void set_number_keyed_str(STRING* key, FLOATVAL value)
82 void set_bignum_int(INTVAL value)
83 void set_bignum_num(FLOATVAL value)
84 void set_bignum_str(STRING* value)
86 void set_string_native(STRING* value)
87 void assign_string_native(STRING* value)
88 void set_string_same(PMC* value)
89 void set_string_keyed(PMC* key, STRING* value)
90 void set_string_keyed_int(INTVAL key, STRING* value)
91 void set_string_keyed_str(STRING* key, STRING* value)
93 void set_bool(INTVAL value)
95 void set_pmc(PMC* value)
96 void assign_pmc(PMC* value)
97 void set_pmc_keyed(PMC* key, PMC* value)
98 void set_pmc_keyed_int(INTVAL key, PMC* value)
99 void set_pmc_keyed_str(STRING* key, PMC* value)
101 void set_pointer(void* value)
102 void set_pointer_keyed(PMC* key, void* value)
103 void set_pointer_keyed_int(INTVAL key, void* value)
104 void set_pointer_keyed_str(STRING* key, void* value)
106 [FETCHSIZE]
107 INTVAL elements()
109 [POP] :write
110 INTVAL pop_integer()
111 FLOATVAL pop_float()
112 STRING* pop_string()
113 PMC* pop_pmc()
115 [PUSH] :write
116 void push_integer(INTVAL value)
117 void push_float(FLOATVAL value)
118 void push_string(STRING* value)
119 void push_pmc(PMC* value)
121 [SHIFT] :write
122 INTVAL shift_integer()
123 FLOATVAL shift_float()
124 STRING* shift_string()
125 PMC* shift_pmc()
127 [UNSHIFT] :write
128 void unshift_integer(INTVAL value)
129 void unshift_float(FLOATVAL value)
130 void unshift_string(STRING* value)
131 void unshift_pmc(PMC* value)
133 ## void splice ???
135 [SPLICE] :write
136 void splice(PMC* value, INTVAL offset, INTVAL count)
138 # XXX marking writing here?
139 [MATH]
140 PMC* add(PMC* value, PMC* dest)             MMD_ADD
141 PMC* add_int(INTVAL value, PMC* dest)       MMD_ADD_INT
142 PMC* add_float(FLOATVAL value, PMC* dest)   MMD_ADD_FLOAT
144 void i_add(PMC* value)                      MMD_I_ADD
145 void i_add_int(INTVAL value)                MMD_I_ADD_INT
146 void i_add_float(FLOATVAL value)            MMD_I_ADD_FLOAT
148 PMC* subtract(PMC* value, PMC* dest)        MMD_SUBTRACT
149 PMC* subtract_int(INTVAL value, PMC* dest)  MMD_SUBTRACT_INT
150 PMC* subtract_float(FLOATVAL value, PMC* dest)  MMD_SUBTRACT_FLOAT
152 void i_subtract(PMC* value)                 MMD_I_SUBTRACT
153 void i_subtract_int(INTVAL value)           MMD_I_SUBTRACT_INT
154 void i_subtract_float(FLOATVAL value)       MMD_I_SUBTRACT_FLOAT
156 PMC* multiply(PMC* value, PMC* dest)        MMD_MULTIPLY
157 PMC* multiply_int(INTVAL value, PMC* dest)  MMD_MULTIPLY_INT
158 PMC* multiply_float(FLOATVAL value, PMC* dest)  MMD_MULTIPLY_FLOAT
160 void i_multiply(PMC* value)                 MMD_I_MULTIPLY
161 void i_multiply_int(INTVAL value)           MMD_I_MULTIPLY_INT
162 void i_multiply_float(FLOATVAL value)       MMD_I_MULTIPLY_FLOAT
164 PMC* divide(PMC* value, PMC* dest)           MMD_DIVIDE
165 PMC* divide_int(INTVAL value, PMC* dest)     MMD_DIVIDE_INT
166 PMC* divide_float(FLOATVAL value, PMC* dest) MMD_DIVIDE_FLOAT
168 void i_divide(PMC* value)                    MMD_I_DIVIDE
169 void i_divide_int(INTVAL value)              MMD_I_DIVIDE_INT
170 void i_divide_float(FLOATVAL value)          MMD_I_DIVIDE_FLOAT
172 PMC* floor_divide(PMC* value, PMC* dest)           MMD_FLOOR_DIVIDE
173 PMC* floor_divide_int(INTVAL value, PMC* dest)     MMD_FLOOR_DIVIDE_INT
174 PMC* floor_divide_float(FLOATVAL value, PMC* dest) MMD_FLOOR_DIVIDE_FLOAT
176 void i_floor_divide(PMC* value)              MMD_I_FLOOR_DIVIDE
177 void i_floor_divide_int(INTVAL value)        MMD_I_FLOOR_DIVIDE_INT
178 void i_floor_divide_float(FLOATVAL value)    MMD_I_FLOOR_DIVIDE_FLOAT
180 PMC* modulus(PMC* value, PMC* dest)         MMD_MOD
181 PMC* modulus_int(INTVAL value, PMC* dest)   MMD_MOD_INT
182 PMC* modulus_float(FLOATVAL value, PMC* dest) MMD_MOD_FLOAT
184 void i_modulus(PMC* value)                  MMD_I_MOD
185 void i_modulus_int(INTVAL value)            MMD_I_MOD_INT
186 void i_modulus_float(FLOATVAL value)        MMD_I_MOD_FLOAT
188 PMC* cmodulus(PMC* value, PMC* dest)        MMD_CMOD
189 PMC* cmodulus_int(INTVAL value, PMC* dest)  MMD_CMOD_INT
190 PMC* cmodulus_float(FLOATVAL value, PMC* dest) MMD_CMOD_FLOAT
192 void i_cmodulus(PMC* value)                 MMD_I_CMOD
193 void i_cmodulus_int(INTVAL value)           MMD_I_CMOD_INT
194 void i_cmodulus_float(FLOATVAL value)       MMD_I_CMOD_FLOAT
196 PMC* pow(PMC* value, PMC* dest)             MMD_POW
197 PMC* pow_int(INTVAL value, PMC* dest)       MMD_POW_INT
198 PMC* pow_float(FLOATVAL value, PMC* dest)   MMD_POW_FLOAT
200 void i_pow(PMC* value)                      MMD_I_POW
201 void i_pow_int(INTVAL value)                MMD_I_POW_INT
202 void i_pow_float(FLOATVAL value)            MMD_I_POW_FLOAT
204 void increment() :write
205 void decrement() :write
207 PMC* absolute(PMC* dest)
208 void i_absolute() :write
210 PMC* neg(PMC* dest)
211 void i_neg() :write
213 [BITWISE]
214 PMC* bitwise_or(PMC* value, PMC* dest)          MMD_BOR
215 PMC* bitwise_or_int(INTVAL value, PMC* dest)    MMD_BOR_INT
217 void i_bitwise_or(PMC* value)                   MMD_I_BOR
218 void i_bitwise_or_int(INTVAL value)             MMD_I_BOR_INT
220 PMC* bitwise_and(PMC* value, PMC* dest)         MMD_BAND
221 PMC* bitwise_and_int(INTVAL value, PMC* dest)   MMD_BAND_INT
223 void i_bitwise_and(PMC* value)                  MMD_I_BAND
224 void i_bitwise_and_int(INTVAL value)            MMD_I_BAND_INT
226 PMC* bitwise_xor(PMC* value, PMC* dest)         MMD_BXOR
227 PMC* bitwise_xor_int(INTVAL value, PMC* dest)   MMD_BXOR_INT
229 void i_bitwise_xor(PMC* value)                  MMD_I_BXOR
230 void i_bitwise_xor_int(INTVAL value)            MMD_I_BXOR_INT
232 PMC* bitwise_ors(PMC* value, PMC* dest)         MMD_SOR
233 PMC* bitwise_ors_str(STRING* value, PMC* dest)  MMD_SOR_STR
235 void i_bitwise_ors(PMC* value)                  MMD_I_SOR
236 void i_bitwise_ors_str(STRING* value)           MMD_I_SOR_STR
238 PMC* bitwise_ands(PMC* value, PMC* dest)        MMD_SAND
239 PMC* bitwise_ands_str(STRING* value, PMC* dest) MMD_SAND_STR
241 void i_bitwise_ands(PMC* value)                 MMD_I_SAND
242 void i_bitwise_ands_str(STRING* value)          MMD_I_SAND_STR
244 PMC* bitwise_xors(PMC* value, PMC* dest)        MMD_SXOR
245 PMC* bitwise_xors_str(STRING* value, PMC* dest) MMD_SXOR_STR
247 void i_bitwise_xors(PMC* value)                 MMD_I_SXOR
248 void i_bitwise_xors_str(STRING* value)          MMD_I_SXOR_STR
250 PMC* bitwise_not(PMC* dest)
251 void i_bitwise_not() :write
253 PMC* bitwise_nots(PMC* dest)
254 void i_bitwise_nots() :write
256 PMC* bitwise_shl(PMC* value, PMC* dest)         MMD_BSL
257 PMC* bitwise_shl_int(INTVAL value, PMC* dest)   MMD_BSL_INT
259 void i_bitwise_shl(PMC* value)                  MMD_I_BSL
260 void i_bitwise_shl_int(INTVAL value)            MMD_I_BSL_INT
262 PMC* bitwise_shr(PMC* value, PMC* dest)         MMD_BSR
263 PMC* bitwise_shr_int(INTVAL value, PMC* dest)   MMD_BSR_INT
265 void i_bitwise_shr(PMC* value)                  MMD_I_BSR
266 void i_bitwise_shr_int(INTVAL value)            MMD_I_BSR_INT
268 PMC* bitwise_lsr(PMC* value, PMC* dest)         MMD_LSR
269 PMC* bitwise_lsr_int(INTVAL value, PMC* dest)   MMD_LSR_INT
271 void i_bitwise_lsr(PMC* value)                  MMD_I_LSR
272 void i_bitwise_lsr_int(INTVAL value)            MMD_I_LSR_INT
274 [CMP]
275 INTVAL is_equal(PMC* value)                  MMD_EQ
276 INTVAL is_equal_num(PMC* value)              MMD_NUMEQ
277 INTVAL is_equal_string(PMC* value)           MMD_STREQ
279 INTVAL is_same(PMC* value)
281 INTVAL cmp(PMC* value)                       MMD_CMP
282 INTVAL cmp_num(PMC* value)                   MMD_NUMCMP
283 INTVAL cmp_string(PMC* value)                MMD_STRCMP
285 PMC* logical_or(PMC* value, PMC* dest)       MMD_LOR
287 PMC* logical_and(PMC* value, PMC* dest)      MMD_LAND
289 PMC* logical_xor(PMC* value, PMC* dest)      MMD_LXOR
291 PMC* logical_not(PMC* dest)
292 void i_logical_not() :write
295 [STRING]
296 PMC* concatenate(PMC* value, PMC* dest)        MMD_CONCAT
297 PMC* concatenate_str(STRING* value, PMC* dest) MMD_CONCAT_STR
299 void i_concatenate(PMC* value)               MMD_I_CONCAT
300 void i_concatenate_str(STRING* value)        MMD_I_CONCAT_STR
302 PMC* repeat(PMC* value, PMC* dest)           MMD_REPEAT
303 PMC* repeat_int(INTVAL value, PMC* dest)     MMD_REPEAT_INT
305 void i_repeat(PMC* value)                    MMD_I_REPEAT
306 void i_repeat_int(INTVAL value)              MMD_I_REPEAT_INT
308 void substr(INTVAL offset, INTVAL length, PMC* dest)
309 STRING* substr_str(INTVAL offset, INTVAL length)
311 [EXISTS]
312 INTVAL exists_keyed(PMC* key)
313 INTVAL exists_keyed_int(INTVAL key)
314 INTVAL exists_keyed_str(STRING* key)
316 [MAIN]
317 INTVAL defined()
318 INTVAL defined_keyed(PMC* key)
319 INTVAL defined_keyed_int(INTVAL key)
320 INTVAL defined_keyed_str(STRING* key)
322 [DELETE] :write
323 void delete_keyed(PMC* key)
324 void delete_keyed_int(INTVAL key)
325 void delete_keyed_str(STRING* key)
327 [MAIN]
328 PMC* nextkey_keyed(PMC* key, INTVAL what)
329 PMC* nextkey_keyed_int(INTVAL key, INTVAL what)
330 PMC* nextkey_keyed_str(STRING* key, INTVAL what)
331 PMC* get_iter()
333 opcode_t* invoke(void* next)
335 INTVAL can(STRING* method)
337 INTVAL does_pmc(PMC* role)
338 INTVAL does(STRING* role)
340 INTVAL isa_pmc(PMC* _class)
341 INTVAL isa(STRING* _class)
343 PMC* get_attr_str(STRING* idx)
344 PMC* get_attr_keyed(PMC* key, STRING* idx)
345 void set_attr_str(STRING* idx, PMC* value) :write
346 void set_attr_keyed(PMC* key, STRING* idx, PMC* value) :write
348 PMC* get_class()
350 void add_parent(PMC* parent) :write
351 void remove_parent(PMC* parent) :write
353 void add_role(PMC* role) :write
354 void remove_role(PMC* role) :write
356 void add_attribute(STRING* name, PMC* type) :write
357 void remove_attribute(STRING* name) :write
359 void add_method(STRING* method_name, PMC* sub_pmc) :write
360 void remove_method(STRING* method_name) :write
362 void add_vtable_override(STRING* vtable_name, PMC* sub_pmc) :write
363 void remove_vtable_override(STRING* vtable_name) :write
365 PMC* inspect()
366 PMC* inspect_str(STRING* what)
368 void freeze(visit_info* info)
369 void thaw  (visit_info* info) :write
370 void thawfinish (visit_info* info) :write
371 void visit (visit_info* info)
373 void share()
375 PMC* share_ro()