X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fprofiler.h;h=1d9e713560bd4f3c0aac3579dc011e21bf8f76ac;hb=07e742b4fe7519428d788a39f51bee556d681273;hp=9793284643bd000b3edbfa0bdfbade4cb2aa34b5;hpb=76c57c0f0253a37ea7e941e5f7fd89a351716233;p=mono.git diff --git a/mono/metadata/profiler.h b/mono/metadata/profiler.h index 9793284643b..1d9e713560b 100644 --- a/mono/metadata/profiler.h +++ b/mono/metadata/profiler.h @@ -3,7 +3,8 @@ #include #include -#include + +G_BEGIN_DECLS typedef enum { MONO_PROFILE_NONE = 0, @@ -19,7 +20,10 @@ typedef enum { 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, + MONO_PROFILE_STATISTICAL = 1 << 15 } MonoProfileFlags; typedef enum { @@ -27,8 +31,28 @@ typedef enum { MONO_PROFILE_FAILED } MonoProfileResult; +typedef enum { + MONO_GC_EVENT_START, + MONO_GC_EVENT_MARK_START, + MONO_GC_EVENT_MARK_END, + MONO_GC_EVENT_RECLAIM_START, + MONO_GC_EVENT_RECLAIM_END, + MONO_GC_EVENT_END +} MonoGCEvent; + +/* coverage info */ +typedef struct { + MonoMethod *method; + int iloffset; + int counter; + const char *filename; + int line; + int col; +} MonoProfileCoverageEntry; + typedef struct _MonoProfiler MonoProfiler; + /* * Functions that the runtime will call on the profiler. */ @@ -43,14 +67,22 @@ typedef void (*MonoProfileAssemblyFunc) (MonoProfiler *prof, MonoAssembly *assem typedef void (*MonoProfileAppDomainResult)(MonoProfiler *prof, MonoDomain *domain, int result); typedef void (*MonoProfileMethodResult) (MonoProfiler *prof, MonoMethod *method, int result); +typedef void (*MonoProfileJitResult) (MonoProfiler *prof, MonoMethod *method, MonoJitInfo* jinfo, int result); typedef void (*MonoProfileClassResult) (MonoProfiler *prof, MonoClass *klass, int result); typedef void (*MonoProfileModuleResult) (MonoProfiler *prof, MonoImage *module, int result); typedef void (*MonoProfileAssemblyResult) (MonoProfiler *prof, MonoAssembly *assembly, int result); typedef void (*MonoProfileMethodInline) (MonoProfiler *prof, MonoMethod *parent, MonoMethod *child, int *ok); -typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, guint32 tid); +typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, gsize tid); typedef void (*MonoProfileAllocFunc) (MonoProfiler *prof, MonoObject *obj, MonoClass *klass); +typedef void (*MonoProfileStatFunc) (MonoProfiler *prof, guchar *ip, void *context); +typedef void (*MonoProfileGCFunc) (MonoProfiler *prof, MonoGCEvent event, int generation); +typedef void (*MonoProfileGCResizeFunc) (MonoProfiler *prof, gint64 new_size); + +typedef gboolean (*MonoProfileCoverageFilterFunc) (MonoProfiler *prof, MonoMethod *method); + +typedef void (*MonoProfileCoverageFunc) (MonoProfiler *prof, const MonoProfileCoverageEntry *entry); /* * Function the profiler may call. @@ -70,12 +102,19 @@ void mono_profiler_install_class (MonoProfileClassFunc start_load, MonoPro MonoProfileClassFunc start_unload, MonoProfileClassFunc end_unload); void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end); +void mono_profiler_install_jit_end (MonoProfileJitResult end); 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_statistical (MonoProfileStatFunc callback); +void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callback); +void mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func); +void mono_profiler_install_gc (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback); + +void mono_profiler_load (const char *desc); -void mono_profiler_install_simple (void); +G_END_DECLS #endif /* __MONO_PROFILER_H__ */