]> gitweb.factorcode.org Git - factor.git/blob - vm/primitives.hpp
d17ebe5833c149e59803a95b6114f1cf63aaa3c2
[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 }