void sgen_bridge_processing_finish (int generation) { unsigned long step_8; SGEN_TV_DECLARE (atv); SGEN_TV_DECLARE (btv); bridge_processor.processing_build_callback_data (generation); if (compare_bridge_processors ()) compare_to_bridge_processor.processing_build_callback_data (generation); if (bridge_processor.num_sccs == 0) { g_assert (bridge_processor.num_xrefs == 0); goto after_callback; } bridge_callbacks.cross_references (bridge_processor.num_sccs, bridge_processor.api_sccs, bridge_processor.num_xrefs, bridge_processor.api_xrefs); if (compare_bridge_processors ()) sgen_compare_bridge_processor_results (&bridge_processor, &compare_to_bridge_processor); SGEN_TV_GETTIME (btv); null_weak_links_to_dead_objects (&bridge_processor, generation); free_callback_data (&bridge_processor); if (compare_bridge_processors ()) free_callback_data (&compare_to_bridge_processor); SGEN_TV_GETTIME (atv); step_8 = SGEN_TV_ELAPSED (btv, atv); after_callback: bridge_processor.processing_after_callback (generation); if (compare_bridge_processors ()) compare_to_bridge_processor.processing_after_callback (generation); bridge_processing_in_progress = FALSE; }
static void ms_wait_for_sweep_done (void) { SGEN_TV_DECLARE (atv); SGEN_TV_DECLARE (btv); int result; if (!concurrent_sweep) return; if (!ms_sweep_in_progress) return; SGEN_TV_GETTIME (atv); while ((result = MONO_SEM_WAIT (&ms_sweep_done_semaphore)) != 0) { if (errno != EINTR) g_error ("MONO_SEM_WAIT"); } SGEN_TV_GETTIME (btv); stat_time_wait_for_sweep += SGEN_TV_ELAPSED_MS (atv, btv); g_assert (ms_sweep_in_progress); ms_sweep_in_progress = FALSE; }