4 #if defined(FACTOR_X86)
5 extern "C" __attribute__ ((regparm (1))) typedef void (*primitive_type)(void *myvm);
6 #define PRIMITIVE(name) extern "C" __attribute__ ((regparm (1))) void primitive_##name(void *myvm)
7 #define PRIMITIVE_FORWARD(name) extern "C" __attribute__ ((regparm (1))) void primitive_##name(void *myvm) \
9 ((factor_vm*)myvm)->primitive_##name(); \
12 extern "C" typedef void (*primitive_type)(void *myvm);
13 #define PRIMITIVE(name) extern "C" void primitive_##name(void *myvm)
14 #define PRIMITIVE_FORWARD(name) extern "C" void primitive_##name(void *myvm) \
16 ((factor_vm*)myvm)->primitive_##name(); \
19 extern const primitive_type primitives[];
21 PRIMITIVE(bignum_to_fixnum);
22 PRIMITIVE(float_to_fixnum);
23 PRIMITIVE(fixnum_to_bignum);
24 PRIMITIVE(float_to_bignum);
25 PRIMITIVE(fixnum_to_float);
26 PRIMITIVE(bignum_to_float);
27 PRIMITIVE(str_to_float);
28 PRIMITIVE(float_to_str);
29 PRIMITIVE(float_bits);
30 PRIMITIVE(double_bits);
31 PRIMITIVE(bits_float);
32 PRIMITIVE(bits_double);
33 PRIMITIVE(fixnum_add);
34 PRIMITIVE(fixnum_subtract);
35 PRIMITIVE(fixnum_multiply);
36 PRIMITIVE(fixnum_divint);
37 PRIMITIVE(fixnum_divmod);
38 PRIMITIVE(fixnum_shift);
40 PRIMITIVE(bignum_add);
41 PRIMITIVE(bignum_subtract);
42 PRIMITIVE(bignum_multiply);
43 PRIMITIVE(bignum_divint);
44 PRIMITIVE(bignum_mod);
45 PRIMITIVE(bignum_divmod);
46 PRIMITIVE(bignum_and);
48 PRIMITIVE(bignum_xor);
49 PRIMITIVE(bignum_not);
50 PRIMITIVE(bignum_shift);
51 PRIMITIVE(bignum_less);
52 PRIMITIVE(bignum_lesseq);
53 PRIMITIVE(bignum_greater);
54 PRIMITIVE(bignum_greatereq);
55 PRIMITIVE(bignum_bitp);
56 PRIMITIVE(bignum_log2);
57 PRIMITIVE(byte_array_to_bignum);
60 PRIMITIVE(float_subtract);
61 PRIMITIVE(float_multiply);
62 PRIMITIVE(float_divfloat);
64 PRIMITIVE(float_less);
65 PRIMITIVE(float_lesseq);
66 PRIMITIVE(float_greater);
67 PRIMITIVE(float_greatereq);
75 PRIMITIVE(save_image);
76 PRIMITIVE(save_image_and_exit);
78 PRIMITIVE(retainstack);
80 PRIMITIVE(set_datastack);
81 PRIMITIVE(set_retainstack);
82 PRIMITIVE(set_callstack);
87 PRIMITIVE(modify_code_heap);
91 PRIMITIVE(byte_array);
92 PRIMITIVE(uninitialized_byte_array);
93 PRIMITIVE(displaced_alien);
94 PRIMITIVE(alien_signed_cell);
95 PRIMITIVE(set_alien_signed_cell);
96 PRIMITIVE(alien_unsigned_cell);
97 PRIMITIVE(set_alien_unsigned_cell);
98 PRIMITIVE(alien_signed_8);
99 PRIMITIVE(set_alien_signed_8);
100 PRIMITIVE(alien_unsigned_8);
101 PRIMITIVE(set_alien_unsigned_8);
102 PRIMITIVE(alien_signed_4);
103 PRIMITIVE(set_alien_signed_4);
104 PRIMITIVE(alien_unsigned_4);
105 PRIMITIVE(set_alien_unsigned_4);
106 PRIMITIVE(alien_signed_2);
107 PRIMITIVE(set_alien_signed_2);
108 PRIMITIVE(alien_unsigned_2);
109 PRIMITIVE(set_alien_unsigned_2);
110 PRIMITIVE(alien_signed_1);
111 PRIMITIVE(set_alien_signed_1);
112 PRIMITIVE(alien_unsigned_1);
113 PRIMITIVE(set_alien_unsigned_1);
114 PRIMITIVE(alien_float);
115 PRIMITIVE(set_alien_float);
116 PRIMITIVE(alien_double);
117 PRIMITIVE(set_alien_double);
118 PRIMITIVE(alien_cell);
119 PRIMITIVE(set_alien_cell);
120 PRIMITIVE(alien_address);
122 PRIMITIVE(string_nth);
123 PRIMITIVE(set_string_nth_fast);
124 PRIMITIVE(set_string_nth_slow);
125 PRIMITIVE(resize_array);
126 PRIMITIVE(resize_string);
128 PRIMITIVE(begin_scan);
129 PRIMITIVE(next_object);
145 PRIMITIVE(array_to_quotation);
146 PRIMITIVE(quotation_xt);
148 PRIMITIVE(profiling);
151 PRIMITIVE(tuple_boa);
152 PRIMITIVE(callstack_to_array);
153 PRIMITIVE(innermost_stack_frame_executing);
154 PRIMITIVE(innermost_stack_frame_scan);
155 PRIMITIVE(set_innermost_stack_frame_quot);
156 PRIMITIVE(call_clear);
157 PRIMITIVE(resize_byte_array);
158 PRIMITIVE(dll_validp);
159 PRIMITIVE(unimplemented);
160 PRIMITIVE(clear_gc_stats);
161 PRIMITIVE(jit_compile);
162 PRIMITIVE(load_locals);
163 PRIMITIVE(check_datastack);
164 PRIMITIVE(inline_cache_miss);
165 PRIMITIVE(inline_cache_miss_tail);
166 PRIMITIVE(mega_cache_miss);
167 PRIMITIVE(lookup_method);
168 PRIMITIVE(reset_dispatch_stats);
169 PRIMITIVE(dispatch_stats);
170 PRIMITIVE(reset_inline_cache_stats);
171 PRIMITIVE(inline_cache_stats);
172 PRIMITIVE(optimized_p);
173 PRIMITIVE(quot_compiled_p);
175 PRIMITIVE(strip_stack_traces);