seq_points = FALSE;
}
- if (cfg->gen_sdb_seq_points && cfg->method == method) {
+ if (cfg->method == method)
+ cfg->coverage_info = mono_profiler_coverage_alloc (cfg->method, header->code_size);
+
+ if ((cfg->gen_sdb_seq_points && cfg->method == method) || cfg->coverage_info) {
minfo = mono_debug_lookup_method (method);
if (minfo) {
MonoSymSeqPoint *sps;
cfg->dont_inline = g_list_prepend (cfg->dont_inline, method);
if (cfg->method == method) {
-
- cfg->coverage_info = mono_profiler_coverage_alloc (cfg->method, header->code_size);
-
/* ENTRY BLOCK */
NEW_BBLOCK (cfg, start_bblock);
cfg->bb_entry = start_bblock;
if (sym_seq_points)
mono_bitset_set_fast (seq_point_set_locs, ip - header->code);
- }
-
- cfg->cbb->real_offset = cfg->real_offset;
- if ((cfg->method == method) && cfg->coverage_info) {
- guint32 cil_offset = ip - header->code;
- gpointer counter = &cfg->coverage_info->data [cil_offset].count;
- cfg->coverage_info->data [cil_offset].cil_code = ip;
+ if ((cfg->method == method) && cfg->coverage_info) {
+ guint32 cil_offset = ip - header->code;
+ gpointer counter = &cfg->coverage_info->data [cil_offset].count;
+ cfg->coverage_info->data [cil_offset].cil_code = ip;
- if (mono_arch_opcode_supported (OP_ATOMIC_ADD_I4)) {
- MonoInst *one_ins, *load_ins;
+ if (mono_arch_opcode_supported (OP_ATOMIC_ADD_I4)) {
+ MonoInst *one_ins, *load_ins;
- EMIT_NEW_PCONST (cfg, load_ins, counter);
- EMIT_NEW_ICONST (cfg, one_ins, 1);
- MONO_INST_NEW (cfg, ins, OP_ATOMIC_ADD_I4);
- ins->dreg = mono_alloc_ireg (cfg);
- ins->inst_basereg = load_ins->dreg;
- ins->inst_offset = 0;
- ins->sreg2 = one_ins->dreg;
- ins->type = STACK_I4;
- MONO_ADD_INS (cfg->cbb, ins);
- } else {
- EMIT_NEW_PCONST (cfg, ins, counter);
- MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STORE_MEMBASE_IMM, ins->dreg, 0, 1);
+ EMIT_NEW_PCONST (cfg, load_ins, counter);
+ EMIT_NEW_ICONST (cfg, one_ins, 1);
+ MONO_INST_NEW (cfg, ins, OP_ATOMIC_ADD_I4);
+ ins->dreg = mono_alloc_ireg (cfg);
+ ins->inst_basereg = load_ins->dreg;
+ ins->inst_offset = 0;
+ ins->sreg2 = one_ins->dreg;
+ ins->type = STACK_I4;
+ MONO_ADD_INS (cfg->cbb, ins);
+ } else {
+ EMIT_NEW_PCONST (cfg, ins, counter);
+ MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STORE_MEMBASE_IMM, ins->dreg, 0, 1);
+ }
}
}
+ cfg->cbb->real_offset = cfg->real_offset;
+
if (cfg->verbose_level > 3)
printf ("converting (in B%d: stack: %d) %s", cfg->cbb->block_num, (int)(sp - stack_start), mono_disasm_code_one (NULL, method, ip, NULL));
* - token
* <statement> - Contains data about IL statements. Has no child elements
* Attributes:
- * - offset: The offset of the statement in the IL code after the previous
- * statement's offset
+ * - offset: The offset of the statement in the IL code
* - counter: 1 if the line was covered, 0 if it was not
* - line: The line number in the parent method's file
* - column: The column on the line
{
g_assert (prof == &coverage_profiler);
- int offset = entry->il_offset - coverage_profiler.previous_offset;
CoverageEntry *e = g_new (CoverageEntry, 1);
coverage_profiler.previous_offset = entry->il_offset;
- e->offset = offset;
+ e->offset = entry->il_offset;
e->counter = entry->counter;
e->filename = g_strdup(entry->file_name ? entry->file_name : "");
e->line = entry->line;