From: Phil Dawes Date: Tue, 25 Aug 2009 07:35:22 +0000 (+0100) Subject: removed vm ptrs from unix code (still in signal handlers tho) X-Git-Tag: 0.97~5502^2~2^2~33 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=1456fb3c97f419c58a97e176b6ce3096699d34aa removed vm ptrs from unix code (still in signal handlers tho) --- diff --git a/vm/os-unix.cpp b/vm/os-unix.cpp index 832b93b392..ed007398a3 100644 --- a/vm/os-unix.cpp +++ b/vm/os-unix.cpp @@ -31,40 +31,40 @@ void sleep_micros(cell usec) usleep(usec); } -void init_ffi() +void factorvm::init_ffi() { /* NULL_DLL is "libfactor.dylib" for OS X and NULL for generic unix */ null_dll = dlopen(NULL_DLL,RTLD_LAZY); } -void ffi_dlopen(dll *dll) +void factorvm::ffi_dlopen(dll *dll) { - dll->dll = dlopen(alien_offset(dll->path,vm), RTLD_LAZY); + dll->dll = dlopen(alien_offset(dll->path), RTLD_LAZY); } -void *ffi_dlsym(dll *dll, symbol_char *symbol) +void *factorvm::ffi_dlsym(dll *dll, symbol_char *symbol) { void *handle = (dll == NULL ? null_dll : dll->dll); return dlsym(handle,symbol); } -void ffi_dlclose(dll *dll) +void factorvm::ffi_dlclose(dll *dll) { if(dlclose(dll->dll)) - vm->general_error(ERROR_FFI,F,F,NULL); + general_error(ERROR_FFI,F,F,NULL); dll->dll = NULL; } -long factorvm::thread_id(){ - return 0; // TODO fix me +cell factorvm::thread_id(){ + return pthread_self(); } inline void factorvm::vmprim_existsp() { struct stat sb; - char *path = (char *)(vm->untag_check(dpop()) + 1); + char *path = (char *)(untag_check(dpop()) + 1); box_boolean(stat(path,&sb) >= 0); } @@ -73,7 +73,7 @@ PRIMITIVE(existsp) PRIMITIVE_GETVM()->vmprim_existsp(); } -segment *alloc_segment(cell size) +segment *factorvm::alloc_segment(cell size) { int pagesize = getpagesize(); @@ -82,7 +82,7 @@ segment *alloc_segment(cell size) MAP_ANON | MAP_PRIVATE,-1,0); if(array == (char*)-1) - vm->out_of_memory(); + out_of_memory(); if(mprotect(array,pagesize,PROT_NONE) == -1) fatal_error("Cannot protect low guard page",(cell)array); diff --git a/vm/os-windows-nt.cpp b/vm/os-windows-nt.cpp index 6085d65670..630782a946 100755 --- a/vm/os-windows-nt.cpp +++ b/vm/os-windows-nt.cpp @@ -7,7 +7,7 @@ void *start_thread(void *(*start_routine)(void *),void *args){ return CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, args, 0, 0); } -long factorvm::thread_id(){ +cell factorvm::thread_id(){ return GetCurrentThreadId(); } diff --git a/vm/vm.hpp b/vm/vm.hpp index 0a0393700c..9af73e4c7e 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -659,18 +659,18 @@ struct factorvm { // os-* inline void vmprim_existsp(); - long thread_id(); - - // os-windows - #if defined(WINDOWS) + cell thread_id(); void init_ffi(); void ffi_dlopen(dll *dll); void *ffi_dlsym(dll *dll, symbol_char *symbol); void ffi_dlclose(dll *dll); + segment *alloc_segment(cell size); + + // os-windows + #if defined(WINDOWS) void sleep_micros(u64 usec); long getpagesize(); void dealloc_segment(segment *block); - segment *alloc_segment(cell size); const vm_char *vm_executable_path(); const vm_char *default_image_path(); void windows_image_path(vm_char *full_path, vm_char *temp_path, unsigned int length);