[jit] Use the mono_mutex types/functions of CriticalSection's.
authorZoltan Varga <vargaz@gmail.com>
Tue, 5 Aug 2014 21:21:14 +0000 (23:21 +0200)
committerZoltan Varga <vargaz@gmail.com>
Tue, 5 Aug 2014 21:21:14 +0000 (23:21 +0200)
13 files changed:
mono/mini/aot-compiler.c
mono/mini/aot-runtime.c
mono/mini/debugger-agent.c
mono/mini/mini-amd64.c
mono/mini/mini-arm.c
mono/mini/mini-mips.c
mono/mini/mini-ppc.c
mono/mini/mini-s390x.c
mono/mini/mini-trampolines.c
mono/mini/mini-x86.c
mono/mini/mini.c
mono/mini/tasklets.c
mono/mini/unwind.c

index aa04ced89dd20f011d9fa71594f5bdbfd6910623..8f1ea81da029a484754f542258733c62083b66f8 100644 (file)
@@ -206,7 +206,7 @@ typedef struct MonoAotCompile {
        MonoAotStats stats;
        int method_index;
        char *static_linking_symbol;
-       CRITICAL_SECTION mutex;
+       mono_mutex_t mutex;
        gboolean use_bin_writer;
        gboolean gas_line_numbers;
        MonoImageWriter *w;
@@ -254,8 +254,8 @@ typedef struct {
        gboolean jit_used, llvm_used;
 } MonoPltEntry;
 
-#define mono_acfg_lock(acfg) EnterCriticalSection (&((acfg)->mutex))
-#define mono_acfg_unlock(acfg) LeaveCriticalSection (&((acfg)->mutex))
+#define mono_acfg_lock(acfg) mono_mutex_lock (&((acfg)->mutex))
+#define mono_acfg_unlock(acfg) mono_mutex_unlock (&((acfg)->mutex))
 
 /* This points to the current acfg in LLVM mode */
 static MonoAotCompile *llvm_acfg;
@@ -8708,7 +8708,7 @@ acfg_create (MonoAssembly *ass, guint32 opts)
        acfg->klass_blob_hash = g_hash_table_new (NULL, NULL);
        acfg->method_blob_hash = g_hash_table_new (NULL, NULL);
        acfg->plt_entry_debug_sym_cache = g_hash_table_new (g_str_hash, g_str_equal);
-       InitializeCriticalSection (&acfg->mutex);
+       mono_mutex_init_recursive (&acfg->mutex);
 
        return acfg;
 }
