added FACTOR_MULTITHREADED_TLS option

Phil Dawes 2009-09-01 19:08:27 +01:00
parent a8f233c055
commit 1f4abd57b8
1 changed files with 11 additions and 3 deletions

View File

@ -690,11 +690,10 @@ struct factorvm {
}; };
// #define FACTOR_SINGLE_THREADED_SINGLETON #define FACTOR_MULTITHREADED_TLS
#define FACTOR_SINGLE_THREADED_TESTING
#ifdef FACTOR_SINGLE_THREADED_SINGLETON #ifdef FACTOR_SINGLE_THREADED_SINGLETON
/* calls are dispatched using the singleton */ /* calls are dispatched using the singleton vm ptr */
extern factorvm *vm; extern factorvm *vm;
#define PRIMITIVE_GETVM() vm #define PRIMITIVE_GETVM() vm
#define PRIMITIVE_OVERFLOW_GETVM() vm #define PRIMITIVE_OVERFLOW_GETVM() vm
@ -713,6 +712,15 @@ struct factorvm {
#define SIGNAL_VM_PTR() tls_vm() #define SIGNAL_VM_PTR() tls_vm()
#endif #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 #ifdef FACTOR_MULTITHREADED
#define PRIMITIVE_GETVM() ((factorvm*)myvm) #define PRIMITIVE_GETVM() ((factorvm*)myvm)
#define PRIMITIVE_OVERFLOW_GETVM() ((factorvm*)myvm) #define PRIMITIVE_OVERFLOW_GETVM() ((factorvm*)myvm)