]> gitweb.factorcode.org Git - factor.git/commitdiff
vm passed in box_alien and alien_offset (win32)
authorPhil Dawes <phil@phildawes.net>
Sat, 22 Aug 2009 20:35:47 +0000 (21:35 +0100)
committerPhil Dawes <phil@phildawes.net>
Wed, 16 Sep 2009 07:16:33 +0000 (08:16 +0100)
vm/alien.cpp
vm/alien.hpp
vm/os-unix.cpp

index 6c83f87182174e86f363d63adbaff0b74d155b9c..23ca60bf6a8c494d59e8c7ecb1ec86f59eed66e3 100755 (executable)
@@ -218,9 +218,10 @@ char *factorvm::alien_offset(cell obj)
        }
 }
 
-VM_C_API char *alien_offset(cell obj)
+VM_C_API char *alien_offset(cell obj, factorvm *myvm)
 {
-       return vm->alien_offset(obj);
+       ASSERTVM();
+       return VM_PTR->alien_offset(obj);
 }
 
 /* pop an object representing a C pointer */
@@ -231,6 +232,7 @@ char *factorvm::unbox_alien()
 
 VM_C_API char *unbox_alien()
 {
+       printf("*PHIL unbox_alien\n");
        return vm->unbox_alien();
 }
 
@@ -243,9 +245,10 @@ void factorvm::box_alien(void *ptr)
                dpush(allot_alien(F,(cell)ptr));
 }
 
-VM_C_API void box_alien(void *ptr)
+VM_C_API void box_alien(void *ptr, factorvm *myvm)
 {
-       return vm->box_alien(ptr);
+       ASSERTVM();
+       return VM_PTR->box_alien(ptr);
 }
 
 /* for FFI calls passing structs by value */
@@ -256,6 +259,7 @@ void factorvm::to_value_struct(cell src, void *dest, cell size)
 
 VM_C_API void to_value_struct(cell src, void *dest, cell size)
 {
+       printf("PHIL to_value_struct\n");
        return vm->to_value_struct(src,dest,size);
 }
 
@@ -269,6 +273,7 @@ void factorvm::box_value_struct(void *src, cell size)
 
 VM_C_API void box_value_struct(void *src, cell size)
 {
+       printf("PHIL box_value_struct\n");
        return vm->box_value_struct(src,size);
 }
 
@@ -283,6 +288,7 @@ void factorvm::box_small_struct(cell x, cell y, cell size)
 
 VM_C_API void box_small_struct(cell x, cell y, cell size)
 {
+       printf("PHIL box_small_struct\n");
        return vm->box_small_struct(x,y,size);
 }
 
@@ -299,6 +305,7 @@ void factorvm::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)
 {
+       printf("PHIL box_medium_struct\n");
        return vm->box_medium_struct(x1, x2, x3, x4, size);
 }
 
index 0a4f3a7e93b072925e80e5f780ec2d6f823b4134..327d791406c284f1bbbf113196122568d7290988 100755 (executable)
@@ -36,9 +36,9 @@ PRIMITIVE(dlsym);
 PRIMITIVE(dlclose);
 PRIMITIVE(dll_validp);
 
-VM_C_API char *alien_offset(cell object);
+VM_C_API char *alien_offset(cell object, factorvm *vm);
 VM_C_API char *unbox_alien();
-VM_C_API void box_alien(void *ptr);
+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 box_value_struct(void *src, cell size);
 VM_C_API void box_small_struct(cell x, cell y, cell size);
index 189fca0cf789591362bcca8b10e0878586b5a794..3785aeda72cc86b37329a5b66cf518549a2d75c6 100644 (file)
@@ -39,7 +39,7 @@ void init_ffi()
 
 void ffi_dlopen(dll *dll)
 {
-       dll->dll = dlopen(alien_offset(dll->path), RTLD_LAZY);
+       dll->dll = dlopen(alien_offset(dll->path,vm), RTLD_LAZY);
 }
 
 void *ffi_dlsym(dll *dll, symbol_char *symbol)