g_array_append_val (info->line_numbers, lne);
}
-static void
-mono_debug_free_method_jit_info (MonoDebugMethodJitInfo *jit)
-{
- g_free (jit->line_numbers);
- g_free (jit->this_var);
- g_free (jit->params);
- g_free (jit->locals);
- g_free (jit);
-}
void
mono_debug_init_method (MonoCompile *cfg, MonoBasicBlock *start_block, guint32 breakpoint_id)
jit->epilogue_begin = cfg->epilog_begin;
jit->code_size = cfg->code_len;
- record_line_number (info, jit->epilogue_begin, header->code_size);
+ if (jit->epilogue_begin)
+ record_line_number (info, jit->epilogue_begin, header->code_size);
jit->num_params = sig->param_count;
jit->params = g_new0 (MonoDebugVarInfo, jit->num_params);
void
mono_debug_serialize_debug_info (MonoCompile *cfg, guint8 **out_buf, guint32 *buf_len)
{
- MiniDebugMethodInfo *info;
MonoDebugMethodJitInfo *jit;
guint32 size, prev_offset, prev_native_offset;
guint8 *buf, *p;
int i;
- info = (MiniDebugMethodInfo *) cfg->debug_info;
- if (!info || !info->jit) {
+ /* Can't use cfg->debug_info as it is freed by close_method () */
+ jit = mono_debug_find_method (cfg->method, mono_domain_get ());
+ if (!jit) {
*buf_len = 0;
return;
}
- jit = info->jit;
size = ((jit->num_params + jit->num_locals + 1) * 10) + (jit->num_line_numbers * 10) + 64;
p = buf = g_malloc (size);
print_var_info (&jit->locals [i], i, "", "Local");
}
}
+ mono_debug_free_method_jit_info (jit);
}
/*