internal override sealed void BuildSignatures(MetaDataOut md) { if (locals != null) { localSig.BuildSignatures(md); locToken = localSig.Token(); } if (code != null) { // If the stack depth has not been explicity set, try to work out what is needed. if (maxStack == 0) { try { // Set the flag to show if the return type is void or other. code.ReturnsVoid = GetRetType().SameType(PrimitiveType.Void); // Calculate the max stack depth maxStack = code.GetMaxStackDepthRequired(); } catch (CouldNotFindMaxStackDepth) { // Could not find the depth, assign the default maxStack = DefaultMaxStackDepth; } } code.CheckCode(locToken,initLocals,maxStack,md); textOffset = md.AddCode(code); if (Diag.DiagOn) Console.WriteLine("code offset = " + textOffset); } sig.BuildSignatures(md); MemoryStream outSig = new MemoryStream(); TypeSig(outSig); sigIx = md.AddToBlobHeap(outSig.ToArray()); done = false; }