X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsgen-mono.c;h=4fc0e362d4eb90558c06f8c9f575e4128189c66a;hb=a984f20e232d863a9d3b7848023f78816aa282e7;hp=ac977c0e5902e4133b05074a7edab4b20680a20a;hpb=ef2f4f2de28bc4db350ff4cff0d1488babaf2db2;p=mono.git diff --git a/mono/metadata/sgen-mono.c b/mono/metadata/sgen-mono.c index ac977c0e590..4fc0e362d4e 100644 --- a/mono/metadata/sgen-mono.c +++ b/mono/metadata/sgen-mono.c @@ -593,7 +593,7 @@ typedef struct { static EphemeronLinkNode *ephemeron_list; /* LOCKING: requires that the GC lock is held */ -static void +static MONO_PERMIT (need (sgen_gc_locked)) void null_ephemerons_for_domain (MonoDomain *domain) { EphemeronLinkNode *current = ephemeron_list, *prev = NULL; @@ -2261,8 +2261,7 @@ sgen_client_thread_detach_with_lock (SgenThreadInfo *p) tid = mono_thread_info_get_tid (p); - if (p->client_info.info.runtime_thread) - mono_threads_add_joinable_thread ((gpointer)tid); + mono_threads_add_joinable_runtime_thread (&p->client_info.info); if (mono_gc_get_gc_callbacks ()->thread_detach_func) { mono_gc_get_gc_callbacks ()->thread_detach_func (p->client_info.runtime_data); @@ -2362,6 +2361,10 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p { scan_area_arg_start = start_nursery; scan_area_arg_end = end_nursery; +#ifdef HOST_WASM + //Under WASM we don't scan thread stacks and we can't trust the values we find there either. + return; +#endif FOREACH_THREAD (info) { int skip_reason = 0;