probe gc__begin (int generation);
probe gc__end (int generation);
+ probe gc__world__stop__begin ();
+ probe gc__world__stop__end ();
+ probe gc__world__restart__begin ();
+ probe gc__world__restart__end ();
+
probe gc__heap__alloc (uintptr_t addr, uintptr_t len);
probe gc__heap__free (uintptr_t addr, uintptr_t len);
sgen_process_togglerefs ();
mono_profiler_gc_event (MONO_GC_EVENT_PRE_STOP_WORLD, generation);
+ MONO_GC_WORLD_STOP_BEGIN ();
acquire_gc_locks ();
update_current_thread_stack (&count);
SGEN_LOG (3, "world stopped %d thread(s)", count);
mono_profiler_gc_event (MONO_GC_EVENT_POST_STOP_WORLD, generation);
+ MONO_GC_WORLD_STOP_END ();
sgen_memgov_collection_start (generation);
if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
sgen_gc_event_moves ();
mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation);
+ MONO_GC_WORLD_RESTART_BEGIN ();
FOREACH_THREAD (info) {
info->stack_start = NULL;
#ifdef USE_MONO_CTX
max_pause_usec = MAX (usec, max_pause_usec);
SGEN_LOG (2, "restarted %d thread(s) (pause time: %d usec, max: %d)", count, (int)usec, (int)max_pause_usec);
mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD, generation);
+ MONO_GC_WORLD_RESTART_END ();
bridge_process (generation);