return NULL;
}
+void
+mono_gc_set_current_thread_appdomain (MonoDomain *domain)
+{
+}
+
gboolean
mono_gc_precise_stack_mark_enabled (void)
{
#define SET_APPDOMAIN(x) do { \
MONO_FAST_TLS_SET (tls_appdomain,x); \
mono_native_tls_set_value (appdomain_thread_id, x); \
+ mono_gc_set_current_thread_appdomain (x); \
} while (FALSE)
#else /* !MONO_HAVE_FAST_TLS */
#define GET_APPDOMAIN() ((MonoDomain *)mono_native_tls_get_value (appdomain_thread_id))
-#define SET_APPDOMAIN(x) mono_native_tls_set_value (appdomain_thread_id, x);
+#define SET_APPDOMAIN(x) do { \
+ mono_native_tls_set_value (appdomain_thread_id, x); \
+ mono_gc_set_current_thread_appdomain (x); \
+ } while (FALSE)
#endif
void* mono_gc_get_nursery (int *shift_bits, size_t *size) MONO_INTERNAL;
+void mono_gc_set_current_thread_appdomain (MonoDomain *domain) MONO_INTERNAL;
+
/*
* Return whenever GC is disabled
*/
return NULL;
}
+void
+mono_gc_set_current_thread_appdomain (MonoDomain *domain)
+{
+}
+
gboolean
mono_gc_precise_stack_mark_enabled (void)
{
return nursery_start;
}
+void
+mono_gc_set_current_thread_appdomain (MonoDomain *domain)
+{
+ SgenThreadInfo *info = mono_thread_info_current ();
+ g_assert (info);
+ info->stopped_domain = domain;
+}
+
gboolean
mono_gc_precise_stack_mark_enabled (void)
{
CloseHandle (handle);
- info->stopped_domain = NULL; /* FIXME: implement! */
info->stopped_ip = (gpointer)context.Eip;
info->stack_start = (char*)context.Esp - REDZONE_SIZE;