From: Phil Dawes Date: Tue, 1 Sep 2009 18:08:27 +0000 (+0100) Subject: added FACTOR_MULTITHREADED_TLS option X-Git-Tag: 0.97~5502^2~2^2~20 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=e49fa4109d1950a2acb041b4c39df02c7509668b added FACTOR_MULTITHREADED_TLS option --- diff --git a/vm/vm.hpp b/vm/vm.hpp index b94ba16e00..6570cf0c04 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -690,11 +690,10 @@ struct factorvm { }; -// #define FACTOR_SINGLE_THREADED_SINGLETON -#define FACTOR_SINGLE_THREADED_TESTING +#define FACTOR_MULTITHREADED_TLS #ifdef FACTOR_SINGLE_THREADED_SINGLETON -/* calls are dispatched using the singleton */ +/* calls are dispatched using the singleton vm ptr */ extern factorvm *vm; #define PRIMITIVE_GETVM() vm #define PRIMITIVE_OVERFLOW_GETVM() vm @@ -713,6 +712,15 @@ struct factorvm { #define SIGNAL_VM_PTR() tls_vm() #endif +#ifdef FACTOR_MULTITHREADED_TLS +/* uses thread local storage to obtain vm ptr */ + #define PRIMITIVE_GETVM() tls_vm() + #define PRIMITIVE_OVERFLOW_GETVM() tls_vm() + #define VM_PTR tls_vm() + #define ASSERTVM() + #define SIGNAL_VM_PTR() tls_vm() +#endif + #ifdef FACTOR_MULTITHREADED #define PRIMITIVE_GETVM() ((factorvm*)myvm) #define PRIMITIVE_OVERFLOW_GETVM() ((factorvm*)myvm)