static gboolean gc_disabled = FALSE;
+#define mono_finalizer_lock() EnterCriticalSection (&finalizer_mutex)
+#define mono_finalizer_unlock() LeaveCriticalSection (&finalizer_mutex)
static CRITICAL_SECTION finalizer_mutex;
static GSList *domains_to_finalize= NULL;
req->domain = domain;
req->done_event = done_event;
- EnterCriticalSection (&finalizer_mutex);
+ mono_finalizer_lock ();
domains_to_finalize = g_slist_append (domains_to_finalize, req);
- LeaveCriticalSection (&finalizer_mutex);
+ mono_finalizer_unlock ();
/* Tell the finalizer thread to finalize this appdomain */
finalize_notify ();
#else
#endif
}
-
+#define mono_allocator_lock() EnterCriticalSection (&allocator_section)
+#define mono_allocator_unlock() LeaveCriticalSection (&allocator_section)
static CRITICAL_SECTION allocator_section;
static CRITICAL_SECTION handle_section;
WaitForSingleObjectEx (finalizer_event, INFINITE, TRUE);
if (domains_to_finalize) {
- EnterCriticalSection (&finalizer_mutex);
+ mono_finalizer_lock ();
if (domains_to_finalize) {
DomainFinalizationReq *req = domains_to_finalize->data;
domains_to_finalize = g_slist_remove (domains_to_finalize, req);
- LeaveCriticalSection (&finalizer_mutex);
+ mono_finalizer_unlock ();
finalize_domain_objects (req);
}
else
- LeaveCriticalSection (&finalizer_mutex);
+ mono_finalizer_unlock ();
}
#ifdef DEBUG
static void mono_gc_lock (void)
{
- EnterCriticalSection (&allocator_section);
+ mono_allocator_lock ();
}
static void mono_gc_unlock (void)
{
- LeaveCriticalSection (&allocator_section);
+ mono_allocator_unlock ();
}
static GCThreadFunctions mono_gc_thread_vtable = {