X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fprofiler%2Flog.c;h=8a3790aac248ed44baa2d156137da838cfb65e42;hb=a5bc0ce8a0faf81e0a46f9c7d9d7a0913298c057;hp=3d4c147cdaebf2d55c27fc10b6bc1b6b64382632;hpb=b40ae96a9b9c10f650c21aa5ba5769b992e243e2;p=mono.git diff --git a/mono/profiler/log.c b/mono/profiler/log.c index 3d4c147cdae..8a3790aac24 100644 --- a/mono/profiler/log.c +++ b/mono/profiler/log.c @@ -1791,6 +1791,12 @@ method_leave (MonoProfiler *prof, MonoMethod *method, MonoProfilerCallContext *c } } +static void +tail_call (MonoProfiler *prof, MonoMethod *method, MonoMethod *target) +{ + method_leave (prof, method, NULL); +} + static void method_exc_leave (MonoProfiler *prof, MonoMethod *method, MonoObject *exc) { @@ -1810,7 +1816,10 @@ method_exc_leave (MonoProfiler *prof, MonoMethod *method, MonoObject *exc) static MonoProfilerCallInstrumentationFlags method_filter (MonoProfiler *prof, MonoMethod *method) { - return MONO_PROFILER_CALL_INSTRUMENTATION_PROLOGUE | MONO_PROFILER_CALL_INSTRUMENTATION_EPILOGUE; + return MONO_PROFILER_CALL_INSTRUMENTATION_ENTER | + MONO_PROFILER_CALL_INSTRUMENTATION_LEAVE | + MONO_PROFILER_CALL_INSTRUMENTATION_TAIL_CALL | + MONO_PROFILER_CALL_INSTRUMENTATION_EXCEPTION_LEAVE; } static void @@ -4735,6 +4744,7 @@ mono_profiler_init_log (const char *desc) mono_profiler_set_call_instrumentation_filter_callback (handle, method_filter); mono_profiler_set_method_enter_callback (handle, method_enter); mono_profiler_set_method_leave_callback (handle, method_leave); + mono_profiler_set_method_tail_call_callback (handle, tail_call); mono_profiler_set_method_exception_leave_callback (handle, method_exc_leave); }