From 9a61471f068f57d2b5de8273a69071a8dd4a91ac Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Tue, 4 May 2010 12:01:27 -0600 Subject: [PATCH] [Places] make jit lock thread local --- src/racket/include/schthread.h | 2 ++ src/racket/src/env.c | 7 ++++--- src/racket/src/jit.c | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/racket/include/schthread.h b/src/racket/include/schthread.h index 9888ae78ba..af03355a47 100644 --- a/src/racket/include/schthread.h +++ b/src/racket/include/schthread.h @@ -282,6 +282,7 @@ typedef struct Thread_Local_Variables { struct Scheme_Object *dummy_output_port_; struct Scheme_Bucket_Table *place_local_modpath_table_; struct Scheme_Hash_Table *opened_libs_; + struct mzrt_mutex *jit_lock_; /*KPLAKE1*/ } Thread_Local_Variables; @@ -566,6 +567,7 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL; #define dummy_output_port XOA (scheme_get_thread_local_variables()->dummy_output_port_) #define place_local_modpath_table XOA (scheme_get_thread_local_variables()->place_local_modpath_table_) #define opened_libs XOA (scheme_get_thread_local_variables()->opened_libs_) +#define jit_lock XOA (scheme_get_thread_local_variables()->jit_lock_) /*KPLAKE2*/ /* **************************************** */ diff --git a/src/racket/src/env.c b/src/racket/src/env.c index 12a394ee12..bb2e5df650 100644 --- a/src/racket/src/env.c +++ b/src/racket/src/env.c @@ -356,9 +356,6 @@ Scheme_Env *scheme_engine_instance_init() { scheme_init_foreign_globals(); #endif scheme_init_salloc(); -#ifdef MZ_USE_JIT - scheme_init_jit(); -#endif make_kernel_env(); #if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES) @@ -479,6 +476,10 @@ static Scheme_Env *place_instance_init(void *stack_base, int initial_main_os_thr printf("process @ %ld\n", scheme_get_process_milliseconds()); #endif +#ifdef MZ_USE_JIT + scheme_init_jit(); +#endif + /* error handling and buffers */ /* this check prevents initializing orig ports twice for the first initial * place. The kernel initializes orig_ports early. */ diff --git a/src/racket/src/jit.c b/src/racket/src/jit.c index 696fd974d0..9d2d086e65 100644 --- a/src/racket/src/jit.c +++ b/src/racket/src/jit.c @@ -744,7 +744,7 @@ static void emit_indentation(mz_jit_state *jitter) #ifdef MZ_USE_PLACES -static mzrt_mutex *jit_lock; +THREAD_LOCAL_DECL(static mzrt_mutex *jit_lock); THREAD_LOCAL_DECL(static int in_jit_critical_section); static void BEGIN_JIT_CRITICAL_SECTION()