+2008-07-24 Massimiliano Mantione <massi@ximian.com>
+ * profiler.c: Added runtime_initialized_event,
+ mono_profiler_install_runtime_initialized and
+ mono_profiler_runtime_initialized. This new hook tells the profiler
+ when the runtime is sufficiently initialized to be able to call
+ mono_thread_attach on the root appdomain.
+ * profiler.h, profiler-private.h: Likewise.
+
2008-07-23 Rodrigo Kumpera <rkumpera@novell.com>
* verify.c (do_cast): Do boxing for generic arguments as well.
void mono_profiler_gc_event (MonoGCEvent e, int generation) MONO_INTERNAL;
void mono_profiler_gc_heap_resize (gint64 new_size) MONO_INTERNAL;
+void mono_profiler_runtime_initialized (void) MONO_INTERNAL;
+
#endif /* __MONO_PROFILER_PRIVATE_H__ */
static MonoProfileGCFunc gc_event;
static MonoProfileGCResizeFunc gc_heap_resize;
+static MonoProfileFunc runtime_initialized_event;
+
#define mono_profiler_coverage_lock() EnterCriticalSection (&profiler_coverage_mutex)
#define mono_profiler_coverage_unlock() LeaveCriticalSection (&profiler_coverage_mutex)
static CRITICAL_SECTION profiler_coverage_mutex;
gc_heap_resize = heap_resize_callback;
}
+void
+mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback)
+{
+ runtime_initialized_event = runtime_initialized_callback;
+}
+
+void
+mono_profiler_runtime_initialized (void) {
+ if (runtime_initialized_event)
+ runtime_initialized_event (current_profiler);
+}
+
+
static GHashTable *coverage_hash = NULL;
MonoProfileCoverageInfo*
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_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback);
void mono_profiler_load (const char *desc);