Beispiel #1
0
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);
}
Beispiel #2
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);
	}
}
Beispiel #3
0
/* 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");
}
Beispiel #4
0
/* 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);
}
Beispiel #5
0
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));
}
Beispiel #6
0
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);
}
Beispiel #7
0
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);
}
Beispiel #8
0
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);
}