probe gc__begin (int generation);
probe gc__end (int generation);
+ probe gc__concurrent__start__begin (int generation);
+ probe gc__concurrent__start__end (int generation);
+ probe gc__concurrent__update__finish__begin (int generation);
+ probe gc__concurrent__update__end (int generation);
+ probe gc__concurrent__finish__end (int generation);
+
+ probe gc__sweep__begin (int generation);
+ probe gc__sweep__end (int generation);
+
probe gc__world__stop__begin ();
probe gc__world__stop__end ();
probe gc__world__restart__begin ();
reset_heap_boundaries ();
sgen_update_heap_boundaries ((mword)sgen_get_nursery_start (), (mword)sgen_get_nursery_end ());
+ MONO_GC_SWEEP_BEGIN (GENERATION_OLD);
+
/* sweep the big objects list */
prevbo = NULL;
for (bigobj = los_object_list; bigobj;) {
major_collector.sweep ();
+ MONO_GC_SWEEP_END (GENERATION_OLD);
+
TV_GETTIME (btv);
time_major_sweep += TV_ELAPSED (atv, btv);
static void
major_start_concurrent_collection (const char *reason)
{
+ MONO_GC_CONCURRENT_START_BEGIN (GENERATION_OLD);
+
// FIXME: store reason and pass it when finishing
major_start_collection (NULL);
sgen_workers_wait_for_jobs ();
+ MONO_GC_CONCURRENT_START_END (GENERATION_OLD);
+
current_collection_generation = -1;
}
static gboolean
major_update_or_finish_concurrent_collection (void)
{
+ MONO_GC_CONCURRENT_UPDATE_FINISH_BEGIN (GENERATION_OLD);
+
major_collector.update_cardtable_mod_union ();
sgen_los_update_cardtable_mod_union ();
if (!sgen_workers_all_done ()) {
+ MONO_GC_CONCURRENT_UPDATE_END (GENERATION_OLD);
+
g_print ("workers not done\n");
return FALSE;
}
current_collection_generation = GENERATION_OLD;
major_finish_collection ("finishing", -1, TRUE);
+
+ MONO_GC_CONCURRENT_FINISH_END (GENERATION_OLD);
+
current_collection_generation = -1;
if (whole_heap_check_before_collection)
#define binary_protocol_is_enabled() FALSE
#define binary_protocol_flush_buffers(force)
-#define binary_protocol_collection(index, generation)
+#define binary_protocol_collection_begin(index, generation)
+#define binary_protocol_collection_end(index, generation)
#define binary_protocol_alloc(obj, vtable, size)
#define binary_protocol_alloc_pinned(obj, vtable, size)
#define binary_protocol_alloc_degraded(obj, vtable, size)