X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsgen-mono.c;h=4fc0e362d4eb90558c06f8c9f575e4128189c66a;hb=a984f20e232d863a9d3b7848023f78816aa282e7;hp=4cd30493fff80524e3b60b368623d7e2d35563c7;hpb=098f6e8aa8ead1a80b751fa34e5e049439c2f0c3;p=mono.git diff --git a/mono/metadata/sgen-mono.c b/mono/metadata/sgen-mono.c index 4cd30493fff..4fc0e362d4e 100644 --- a/mono/metadata/sgen-mono.c +++ b/mono/metadata/sgen-mono.c @@ -398,6 +398,7 @@ get_array_fill_vtable (void) klass.rank = 1; klass.instance_size = MONO_SIZEOF_MONO_ARRAY; klass.sizes.element_size = 1; + klass.size_inited = 1; klass.name = "array_filler_type"; vtable->klass = &klass; @@ -592,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; @@ -2260,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); @@ -2361,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;