MonoDebugMethodJitInfo *
mono_debug_find_method (MonoMethod *method, MonoDomain *domain)
{
- MonoDebugMethodJitInfo *res = g_new0 (MonoDebugMethodJitInfo, 1);
-
if (mono_debug_format == MONO_DEBUG_FORMAT_NONE)
return NULL;
+ MonoDebugMethodJitInfo *res = g_new0 (MonoDebugMethodJitInfo, 1);
+
mono_debugger_lock ();
find_method (method, res);
mono_debugger_unlock ();
+
return res;
}
acfg->cfgs [method_index]->got_offset = acfg->got_offset;
- emit_and_reloc_code (acfg, method, code, cfg->code_len, cfg->patch_info, FALSE, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
+ MonoDebugMethodJitInfo *jit_debug_info = mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ());
+ emit_and_reloc_code (acfg, method, code, cfg->code_len, cfg->patch_info, FALSE, jit_debug_info);
+ mono_debug_free_method_jit_info (jit_debug_info);
emit_line (acfg);
sprintf (symbol2, "%sme_%x", acfg->temp_prefix, i);
- mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->asm_debug_symbol, (guint8 *)cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
+ MonoDebugMethodJitInfo *jit_debug_info = mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ());
+ mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->asm_debug_symbol, (guint8 *)cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, jit_debug_info);
+ mono_debug_free_method_jit_info (jit_debug_info);
}
#endif
}
if (!info)
return NULL;
- return get_variable_buffer (info, &info->locals [pos], &ctx->context);
+ gpointer variable_buffer = get_variable_buffer (info, &info->locals [pos], &ctx->context);
+
+ mono_debug_free_method_jit_info (info);
+
+ return variable_buffer;
}
gpointer