added factorvm ptrs to the rest of alien functions.

(Left commented debug lines to remind me that these haven't been tested yet, and some are osx specific)
Phil Dawes 2009-08-24 20:26:10 +01:00
parent c12eccb581
commit c6d83111e8
2 changed files with 20 additions and 20 deletions

View File

@ -224,10 +224,10 @@ char *factorvm::unbox_alien()
return alien_offset(dpop()); return alien_offset(dpop());
} }
VM_C_API char *unbox_alien() VM_C_API char *unbox_alien(factorvm *myvm)
{ {
printf("PHIL unbox_alien\n");fflush(stdout); //printf("PHIL unbox_alien %d %d\n",vm,myvm);fflush(stdout);
return vm->unbox_alien(); return VM_PTR->unbox_alien();
} }
/* make an alien and push */ /* make an alien and push */
@ -251,10 +251,10 @@ void factorvm::to_value_struct(cell src, void *dest, cell size)
memcpy(dest,alien_offset(src),size); memcpy(dest,alien_offset(src),size);
} }
VM_C_API void to_value_struct(cell src, void *dest, cell size) VM_C_API void to_value_struct(cell src, void *dest, cell size, factorvm *myvm)
{ {
printf("PHIL to_value_struct\n"); //printf("PHIL to_value_struct %d %d\n",vm,myvm);fflush(stdout);
return vm->to_value_struct(src,dest,size); return VM_PTR->to_value_struct(src,dest,size);
} }
/* for FFI callbacks receiving structs by value */ /* for FFI callbacks receiving structs by value */
@ -265,10 +265,10 @@ void factorvm::box_value_struct(void *src, cell size)
dpush(tag<byte_array>(bytes)); dpush(tag<byte_array>(bytes));
} }
VM_C_API void box_value_struct(void *src, cell size) VM_C_API void box_value_struct(void *src, cell size,factorvm *myvm)
{ {
printf("PHIL box_value_struct\n"); //printf("PHIL box_value_struct %d %d\n",vm,myvm);fflush(stdout);
return vm->box_value_struct(src,size); return VM_PTR->box_value_struct(src,size);
} }
/* On some x86 OSes, structs <= 8 bytes are returned in registers. */ /* On some x86 OSes, structs <= 8 bytes are returned in registers. */
@ -280,10 +280,10 @@ void factorvm::box_small_struct(cell x, cell y, cell size)
box_value_struct(data,size); box_value_struct(data,size);
} }
VM_C_API void box_small_struct(cell x, cell y, cell size) VM_C_API void box_small_struct(cell x, cell y, cell size, factorvm *myvm)
{ {
printf("PHIL box_small_struct\n"); //printf("PHIL box_small_struct %d %d\n",vm,myvm);fflush(stdout);
return vm->box_small_struct(x,y,size); return VM_PTR->box_small_struct(x,y,size);
} }
/* On OS X/PPC, complex numbers are returned in registers. */ /* On OS X/PPC, complex numbers are returned in registers. */
@ -297,10 +297,10 @@ void factorvm::box_medium_struct(cell x1, cell x2, cell x3, cell x4, cell size)
box_value_struct(data,size); box_value_struct(data,size);
} }
VM_C_API void box_medium_struct(cell x1, cell x2, cell x3, cell x4, cell size) VM_C_API void box_medium_struct(cell x1, cell x2, cell x3, cell x4, cell size, factorvm *myvm)
{ {
printf("PHIL box_medium_struct\n"); //printf("PHIL box_medium_struct %d %d\n",vm,myvm);fflush(stdout);
return vm->box_medium_struct(x1, x2, x3, x4, size); return VM_PTR->box_medium_struct(x1, x2, x3, x4, size);
} }
} }

View File

@ -37,11 +37,11 @@ PRIMITIVE(dlclose);
PRIMITIVE(dll_validp); PRIMITIVE(dll_validp);
VM_C_API char *alien_offset(cell object, factorvm *vm); VM_C_API char *alien_offset(cell object, factorvm *vm);
VM_C_API char *unbox_alien(); VM_C_API char *unbox_alien(factorvm *vm);
VM_C_API void box_alien(void *ptr, factorvm *vm); VM_C_API void box_alien(void *ptr, factorvm *vm);
VM_C_API void to_value_struct(cell src, void *dest, cell size); VM_C_API void to_value_struct(cell src, void *dest, cell size, factorvm *vm);
VM_C_API void box_value_struct(void *src, cell size); VM_C_API void box_value_struct(void *src, cell size,factorvm *vm);
VM_C_API void box_small_struct(cell x, cell y, cell size); VM_C_API void box_small_struct(cell x, cell y, cell size,factorvm *vm);
VM_C_API void box_medium_struct(cell x1, cell x2, cell x3, cell x4, cell size); VM_C_API void box_medium_struct(cell x1, cell x2, cell x3, cell x4, cell size,factorvm *vm);
} }