MONO_PROFILE_THREADS = 1 << 9,
MONO_PROFILE_REMOTING = 1 << 10,
MONO_PROFILE_TRANSITIONS = 1 << 11,
- MONO_PROFILE_ENTER_LEAVE = 1 << 12
+ MONO_PROFILE_ENTER_LEAVE = 1 << 12,
+ MONO_PROFILE_COVERAGE = 1 << 13,
+ MONO_PROFILE_INS_COVERAGE = 1 << 14
} MonoProfileFlags;
+typedef enum {
+ MONO_PROFILE_OK,
+ MONO_PROFILE_FAILED
+} MonoProfileResult;
+
+/* coverage info */
+typedef struct {
+ MonoMethod *method;
+ int iloffset;
+ int counter;
+ const char *filename;
+ int line;
+ int col;
+} MonoProfileCoverageEntry;
+
typedef struct _MonoProfiler MonoProfiler;
/*
typedef void (*MonoProfileMethodInline) (MonoProfiler *prof, MonoMethod *parent, MonoMethod *child, int *ok);
-typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, HANDLE thread);
+typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, guint32 tid);
typedef void (*MonoProfileAllocFunc) (MonoProfiler *prof, MonoObject *obj, MonoClass *klass);
+typedef gboolean (*MonoProfileCoverageFilterFunc) (MonoProfiler *prof, MonoMethod *method);
+
+typedef void (*MonoProfileCoverageFunc) (MonoProfiler *prof, const MonoProfileCoverageEntry *entry);
+
/*
* Function the profiler may call.
*/
MonoProfileClassFunc start_unload, MonoProfileClassFunc end_unload);
void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end);
-void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc leave);
+void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave);
void mono_profiler_install_thread (MonoProfileThreadFunc start, MonoProfileThreadFunc end);
void mono_profiler_install_transition (MonoProfileMethodResult callback);
+void mono_profiler_install_allocation (MonoProfileAllocFunc callback);
+void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callback);
+void mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func);
-void mono_profiler_install_simple (void);
+void mono_profiler_load (const char *desc);
#endif /* __MONO_PROFILER_H__ */