index c140ec6e354229a054147083fe8815d2856dc711..bfbc670fa7ac1db2716dd03e20b2d64250f04faf 100644 (file)
@@ -139,7 +139,7 @@ typedef struct MonoAotModule {
        MonoDl *sofile;
 
        JitInfoMap *async_jit_info_table;
-       CRITICAL_SECTION mutex;
+       mono_mutex_t mutex;
 } MonoAotModule;
 
 typedef struct {
@@ -149,9 +149,9 @@ typedef struct {
 } TrampolinePage;
 
 static GHashTable *aot_modules;
-#define mono_aot_lock() EnterCriticalSection (&aot_mutex)
-#define mono_aot_unlock() LeaveCriticalSection (&aot_mutex)
-static CRITICAL_SECTION aot_mutex;
+#define mono_aot_lock() mono_mutex_lock (&aot_mutex)
+#define mono_aot_unlock() mono_mutex_unlock (&aot_mutex)
+static mono_mutex_t aot_mutex;
 
 /* 
  * Maps assembly names to the mono_aot_module_<NAME>_info symbols in the
@@ -199,9 +199,9 @@ static GHashTable *aot_jit_icall_hash;
 #define USE_PAGE_TRAMPOLINES 0
 #endif
 
-#define mono_aot_page_lock() EnterCriticalSection (&aot_page_mutex)
-#define mono_aot_page_unlock() LeaveCriticalSection (&aot_page_mutex)
-static CRITICAL_SECTION aot_page_mutex;
+#define mono_aot_page_lock() mono_mutex_lock (&aot_page_mutex)
+#define mono_aot_page_unlock() mono_mutex_unlock (&aot_page_mutex)
+static mono_mutex_t aot_page_mutex;
 
 static void
 init_plt (MonoAotModule *info);
@@ -213,13 +213,13 @@ init_plt (MonoAotModule *info);
 static inline void
 amodule_lock (MonoAotModule *amodule)
 {
-       EnterCriticalSection (&amodule->mutex);
+       mono_mutex_lock (&amodule->mutex);
 }
 
 static inline void
 amodule_unlock (MonoAotModule *amodule)
 {
-       LeaveCriticalSection (&amodule->mutex);
+       mono_mutex_unlock (&amodule->mutex);
 }
 
 /*
@@ -1702,7 +1702,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        amodule->method_to_code = g_hash_table_new (mono_aligned_addr_hash, NULL);
        amodule->blob = blob;
 
-       InitializeCriticalSection (&amodule->mutex);
+       mono_mutex_init_recursive (&amodule->mutex);
 
        /* Read image table */
        {
@@ -1933,8 +1933,8 @@ mono_aot_register_module (gpointer *aot_info)
 void
 mono_aot_init (void)
 {
-       InitializeCriticalSection (&aot_mutex);
-       InitializeCriticalSection (&aot_page_mutex);
+       mono_mutex_init_recursive (&aot_mutex);
+       mono_mutex_init_recursive (&aot_page_mutex);
        aot_modules = g_hash_table_new (NULL, NULL);
 
 #ifndef __native_client__
index d902826ab2807876bb0f589ad1b55726178a92ac..b6b9264957d7ffb41373e4db65fb05896c364ff4 100644 (file)
@@ -723,9 +723,9 @@ static gboolean buffer_replies;
 static ReplyPacket reply_packets [128];
 int nreply_packets;
 
-#define dbg_lock() EnterCriticalSection (&debug_mutex)
-#define dbg_unlock() LeaveCriticalSection (&debug_mutex)
-static CRITICAL_SECTION debug_mutex;
+#define dbg_lock() mono_mutex_lock (&debug_mutex)
+#define dbg_unlock() mono_mutex_unlock (&debug_mutex)
+static mono_mutex_t debug_mutex;
 
 static void transport_init (void);
 static void transport_connect (const char *address);
@@ -961,7 +961,7 @@ mono_debugger_agent_parse_options (char *options)
 void
 mono_debugger_agent_init (void)
 {
-       InitializeCriticalSection (&debug_mutex);
+       mono_mutex_init_recursive (&debug_mutex);
 
        if (!agent_config.enabled)
                return;
index a09d3d79064ddfde150db0a3557ccb684057d273..e56fbb9034a1f347e03ff6568405a4a234839511 100644 (file)
@@ -60,9 +60,9 @@ static gboolean optimize_for_xen = TRUE;
 #endif
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
-#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
-static CRITICAL_SECTION mini_arch_mutex;
+#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+static mono_mutex_t mini_arch_mutex;
 
 MonoBreakpointInfo
 mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
@@ -1233,7 +1233,7 @@ mono_arch_init (void)
 {
        int flags;
 
-       InitializeCriticalSection (&mini_arch_mutex);
+       mono_mutex_init_recursive (&mini_arch_mutex);
 #if defined(__native_client_codegen__)
        mono_native_tls_alloc (&nacl_instruction_depth, NULL);
        mono_native_tls_set_value (nacl_instruction_depth, (gpointer)0);
@@ -1271,7 +1271,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       DeleteCriticalSection (&mini_arch_mutex);
+       mono_mutex_destroy (&mini_arch_mutex);
 #if defined(__native_client_codegen__)
        mono_native_tls_free (nacl_instruction_depth);
        mono_native_tls_free (nacl_rex_tag);
index 7ae2f98a7ba5ad3049488f2d7ee482bbb2a34325..d93cd923e814946730bcf703fbe750241bb87bbc 100644 (file)
@@ -88,9 +88,9 @@ void sys_icache_invalidate (void *start, size_t len);
 #endif
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
-#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
-static CRITICAL_SECTION mini_arch_mutex;
+#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+static mono_mutex_t mini_arch_mutex;
 
 static gboolean v5_supported = FALSE;
 static gboolean v6_supported = FALSE;
@@ -891,7 +891,7 @@ mono_arch_init (void)
 {
        const char *cpu_arch;
 
-       InitializeCriticalSection (&mini_arch_mutex);
+       mono_mutex_init_recursive (&mini_arch_mutex);
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        if (mini_get_debug_options ()->soft_breakpoints) {
                single_step_func_wrapper = create_function_wrapper (debugger_agent_single_step_from_context);
index cc32f05f72828cf9f1a6a06fcded6d33be8a6bfe..a16c228edaf626fc0ffd4d92dbe52bf7401685dd 100644 (file)
@@ -57,9 +57,9 @@ enum {
 };
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
-#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
-static CRITICAL_SECTION mini_arch_mutex;
+#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+static mono_mutex_t mini_arch_mutex;
 
 int mono_exc_esp_offset = 0;
 static int tls_mode = TLS_MODE_DETECT;
@@ -701,7 +701,7 @@ mono_arch_cpu_init (void)
 void
 mono_arch_init (void)
 {
-       InitializeCriticalSection (&mini_arch_mutex);
+       mono_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -714,7 +714,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       DeleteCriticalSection (&mini_arch_mutex);
+       mono_mutex_destroy (&mini_arch_mutex);
 }
 
 /*
index d3ebe5de2aaa8b786a9fa893aec1b7834216f458..d27f4ad6028ee7141aa2e8f06c4519510df368b2 100644 (file)
@@ -62,9 +62,9 @@ enum {
 #define BREAKPOINT_SIZE (PPC_LOAD_SEQUENCE_LENGTH + 4)
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
-#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
-static CRITICAL_SECTION mini_arch_mutex;
+#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+static mono_mutex_t mini_arch_mutex;
 
 int mono_exc_esp_offset = 0;
 static int tls_mode = TLS_MODE_DETECT;
@@ -614,7 +614,7 @@ mono_arch_init (void)
        if (mono_cpu_count () > 1)
                cpu_hw_caps |= PPC_SMP_CAPABLE;
 
-       InitializeCriticalSection (&mini_arch_mutex);
+       mono_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -629,7 +629,7 @@ mono_arch_init (void)
 void
 mono_arch_cleanup (void)
 {
-       DeleteCriticalSection (&mini_arch_mutex);
+       mono_mutex_destroy (&mini_arch_mutex);
 }
 
 /*
index 96c054d4c5793eaab0ffc94a5d3305d0e2a94d84..0318e12c53683725440bb1ff4e34c7d9be09e551 100644 (file)
@@ -246,8 +246,8 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #define JUMP_SIZE      6
 #define ENABLE_WRONG_METHOD_CHECK 0
 
-#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
-#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
+#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
 
 /*========================= End of Defines =========================*/
 
@@ -410,7 +410,7 @@ static gpointer bp_trigger_page;
 
 breakpoint_t breakpointCode;
 
-static CRITICAL_SECTION mini_arch_mutex;
+static mono_mutex_t mini_arch_mutex;
 
 /*====================== End of Global Variables ===================*/
 
@@ -1260,7 +1260,7 @@ mono_arch_init (void)
 {
        guint8 *code;
 
-       InitializeCriticalSection (&mini_arch_mutex);
+       mono_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
@@ -1291,7 +1291,7 @@ mono_arch_cleanup (void)
                mono_vfree (ss_trigger_page, mono_pagesize ());
        if (bp_trigger_page)
                mono_vfree (bp_trigger_page, mono_pagesize ());
-       DeleteCriticalSection (&mini_arch_mutex);
+       mono_mutex_destroy (&mini_arch_mutex);
 }
 
 /*========================= End of Function ========================*/
index 5de69085b60b2b74f26e9fc62774bf7e525d6a40..95798a2350c19156b310fc8dce0a2c47c49cb196 100644 (file)
@@ -27,9 +27,9 @@ static GHashTable *rgctx_lazy_fetch_trampoline_hash;
 static GHashTable *rgctx_lazy_fetch_trampoline_hash_addr;
 static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgctx_trampolines;
 
-#define mono_trampolines_lock() EnterCriticalSection (&trampolines_mutex)
-#define mono_trampolines_unlock() LeaveCriticalSection (&trampolines_mutex)
-static CRITICAL_SECTION trampolines_mutex;
+#define mono_trampolines_lock() mono_mutex_lock (&trampolines_mutex)
+#define mono_trampolines_unlock() mono_mutex_unlock (&trampolines_mutex)
+static mono_mutex_t trampolines_mutex;
 
 #ifdef MONO_ARCH_GSHARED_SUPPORTED
 
@@ -1290,7 +1290,7 @@ create_trampoline_code (MonoTrampolineType tramp_type)
 void
 mono_trampolines_init (void)
 {
-       InitializeCriticalSection (&trampolines_mutex);
+       mono_mutex_init_recursive (&trampolines_mutex);
 
        if (mono_aot_only)
                return;
@@ -1335,7 +1335,7 @@ mono_trampolines_cleanup (void)
        if (rgctx_lazy_fetch_trampoline_hash_addr)
                g_hash_table_destroy (rgctx_lazy_fetch_trampoline_hash_addr);
 
-       DeleteCriticalSection (&trampolines_mutex);
+       mono_mutex_destroy (&trampolines_mutex);
 }
 
 guint8 *
index 08637dbb8e1cad77848ae3c430340771b13ebf01..301c3856fe47667927deb15722321c23307af1a7 100644 (file)
@@ -45,9 +45,9 @@ static gboolean optimize_for_xen = TRUE;
 #endif
 
 /* This mutex protects architecture specific caches */
-#define mono_mini_arch_lock() EnterCriticalSection (&mini_arch_mutex)
-#define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
-static CRITICAL_SECTION mini_arch_mutex;
+#define mono_mini_arch_lock() mono_mutex_lock (&mini_arch_mutex)
+#define mono_mini_arch_unlock() mono_mutex_unlock (&mini_arch_mutex)
+static mono_mutex_t mini_arch_mutex;
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 
@@ -758,7 +758,7 @@ mono_arch_cpu_init (void)
 void
 mono_arch_init (void)
 {
-       InitializeCriticalSection (&mini_arch_mutex);
+       mono_mutex_init_recursive (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ);
        bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -781,7 +781,7 @@ mono_arch_cleanup (void)
                mono_vfree (ss_trigger_page, mono_pagesize ());
        if (bp_trigger_page)
                mono_vfree (bp_trigger_page, mono_pagesize ());
-       DeleteCriticalSection (&mini_arch_mutex);
+       mono_mutex_destroy (&mini_arch_mutex);
 }
 
 /*
index dd31c02d7a6db4954b9a979ebde01717f648748a..464d8a4521be6944f04476d5b992ad2f095ab50c 100644 (file)
@@ -111,9 +111,9 @@ static int mini_verbose = 0;
  */
 gboolean mono_use_llvm = FALSE;
 
-#define mono_jit_lock() EnterCriticalSection (&jit_mutex)
-#define mono_jit_unlock() LeaveCriticalSection (&jit_mutex)
-static CRITICAL_SECTION jit_mutex;
+#define mono_jit_lock() mono_mutex_lock (&jit_mutex)
+#define mono_jit_unlock() mono_mutex_unlock (&jit_mutex)
+static mono_mutex_t jit_mutex;
 
 static MonoCodeManager *global_codeman;
 
@@ -7236,7 +7236,7 @@ mini_init (const char *filename, const char *runtime_version)
        }
 #endif
 
-       InitializeCriticalSection (&jit_mutex);
+       mono_mutex_init_recursive (&jit_mutex);
 
        mono_cross_helpers_run ();
 
@@ -7807,7 +7807,7 @@ mini_cleanup (MonoDomain *domain)
 
        mono_native_tls_free (mono_jit_tls_id);
 
-       DeleteCriticalSection (&jit_mutex);
+       mono_mutex_destroy (&jit_mutex);
 
        DeleteCriticalSection (&mono_delegate_section);
 
@@ -8007,9 +8007,9 @@ typedef struct MonoJumpTableChunk {
 } MonoJumpTableChunk;
 
 static MonoJumpTableChunk* g_jumptable;
-#define mono_jumptable_lock() EnterCriticalSection (&jumptable_mutex)
-#define mono_jumptable_unlock() LeaveCriticalSection (&jumptable_mutex)
-static CRITICAL_SECTION jumptable_mutex;
+#define mono_jumptable_lock() mono_mutex_lock (&jumptable_mutex)
+#define mono_jumptable_unlock() mono_mutex_unlock (&jumptable_mutex)
+static mono_mutex_t jumptable_mutex;
 
 static  MonoJumpTableChunk*
 mono_create_jumptable_chunk (guint32 max_entries)
@@ -8024,7 +8024,7 @@ void
 mono_jumptable_init (void)
 {
        if (g_jumptable == NULL) {
-               InitializeCriticalSection (&jumptable_mutex);
+               mono_mutex_init_recursive (&jumptable_mutex);
                g_jumptable = mono_create_jumptable_chunk (DEFAULT_JUMPTABLE_CHUNK_ELEMENTS);
        }
 }
@@ -8080,7 +8080,7 @@ mono_jumptable_cleanup (void)
                        current = prev;
                }
                g_jumptable = NULL;
-               DeleteCriticalSection (&jumptable_mutex);
+               mono_mutex_destroy (&jumptable_mutex);
        }
 }
 
index 9ab067a76b57cbd9ae0c4e67ebbff09c699df07d..28e7644d29cf3ab2f77cb4d1acd16e612f454dc2 100644 (file)
@@ -9,9 +9,9 @@
 
 /* keepalive_stacks could be a per-stack var to avoid locking overhead */
 static MonoGHashTable *keepalive_stacks;
-static CRITICAL_SECTION tasklets_mutex;
-#define tasklets_lock() EnterCriticalSection(&tasklets_mutex)
-#define tasklets_unlock() LeaveCriticalSection(&tasklets_mutex)
+static mono_mutex_t tasklets_mutex;
+#define tasklets_lock() mono_mutex_lock(&tasklets_mutex)
+#define tasklets_unlock() mono_mutex_unlock(&tasklets_mutex)
 
 /* LOCKING: tasklets_mutex is assumed to e taken */
 static void
@@ -146,7 +146,7 @@ continuation_restore (MonoContinuation *cont, int state)
 void
 mono_tasklets_init (void)
 {
-       InitializeCriticalSection (&tasklets_mutex);
+       mono_mutex_init_recursive (&tasklets_mutex);
 
        mono_add_internal_call ("Mono.Tasklets.Continuation::alloc", continuation_alloc);
        mono_add_internal_call ("Mono.Tasklets.Continuation::free", continuation_free);
index a993350aefd6bbc2f22b4792f563aefc00468201..ef5b44b23868b0de4f725c6ec5e4889445313a93 100644 (file)
@@ -33,7 +33,7 @@ typedef struct {
 
 #define ALIGN_TO(val,align) ((((size_t)val) + ((align) - 1)) & ~((align) - 1))
 
-static CRITICAL_SECTION unwind_mutex;
+static mono_mutex_t unwind_mutex;
 
 static MonoUnwindInfo **cached_info;
 static int cached_info_next, cached_info_size;
@@ -41,8 +41,8 @@ static GSList *cached_info_list;
 /* Statistics */
 static int unwind_info_size;
 
-#define unwind_lock() EnterCriticalSection (&unwind_mutex)
-#define unwind_unlock() LeaveCriticalSection (&unwind_mutex)
+#define unwind_lock() mono_mutex_lock (&unwind_mutex)
+#define unwind_unlock() mono_mutex_unlock (&unwind_mutex)
 
 #ifdef TARGET_AMD64
 static int map_hw_reg_to_dwarf_reg [] = { 0, 2, 1, 3, 7, 6, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
@@ -614,7 +614,7 @@ mono_unwind_frame (guint8 *unwind_info, guint32 unwind_info_len,
 void
 mono_unwind_init (void)
 {
-       InitializeCriticalSection (&unwind_mutex);
+       mono_mutex_init_recursive (&unwind_mutex);
 
        mono_counters_register ("Unwind info size", MONO_COUNTER_JIT | MONO_COUNTER_INT, &unwind_info_size);
 }
@@ -624,7 +624,7 @@ mono_unwind_cleanup (void)
 {
        int i;
 
-       DeleteCriticalSection (&unwind_mutex);
+       mono_mutex_destroy (&unwind_mutex);
 
        if (!cached_info)
                return;