]> gitweb.factorcode.org Git - factor.git/blob - vm/primitives.hpp
Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp
[factor.git] / vm / primitives.hpp
1 namespace factor
2 {
3
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) \
8   {                                                                     \
9         PRIMITIVE_GETVM()->primitive_##name();                          \
10   }
11 #else
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) \
15   {                                                                     \
16         PRIMITIVE_GETVM()->primitive_##name();                          \
17   }
18 #endif
19 extern const primitive_type primitives[];
20
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);
39 PRIMITIVE(bignum_eq);
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);
47 PRIMITIVE(bignum_or);
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);
58 PRIMITIVE(float_eq);
59 PRIMITIVE(float_add);
60 PRIMITIVE(float_subtract);
61 PRIMITIVE(float_multiply);
62 PRIMITIVE(float_divfloat);
63 PRIMITIVE(float_mod);
64 PRIMITIVE(float_less);
65 PRIMITIVE(float_lesseq);
66 PRIMITIVE(float_greater);
67 PRIMITIVE(float_greatereq);
68 PRIMITIVE(word);
69 PRIMITIVE(word_xt);
70 PRIMITIVE(getenv);
71 PRIMITIVE(setenv);
72 PRIMITIVE(existsp);
73 PRIMITIVE(gc);
74 PRIMITIVE(gc_stats);
75 PRIMITIVE(save_image);
76 PRIMITIVE(save_image_and_exit);
77 PRIMITIVE(datastack);
78 PRIMITIVE(retainstack);
79 PRIMITIVE(callstack);
80 PRIMITIVE(set_datastack);
81 PRIMITIVE(set_retainstack);
82 PRIMITIVE(set_callstack);
83 PRIMITIVE(exit);
84 PRIMITIVE(data_room);
85 PRIMITIVE(code_room);
86 PRIMITIVE(micros);
87 PRIMITIVE(modify_code_heap);
88 PRIMITIVE(dlopen);
89 PRIMITIVE(dlsym);
90 PRIMITIVE(dlclose);
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);
121 PRIMITIVE(set_slot);
122 PRIMITIVE(string_nth);
123 PRIMITIVE(set_string_nth_fast);
124 PRIMITIVE(set_string_nth_slow);
125 PRIMITIVE(resize_array);
126 PRIMITIVE(resize_string);
127 PRIMITIVE(array);
128 PRIMITIVE(begin_scan);
129 PRIMITIVE(next_object);
130 PRIMITIVE(end_scan);
131 PRIMITIVE(size);
132 PRIMITIVE(die);
133 PRIMITIVE(fopen);
134 PRIMITIVE(fgetc);
135 PRIMITIVE(fread);
136 PRIMITIVE(fputc);
137 PRIMITIVE(fwrite);
138 PRIMITIVE(fflush);
139 PRIMITIVE(fseek);
140 PRIMITIVE(fclose);
141 PRIMITIVE(wrapper);
142 PRIMITIVE(clone);
143 PRIMITIVE(string);
144 PRIMITIVE(array_to_quotation);
145 PRIMITIVE(quotation_xt);
146 PRIMITIVE(tuple);
147 PRIMITIVE(profiling);
148 PRIMITIVE(become);
149 PRIMITIVE(sleep);
150 PRIMITIVE(tuple_boa);
151 PRIMITIVE(callstack_to_array);
152 PRIMITIVE(innermost_stack_frame_executing);
153 PRIMITIVE(innermost_stack_frame_scan);
154 PRIMITIVE(set_innermost_stack_frame_quot);
155 PRIMITIVE(call_clear);
156 PRIMITIVE(resize_byte_array);
157 PRIMITIVE(dll_validp);
158 PRIMITIVE(unimplemented);
159 PRIMITIVE(clear_gc_stats);
160 PRIMITIVE(jit_compile);
161 PRIMITIVE(load_locals);
162 PRIMITIVE(check_datastack);
163 PRIMITIVE(inline_cache_miss);
164 PRIMITIVE(inline_cache_miss_tail);
165 PRIMITIVE(mega_cache_miss);
166 PRIMITIVE(lookup_method);
167 PRIMITIVE(reset_dispatch_stats);
168 PRIMITIVE(dispatch_stats);
169 PRIMITIVE(reset_inline_cache_stats);
170 PRIMITIVE(inline_cache_stats);
171 PRIMITIVE(optimized_p);
172 PRIMITIVE(quot_compiled_p);
173 PRIMITIVE(vm_ptr);
174
175 }