From 1f4abd57b80dbd79d023d51023fc4675559de326 Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Tue, 1 Sep 2009 19:08:27 +0100 Subject: [PATCH] added FACTOR_MULTITHREADED_TLS option --- vm/vm.hpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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)