[profiler] Split method_leave callback into a method_tail_call callback.
[mono.git] / mono / metadata / profiler.h
index e20dc34c85472d8929d6a512356351e519e680a3..b6e836d3638b6d0912666f3fec8a33adf2788671 100644 (file)
@@ -200,14 +200,18 @@ MONO_API mono_bool mono_profiler_enable_allocations (void);
 typedef enum {
        /* Do not instrument calls. */
        MONO_PROFILER_CALL_INSTRUMENTATION_NONE = 0,
-       /* Instrument method prologues. */
-       MONO_PROFILER_CALL_INSTRUMENTATION_PROLOGUE = 1 << 1,
-       /* Also capture a call context for prologues. */
-       MONO_PROFILER_CALL_INSTRUMENTATION_PROLOGUE_CONTEXT = 1 << 2,
-       /* Instrument method epilogues. */
-       MONO_PROFILER_CALL_INSTRUMENTATION_EPILOGUE = 1 << 3,
-       /* Also capture a call context for epilogues. */
-       MONO_PROFILER_CALL_INSTRUMENTATION_EPILOGUE_CONTEXT = 1 << 4,
+       /* Instrument method entries. */
+       MONO_PROFILER_CALL_INSTRUMENTATION_ENTER = 1 << 1,
+       /* Also capture a call context for method entries. */
+       MONO_PROFILER_CALL_INSTRUMENTATION_ENTER_CONTEXT = 1 << 2,
+       /* Instrument method exits. */
+       MONO_PROFILER_CALL_INSTRUMENTATION_LEAVE = 1 << 3,
+       /* Also capture a call context for method exits. */
+       MONO_PROFILER_CALL_INSTRUMENTATION_LEAVE_CONTEXT = 1 << 4,
+       /* Instrument method exits as a result of a tail call. */
+       MONO_PROFILER_CALL_INSTRUMENTATION_TAIL_CALL = 1 << 5,
+       /* Instrument exceptional method exits. */
+       MONO_PROFILER_CALL_INSTRUMENTATION_EXCEPTION_LEAVE = 1 << 6,
 } MonoProfilerCallInstrumentationFlags;
 
 typedef MonoProfilerCallInstrumentationFlags (*MonoProfilerCallInstrumentationFilterCallback) (MonoProfiler *prof, MonoMethod *method);