Merge pull request #704 from jgagnon/master
[mono.git] / mono / mini / trace.h
1 #ifndef __MONO_TRACE_H__
2 #define __MONO_TRACE_H__
3 #include <glib.h>
4 #include "mono/utils/mono-compiler.h"
5
6 typedef enum {
7         MONO_TRACEOP_ALL,
8         MONO_TRACEOP_PROGRAM,
9         MONO_TRACEOP_METHOD,
10         MONO_TRACEOP_ASSEMBLY,
11         MONO_TRACEOP_CLASS,
12         MONO_TRACEOP_NAMESPACE,
13         MONO_TRACEOP_EXCEPTION,
14         MONO_TRACEOP_WRAPPER,
15 } MonoTraceOpcode;
16
17 typedef struct {
18         MonoTraceOpcode op;
19         int   exclude;
20         void *data, *data2;
21 } MonoTraceOperation;
22
23 struct MonoTraceSpec {
24         int len;
25         gboolean enabled;
26         MonoTraceOperation *ops;
27
28         MonoAssembly *assembly;
29 };
30
31 G_BEGIN_DECLS
32
33 void
34 mono_trace_enter_method (MonoMethod *method, char *ebp);
35
36 void 
37 mono_trace_leave_method (MonoMethod *method, ...);
38
39 void mono_trace_enable (gboolean enable);
40 gboolean mono_trace_is_enabled (void);
41 gboolean mono_trace_eval_exception (MonoClass *klass);
42
43 G_END_DECLS
44
45 #endif /* __MONO_TRACE_H__ */