[profiler] Split method_leave callback into a method_tail_call callback.
[mono.git] / mono / mini / mini-exceptions.c
index 348bc3948c5a30575db3dc0836e9b501c5a12380..4f81d7c4c37c42793c25b489ae438325e5c68dd7 100644 (file)
@@ -2230,9 +2230,12 @@ mono_handle_exception_internal (MonoContext *ctx, MonoObject *obj, gboolean resu
                        }
                }
 
-               jit_tls->orig_ex_ctx_set = TRUE;
-               MONO_PROFILER_RAISE (method_exception_leave, (method, ex_obj));
-               jit_tls->orig_ex_ctx_set = FALSE;
+               if (MONO_PROFILER_ENABLED (method_exception_leave) &&
+                   mono_profiler_get_call_instrumentation_flags (method) & MONO_PROFILER_CALL_INSTRUMENTATION_EXCEPTION_LEAVE) {
+                       jit_tls->orig_ex_ctx_set = TRUE;
+                       MONO_PROFILER_RAISE (method_exception_leave, (method, ex_obj));
+                       jit_tls->orig_ex_ctx_set = FALSE;
+               }
 
                *ctx = new_ctx;
        }