mono_metadata_decode_row (&tables [MONO_TABLE_METHODBODY], idx-1, cols, MONO_METHODBODY_SIZE);
+ docidx = cols [MONO_METHODBODY_DOCUMENT];
+
// FIXME:
g_assert (cols [MONO_METHODBODY_SEQ_POINTS]);
-
ptr = mono_metadata_blob_heap (image, cols [MONO_METHODBODY_SEQ_POINTS]);
size = mono_metadata_decode_blob_size (ptr, &ptr);
end = ptr + size;
/* Header */
/* LocalSignature */
mono_metadata_decode_value (ptr, &ptr);
- docidx = mono_metadata_decode_value (ptr, &ptr);
+ if (docidx == 0)
+ docidx = mono_metadata_decode_value (ptr, &ptr);
docname = get_docname (ppdb, image, docidx);
iloffset = 0;
start_line += adv_line;
start_col += adv_col;
}
- first_non_hidden = TRUE;
+ first_non_hidden = FALSE;
}
location = g_new0 (MonoDebugSourceLocation, 1);
mono_metadata_decode_row (&tables [MONO_TABLE_METHODBODY], method_idx-1, cols, MONO_METHODBODY_SIZE);
+ docidx = cols [MONO_METHODBODY_DOCUMENT];
+
if (!cols [MONO_METHODBODY_SEQ_POINTS])
return;
/* Header */
/* LocalSignature */
mono_metadata_decode_value (ptr, &ptr);
- docidx = mono_metadata_decode_value (ptr, &ptr);
+ if (docidx == 0)
+ docidx = mono_metadata_decode_value (ptr, &ptr);
docinfo = get_docinfo (ppdb, image, docidx);
+
if (sfiles)
g_ptr_array_add (sfiles, docinfo);
start_line += adv_line;
start_col += adv_col;
}
- first_non_hidden = TRUE;
+ first_non_hidden = FALSE;
memset (&sp, 0, sizeof (sp));
sp.il_offset = iloffset;
MONO_MT_END,
#define METHODBODY_SCHEMA_OFFSET DOCUMENT_SCHEMA_OFFSET + 5
+ MONO_MT_TABLE_IDX, /* Document */
MONO_MT_BLOB_IDX, /* SequencePoints */
MONO_MT_END,
-#define LOCALSCOPE_SCHEMA_OFFSET METHODBODY_SCHEMA_OFFSET + 2
+#define LOCALSCOPE_SCHEMA_OFFSET METHODBODY_SCHEMA_OFFSET + 3
MONO_MT_TABLE_IDX, /* Method */
MONO_MT_TABLE_IDX, /* ImportScope */
MONO_MT_TABLE_IDX, /* VariableList */
break;
}
break;
+ case MONO_TABLE_METHODBODY:
+ g_assert (i == 0);
+ field_size = idx_size (meta, MONO_TABLE_DOCUMENT);
+ break;
default:
g_error ("Can't handle MONO_MT_TABLE_IDX for table %d element %d", tableindex, i);
}