void mono_profiler_shutdown (void) { ProfilerDesc *prof; for (prof = prof_list; prof; prof = prof->next) { if (prof->shutdown_callback) prof->shutdown_callback (prof->profiler); } mono_profiler_set_events (0); }
/* the entry point */ void mono_profiler_startup (const char *desc) { iJIT_IsProfilingActiveFlags flags = iJIT_IsProfilingActive(); if (flags == iJIT_SAMPLING_ON) { mono_profiler_install (NULL, codeanalyst_shutdown); mono_profiler_install_jit_end (method_jit_result); mono_profiler_set_events (MONO_PROFILE_JIT_COMPILATION); } }
/* the entry point */ void mono_profiler_startup (const char *desc) { MonoProfiler *prof = g_new0 (MonoProfiler, 1); mono_profiler_install (prof, sample_shutdown); mono_profiler_install_jit_end (mop_jit_end); mono_profiler_set_events (MONO_PROFILE_JIT_COMPILATION); ldscript = fopen ("ldscript", "w"); assm = fopen ("jit.s", "w"); }
/* the entry point */ void mono_profiler_startup (const char *desc) { MonoProfiler *prof; prof = g_new0 (MonoProfiler, 1); prof->images = g_hash_table_new (NULL, NULL); mono_profiler_install (prof, prof_shutdown); mono_profiler_install_jit_compile (prof_jit_enter, prof_jit_leave); mono_profiler_set_events (MONO_PROFILE_JIT_COMPILATION); }
void mono_profiler_startup (const char *desc) { MonoProfiler *prof = g_new0 (MonoProfiler, 1); mono_os_mutex_init (&mismatched_files_section); prof->mismatched_files_hash = g_hash_table_new (mismatched_files_guint32_hash, mismatched_files_guint32_equal); prof->saved_strings_hash = g_hash_table_new (NULL, NULL); prof->string_locations_hash = g_hash_table_new (mismatched_files_guint32_hash, mismatched_files_guint32_equal); mono_profiler_install (prof, profiler_shutdown); mono_profiler_install_runtime_initialized (runtime_initialized_cb); mono_profiler_install_iomap (mono_portability_iomap_event); mono_profiler_install_allocation (mono_portability_remember_alloc); mono_profiler_set_events ((MonoProfileFlags)(MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_IOMAP_EVENTS)); }
void mono_profiler_startup (const char *desc) { MonoProfiler* p = g_new0 (MonoProfiler, 1); InitializeCriticalSection (&hp_lock); g_assert (! strncmp (desc, "desc-heap", 9)); p->klass_to_table_idx = g_hash_table_new (NULL, NULL); p->klass_table = g_ptr_array_new (); p->t_zero = GetTickCount (); mono_profiler_install_allocation (write_allocation); mono_profiler_install_gc (prof_gc_collection, prof_heap_resize); mono_profiler_set_events (MONO_PROFILE_ALLOCATIONS | MONO_PROFILE_GC); mono_profiler_install (p, mono_heap_prof_shutdown); }
void mono_profiler_startup (char *arg) { gchar **ptr; char *filterfile_name = NULL; gchar **args; /* Why does the runtime passes the module name to us ? */ if (strstr (arg, ":")) arg = strstr (arg, ":") + 1; else arg = NULL; args = g_strsplit (arg ? arg : "", ",", -1); MonoProfiler *prof = g_new0 (MonoProfiler, 1); prof->methods = g_hash_table_new (NULL, NULL); prof->classes = g_hash_table_new (NULL, NULL); prof->assemblies = g_hash_table_new (NULL, NULL); for (ptr = args; ptr && *ptr; ptr++) { const char *arg = *ptr; gchar *message; if (strncmp (arg, "filterfile=", 11) == 0) filterfile_name = g_strdup (arg + 11); else if (strncmp (arg, "outfile=", 8) == 0) prof->outfile_name = g_strdup (arg + 8); else if (strncmp (arg, "-", 1) == 0) { add_filter (prof, arg); } else if (strncmp (arg, "+", 1) == 0) { add_filter (prof, arg); } else { message = g_strdup_printf ("Unknown argument '%s'.", arg); fprintf (stderr, "monocov | Error while processing arguments: %s\n", message); g_free (message); } } g_strfreev (args); if (filterfile_name) { FILE *filterfile; filterfile = fopen (filterfile_name, "r"); if (!filterfile) { fprintf (stderr, "coverage.c: Unable to open filter file '%s'.\n", filterfile_name); exit (1); } while (!feof (filterfile)) { char buf [2048]; fgets (buf, 2048, filterfile); buf [sizeof (buf) - 1] = '\0'; if ((buf [0] == '#') || (buf [0] == '\0')) continue; if (buf [strlen (buf) - 1] == '\n') buf [strlen (buf) - 1] = '\0'; add_filter (prof, buf); } fclose (filterfile); } mono_profiler_install (prof, coverage_shutdown); mono_profiler_set_events (MONO_PROFILE_INS_COVERAGE | MONO_PROFILE_ASSEMBLY_EVENTS); mono_profiler_install_coverage_filter (collect_coverage_for); mono_profiler_install_assembly (NULL, assembly_load, NULL, NULL); /* we don't deal with unloading, so disable it for now */ setenv ("MONO_NO_UNLOAD", "1", 1); }
static void install_jit_profile () { MonoProfiler *prof = new MonoProfiler; mono_profiler_install (prof, mono_shutdown); mono_profiler_install_jit_end (profile_jit_result); mono_profiler_set_events (MONO_PROFILE_JIT_COMPILATION); }