}
static void
-register_method_local (MonoProfiler *prof, MonoDomain *domain, MonoMethod *method, MonoJitInfo *ji)
+register_method_local (MonoProfiler *prof, MonoMethod *method, MonoJitInfo *ji)
{
- if (!domain)
- g_assert (ji);
-
if (!mono_conc_hashtable_lookup (prof->method_table, method)) {
if (!ji) {
MethodSearch search = { method, NULL };
}
static void
-emit_method (MonoProfiler *prof, LogBuffer *logbuffer, MonoDomain *domain, MonoMethod *method)
+emit_method (MonoProfiler *prof, LogBuffer *logbuffer, MonoMethod *method)
{
- register_method_local (prof, domain, method, NULL);
+ register_method_local (prof, method, NULL);
emit_method_inner (logbuffer, method);
}
+static void
+emit_method_as_ptr (MonoProfiler *prof, LogBuffer *logbuffer, MonoMethod *method)
+{
+ register_method_local (prof, method, NULL);
+ emit_ptr (logbuffer, method);
+}
+
static void
emit_obj (LogBuffer *logbuffer, void *ptr)
{
}
static void
-emit_bt (LogBuffer *logbuffer, FrameData *data)
+emit_bt (MonoProfiler *prof, LogBuffer *logbuffer, FrameData *data)
{
/* FIXME: this is actually tons of data and we should
* just output it the first time and use an id the next
//if (*p != data.count) {
// printf ("bad num frames enc at %d: %d -> %d\n", count, data.count, *p); printf ("frames end: %p->%p\n", p, logbuffer->data); exit(0);}
while (data->count) {
- emit_ptr (logbuffer, data->methods [--data->count]);
+ emit_method_as_ptr (prof, logbuffer, data->methods [--data->count]);
}
}
emit_obj (logbuffer, obj);
emit_value (logbuffer, len);
if (do_bt)
- emit_bt (logbuffer, &data);
+ emit_bt (prof, logbuffer, &data);
EXIT_LOG (logbuffer);
if (logbuffer->next)
safe_send (prof, logbuffer);
ENTER_LOG (logbuffer, "enter");
emit_byte (logbuffer, TYPE_ENTER | TYPE_METHOD);
emit_time (logbuffer, now);
- emit_method (prof, logbuffer, mono_domain_get (), method);
+ emit_method (prof, logbuffer, method);
EXIT_LOG (logbuffer);
process_requests (prof);
ENTER_LOG (logbuffer, "leave");
emit_byte (logbuffer, TYPE_LEAVE | TYPE_METHOD);
emit_time (logbuffer, now);
- emit_method (prof, logbuffer, mono_domain_get (), method);
+ emit_method (prof, logbuffer, method);
EXIT_LOG (logbuffer);
if (logbuffer->next)
safe_send (prof, logbuffer);
ENTER_LOG (logbuffer, "eleave");
emit_byte (logbuffer, TYPE_EXC_LEAVE | TYPE_METHOD);
emit_time (logbuffer, now);
- emit_method (prof, logbuffer, mono_domain_get (), method);
+ emit_method (prof, logbuffer, method);
EXIT_LOG (logbuffer);
process_requests (prof);
}
if (result != MONO_PROFILE_OK)
return;
- register_method_local (prof, NULL, method, ji);
+ register_method_local (prof, method, ji);
}
static void
emit_time (logbuffer, now);
emit_obj (logbuffer, object);
if (do_bt)
- emit_bt (logbuffer, &data);
+ emit_bt (prof, logbuffer, &data);
EXIT_LOG (logbuffer);
process_requests (prof);
}
emit_time (logbuffer, now);
emit_value (logbuffer, clause_type);
emit_value (logbuffer, clause_num);
- emit_method (prof, logbuffer, mono_domain_get (), method);
+ emit_method (prof, logbuffer, method);
EXIT_LOG (logbuffer);
}
emit_time (logbuffer, now);
emit_obj (logbuffer, object);
if (do_bt)
- emit_bt (logbuffer, &data);
+ emit_bt (profiler, logbuffer, &data);
EXIT_LOG (logbuffer);
process_requests (profiler);
}
emit_uvalue (logbuffer, mbt_count);
for (i = 0; i < mbt_count; ++i) {
MonoMethod *method = (MonoMethod *) sample [i * 4 + 0];
- MonoDomain *domain = (MonoDomain *) sample [i * 4 + 1];
uintptr_t native_offset = sample [i * 4 + 3];
- emit_method (prof, logbuffer, domain, method);
+ emit_method (prof, logbuffer, method);
emit_svalue (logbuffer, 0); /* il offset will always be 0 from now on */
emit_svalue (logbuffer, native_offset);
}