]> gitweb.factorcode.org Git - factor.git/blob - vm/primitives.hpp
vm: eliminating register variables work in progress. Works on x86-32 with non-optimiz...
[factor.git] / vm / primitives.hpp
1 namespace factor
2 {
3
4 extern "C" typedef void (*primitive_type)(factor_vm *parent);
5 #define PRIMITIVE(name) extern "C" void primitive_##name(factor_vm *parent)
6 #define PRIMITIVE_FORWARD(name) extern "C" void primitive_##name(factor_vm *parent) \
7 { \
8         parent->primitive_##name(); \
9 }
10
11 extern const primitive_type primitives[];
12
13 /* These are generated with macros in alien.c */
14 PRIMITIVE(alien_signed_cell);
15 PRIMITIVE(set_alien_signed_cell);
16 PRIMITIVE(alien_unsigned_cell);
17 PRIMITIVE(set_alien_unsigned_cell);
18 PRIMITIVE(alien_signed_8);
19 PRIMITIVE(set_alien_signed_8);
20 PRIMITIVE(alien_unsigned_8);
21 PRIMITIVE(set_alien_unsigned_8);
22 PRIMITIVE(alien_signed_4);
23 PRIMITIVE(set_alien_signed_4);
24 PRIMITIVE(alien_unsigned_4);
25 PRIMITIVE(set_alien_unsigned_4);
26 PRIMITIVE(alien_signed_2);
27 PRIMITIVE(set_alien_signed_2);
28 PRIMITIVE(alien_unsigned_2);
29 PRIMITIVE(set_alien_unsigned_2);
30 PRIMITIVE(alien_signed_1);
31 PRIMITIVE(set_alien_signed_1);
32 PRIMITIVE(alien_unsigned_1);
33 PRIMITIVE(set_alien_unsigned_1);
34 PRIMITIVE(alien_float);
35 PRIMITIVE(set_alien_float);
36 PRIMITIVE(alien_double);
37 PRIMITIVE(set_alien_double);
38 PRIMITIVE(alien_cell);
39 PRIMITIVE(set_alien_cell);
40
41 }