internal override sealed void BuildTables(MetaDataOut md)
{
md.AddToTable(MDTable.Method,this);
nameIx = md.AddToStringsHeap(name);
if (genericParams != null) {
for (int i=0; i < genericParams.Count; i++) {
((GenericParam)genericParams[i]).BuildMDTables(md);
}
}
if (security != null) {
for (int i=0; i < security.Count; i++) {
((DeclSecurity)security[i]).BuildMDTables(md);
}
}
if (pinvokeImpl != null) pinvokeImpl.BuildMDTables(md);
if (entryPoint) md.SetEntryPoint(this);
if (locals != null) {
localSig = new LocalSig(locals);
localSig.BuildMDTables(md);
}
try {
if (code != null) {
if (code.IsEmpty()) {
code = null;
} else {
code.BuildTables(md);
}
}
} catch (InstructionException ex) {
throw new Exception(ex.AddMethodName(name));
}
parIx = md.TableIndex(MDTable.Param);
for (int i=0; i < sig.numPars; i++) {
parList[i].seqNo = (ushort)(i+1);
parList[i].BuildMDTables(md);
}
sig.BuildTables(md);
}