2009-05-04 02:46:13 -04:00
|
|
|
namespace factor
|
|
|
|
|
{
|
|
|
|
|
|
2009-08-18 15:49:22 -04:00
|
|
|
#if defined(FACTOR_X86)
|
|
|
|
|
extern "C" __attribute__ ((regparm (1))) typedef void (*primitive_type)(void *myvm);
|
|
|
|
|
#define PRIMITIVE(name) extern "C" __attribute__ ((regparm (1))) void primitive_##name(void *myvm)
|
|
|
|
|
#define PRIMITIVE_GETVM() ((factorvm*)myvm)
|
|
|
|
|
#else
|
|
|
|
|
extern "C" typedef void (*primitive_type)(void *myvm);
|
|
|
|
|
#define PRIMITIVE(name) extern "C" void primitive_##name(void *myvm)
|
|
|
|
|
#define PRIMITIVE_GETVM() vm
|
|
|
|
|
#endif
|
2009-05-04 02:00:30 -04:00
|
|
|
|
2009-08-18 15:49:22 -04:00
|
|
|
extern const primitive_type primitives[];
|
2009-08-22 06:15:58 -04:00
|
|
|
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
2009-08-21 16:24:53 -04:00
|
|
|
#define VM_PTR vm
|
|
|
|
|
#define ASSERTVM()
|
2009-05-04 02:46:13 -04:00
|
|
|
}
|