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)