X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fsgen-stw.c;h=a8a1b9bf32c9f8437d6772e3031ddf03ea1e3625;hb=HEAD;hp=be999592a6ae7831e56f709e9520a09126b57899;hpb=77a8ed1b39af8caa6da04163605ec40283942062;p=mono.git diff --git a/mono/metadata/sgen-stw.c b/mono/metadata/sgen-stw.c index be999592a6a..a8a1b9bf32c 100644 --- a/mono/metadata/sgen-stw.c +++ b/mono/metadata/sgen-stw.c @@ -70,6 +70,8 @@ update_current_thread_stack (void *start) #if !defined(MONO_CROSS_COMPILE) && MONO_ARCH_HAS_MONO_CONTEXT MONO_CONTEXT_GET_CURRENT (info->client_info.ctx); +#elif defined (HOST_WASM) + //nothing #else g_error ("Sgen STW requires a working mono-context"); #endif @@ -104,11 +106,11 @@ sgen_client_stop_world (int generation) { TV_DECLARE (end_handshake); - mono_profiler_gc_event (MONO_GC_EVENT_PRE_STOP_WORLD, generation); + MONO_PROFILER_RAISE (gc_event, (MONO_GC_EVENT_PRE_STOP_WORLD, generation)); acquire_gc_locks (); - mono_profiler_gc_event (MONO_GC_EVENT_PRE_STOP_WORLD_LOCKED, generation); + MONO_PROFILER_RAISE (gc_event, (MONO_GC_EVENT_PRE_STOP_WORLD_LOCKED, generation)); /* We start to scan after locks are taking, this ensures we won't be interrupted. */ sgen_process_togglerefs (); @@ -123,7 +125,7 @@ sgen_client_stop_world (int generation) SGEN_LOG (3, "world stopped"); - mono_profiler_gc_event (MONO_GC_EVENT_POST_STOP_WORLD, generation); + MONO_PROFILER_RAISE (gc_event, (MONO_GC_EVENT_POST_STOP_WORLD, generation)); TV_GETTIME (end_handshake); time_stop_world += TV_ELAPSED (stop_world_time, end_handshake); @@ -143,10 +145,10 @@ sgen_client_restart_world (int generation, gint64 *stw_time) /* notify the profiler of the leftovers */ /* FIXME this is the wrong spot at we can STW for non collection reasons. */ - if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES)) + if (MONO_PROFILER_ENABLED (gc_moves)) mono_sgen_gc_event_moves (); - mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation); + MONO_PROFILER_RAISE (gc_event, (MONO_GC_EVENT_PRE_START_WORLD, generation)); FOREACH_THREAD (info) { info->client_info.stack_start = NULL; @@ -165,7 +167,7 @@ sgen_client_restart_world (int generation, gint64 *stw_time) SGEN_LOG (2, "restarted (pause time: %d usec, max: %d)", (int)usec, (int)max_pause_usec); - mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD, generation); + MONO_PROFILER_RAISE (gc_event, (MONO_GC_EVENT_POST_START_WORLD, generation)); /* * We must release the thread info suspend lock after doing @@ -179,7 +181,7 @@ sgen_client_restart_world (int generation, gint64 *stw_time) */ release_gc_locks (); - mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD_UNLOCKED, generation); + MONO_PROFILER_RAISE (gc_event, (MONO_GC_EVENT_POST_START_WORLD_UNLOCKED, generation)); *stw_time = usec; } @@ -230,8 +232,7 @@ sgen_is_thread_in_current_stw (SgenThreadInfo *info, int *reason) We can't suspend the workers that will do all the heavy lifting. FIXME Use some state bit in SgenThreadInfo for this. */ - if (sgen_thread_pool_is_thread_pool_thread (major_collector.get_sweep_pool (), mono_thread_info_get_tid (info)) || - sgen_workers_is_worker_thread (mono_thread_info_get_tid (info))) { + if (sgen_thread_pool_is_thread_pool_thread (mono_thread_info_get_tid (info))) { if (reason) *reason = 4; return FALSE;