#define DEFINE_ALIEN_ACCESSOR(name,type,boxer,to) \
PRIMITIVE(alien_##name) \
{ \
- boxer(*(type*)PRIMITIVE_GETVM()->alien_pointer()); \
+ factorvm *myvm = PRIMITIVE_GETVM(); \
+ myvm->boxer(*(type*)myvm->alien_pointer()); \
} \
PRIMITIVE(set_alien_##name) \
{ \
- type *ptr = (type *)PRIMITIVE_GETVM()->alien_pointer(); \
- type value = PRIMITIVE_GETVM()->to(dpop()); \
+ factorvm *myvm = PRIMITIVE_GETVM(); \
+ type *ptr = (type *)myvm->alien_pointer(); \
+ type value = myvm->to(dpop()); \
*ptr = value; \
}
dpush(tag_fixnum(n));
}
-VM_C_API void box_signed_1(s8 n)
+VM_C_API void box_signed_1(s8 n,factorvm *myvm)
{
- return vm->box_signed_1(n);
+ ASSERTVM();
+ return VM_PTR->box_signed_1(n);
}
void factorvm::box_unsigned_1(u8 n)
dpush(tag_fixnum(n));
}
-VM_C_API void box_unsigned_1(u8 n)
+VM_C_API void box_unsigned_1(u8 n,factorvm *myvm)
{
- return vm->box_unsigned_1(n);
+ ASSERTVM();
+ return VM_PTR->box_unsigned_1(n);
}
void factorvm::box_signed_2(s16 n)
dpush(tag_fixnum(n));
}
-VM_C_API void box_signed_2(s16 n)
+VM_C_API void box_signed_2(s16 n,factorvm *myvm)
{
- return vm->box_signed_2(n);
+ ASSERTVM();
+ return VM_PTR->box_signed_2(n);
}
void factorvm::box_unsigned_2(u16 n)
dpush(tag_fixnum(n));
}
-VM_C_API void box_unsigned_2(u16 n)
+VM_C_API void box_unsigned_2(u16 n,factorvm *myvm)
{
- return vm->box_unsigned_2(n);
+ ASSERTVM();
+ return VM_PTR->box_unsigned_2(n);
}
void factorvm::box_signed_4(s32 n)
dpush(allot_integer(n));
}
-VM_C_API void box_signed_4(s32 n)
+VM_C_API void box_signed_4(s32 n,factorvm *myvm)
{
- return vm->box_signed_4(n);
+ ASSERTVM();
+ return VM_PTR->box_signed_4(n);
}
void factorvm::box_unsigned_4(u32 n)
dpush(allot_cell(n));
}
-VM_C_API void box_unsigned_4(u32 n)
+VM_C_API void box_unsigned_4(u32 n,factorvm *myvm)
{
- return vm->box_unsigned_4(n);
+ ASSERTVM();
+ return VM_PTR->box_unsigned_4(n);
}
void factorvm::box_signed_cell(fixnum integer)
dpush(allot_integer(integer));
}
-VM_C_API void box_signed_cell(fixnum integer)
+VM_C_API void box_signed_cell(fixnum integer,factorvm *myvm)
{
- return vm->box_signed_cell(integer);
+ ASSERTVM();
+ return VM_PTR->box_signed_cell(integer);
}
void factorvm::box_unsigned_cell(cell cell)
dpush(allot_cell(cell));
}
-VM_C_API void box_unsigned_cell(cell cell)
+VM_C_API void box_unsigned_cell(cell cell,factorvm *myvm)
{
- return vm->box_unsigned_cell(cell);
+ ASSERTVM();
+ return VM_PTR->box_unsigned_cell(cell);
}
void factorvm::box_signed_8(s64 n)
dpush(tag_fixnum(n));
}
-VM_C_API void box_signed_8(s64 n)
+VM_C_API void box_signed_8(s64 n,factorvm *myvm)
{
- return vm->box_signed_8(n);
+ ASSERTVM();
+ return VM_PTR->box_signed_8(n);
}
s64 factorvm::to_signed_8(cell obj)
dpush(tag_fixnum(n));
}
-VM_C_API void box_unsigned_8(u64 n)
+VM_C_API void box_unsigned_8(u64 n,factorvm *myvm)
{
- return vm->box_unsigned_8(n);
+ ASSERTVM();
+ return VM_PTR->box_unsigned_8(n);
}
u64 factorvm::to_unsigned_8(cell obj)
VM_C_API void box_double(double flo);
VM_C_API double to_double(cell value, factorvm *vm);
-VM_C_API void box_signed_1(s8 n);
-VM_C_API void box_unsigned_1(u8 n);
-VM_C_API void box_signed_2(s16 n);
-VM_C_API void box_unsigned_2(u16 n);
-VM_C_API void box_signed_4(s32 n);
-VM_C_API void box_unsigned_4(u32 n);
-VM_C_API void box_signed_cell(fixnum integer);
-VM_C_API void box_unsigned_cell(cell cell);
-VM_C_API void box_signed_8(s64 n);
-VM_C_API void box_unsigned_8(u64 n);
+VM_C_API void box_signed_1(s8 n, factorvm *vm);
+VM_C_API void box_unsigned_1(u8 n, factorvm *vm);
+VM_C_API void box_signed_2(s16 n, factorvm *vm);
+VM_C_API void box_unsigned_2(u16 n, factorvm *vm);
+VM_C_API void box_signed_4(s32 n, factorvm *vm);
+VM_C_API void box_unsigned_4(u32 n, factorvm *vm);
+VM_C_API void box_signed_cell(fixnum integer, factorvm *vm);
+VM_C_API void box_unsigned_cell(cell cell, factorvm *vm);
+VM_C_API void box_signed_8(s64 n, factorvm *vm);
+VM_C_API void box_unsigned_8(u64 n, factorvm *vm);
VM_C_API s64 to_signed_8(cell obj, factorvm *vm);
VM_C_API u64 to_unsigned_8(cell obj, factorvm *vm);