From 6d305d176b19264f5bcc61cc1c246ab24e7d2d41 Mon Sep 17 00:00:00 2001 From: Tomas Matousek Date: Tue, 14 Jul 2015 18:42:02 -0700 Subject: [PATCH] Rename BlobWriter to BlobBuilder --- .../Portable/CodeGen/EmitArrayInitializer.cs | 4 +- .../CodeAnalysisTest/CodeAnalysisTest.csproj | 1 + .../Emit/CustomDebugInfoTests.cs | 10 +- .../PEWriter/BlobWriterTests.cs | 14 +- .../Core/Portable/CodeGen/BasicBlock.cs | 31 +--- .../Core/Portable/CodeGen/ILBuilder.cs | 2 +- .../Core/Portable/CodeGen/ILBuilderEmit.cs | 4 +- .../Collections/ByteSequenceComparer.cs | 34 +++- src/Compilers/Core/Portable/ConstantValue.cs | 2 +- .../EditAndContinue/DeltaMetadataWriter.cs | 2 +- .../EditAndContinueMethodDebugInformation.cs | 4 +- .../Portable/NativePdbWriter/PdbWriter.cs | 4 +- .../Core/Portable/PEWriter/BlobWriter.cs | 31 ++-- .../PEWriter/CustomDebugInfoWriter.cs | 40 ++-- .../Core/Portable/PEWriter/ManagedResource.cs | 2 +- .../Portable/PEWriter/MetadataHeapsBuilder.cs | 20 +- .../PEWriter/MetadataWriter.PortablePdb.cs | 40 ++-- .../Core/Portable/PEWriter/MetadataWriter.cs | 172 +++++++++--------- .../Core/Portable/PEWriter/PeWriter.cs | 42 ++--- .../Portable/CodeGen/EmitArrayInitializer.vb | 4 +- src/Test/Utilities/ILBuilderVisualizer.cs | 8 +- 21 files changed, 244 insertions(+), 227 deletions(-) diff --git a/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs b/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs index 5c6769fdc78..cbb33d34dad 100644 --- a/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs +++ b/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs @@ -310,14 +310,14 @@ private ImmutableArray GetRawData(ImmutableArray initiali // the initial size is a guess. // there is no point to be precise here as MemoryStream always has N + 1 storage // and will need to be trimmed regardless - var writer = new Cci.BlobWriter(initializers.Length * 4); + var writer = new Cci.BlobBuilder(initializers.Length * 4); SerializeArrayRecursive(writer, initializers); return writer.ToImmutableArray(); } - private void SerializeArrayRecursive(Cci.BlobWriter bw, ImmutableArray inits) + private void SerializeArrayRecursive(Cci.BlobBuilder bw, ImmutableArray inits) { if (inits.Length != 0) { diff --git a/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj b/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj index 7d3d7aef1bc..a5f74741a95 100644 --- a/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj +++ b/src/Compilers/Core/CodeAnalysisTest/CodeAnalysisTest.csproj @@ -25,6 +25,7 @@ + diff --git a/src/Compilers/Core/CodeAnalysisTest/Emit/CustomDebugInfoTests.cs b/src/Compilers/Core/CodeAnalysisTest/Emit/CustomDebugInfoTests.cs index f5775203f70..c10ddfd3e4e 100644 --- a/src/Compilers/Core/CodeAnalysisTest/Emit/CustomDebugInfoTests.cs +++ b/src/Compilers/Core/CodeAnalysisTest/Emit/CustomDebugInfoTests.cs @@ -196,7 +196,7 @@ public void EditAndContinueLocalSlotMap_NegativeSyntaxOffsets() var closures = ImmutableArray.Empty; var lambdas = ImmutableArray.Empty; - var cmw = new Cci.BlobWriter(); + var cmw = new Cci.BlobBuilder(); new EditAndContinueMethodDebugInformation(123, slots, closures, lambdas).SerializeLocalSlots(cmw); @@ -223,7 +223,7 @@ public void EditAndContinueLambdaAndClosureMap_NegativeSyntaxOffsets() new LambdaDebugInfo(-50, new DebugId(1, 0), 0), new LambdaDebugInfo(-180, new DebugId(2, 0), LambdaDebugInfo.StaticClosureOrdinal)); - var cmw = new Cci.BlobWriter(); + var cmw = new Cci.BlobBuilder(); new EditAndContinueMethodDebugInformation(0x7b, slots, closures, lambdas).SerializeLambdaMap(cmw); @@ -245,7 +245,7 @@ public void EditAndContinueLambdaAndClosureMap_NoClosures() var closures = ImmutableArray.Empty; var lambdas = ImmutableArray.Create(new LambdaDebugInfo(20, new DebugId(0, 0), LambdaDebugInfo.StaticClosureOrdinal)); - var cmw = new Cci.BlobWriter(); + var cmw = new Cci.BlobBuilder(); new EditAndContinueMethodDebugInformation(-1, slots, closures, lambdas).SerializeLambdaMap(cmw); @@ -268,7 +268,7 @@ public void EditAndContinueLambdaAndClosureMap_NoLambdas() var closures = ImmutableArray.Empty; var lambdas = ImmutableArray.Empty; - var cmw = new Cci.BlobWriter(); + var cmw = new Cci.BlobBuilder(); new EditAndContinueMethodDebugInformation(10, slots, closures, lambdas).SerializeLambdaMap(cmw); @@ -300,7 +300,7 @@ public void EncCdiAlignment() new LambdaDebugInfo(-180, new DebugId(2, 0), LambdaDebugInfo.StaticClosureOrdinal)); var debugInfo = new EditAndContinueMethodDebugInformation(1, slots, closures, lambdas); - var records = new ArrayBuilder(); + var records = new ArrayBuilder(); Cci.CustomDebugInfoWriter.SerializeCustomDebugInformation(debugInfo, records); var cdi = Cci.CustomDebugInfoWriter.SerializeCustomDebugMetadata(records); diff --git a/src/Compilers/Core/CodeAnalysisTest/PEWriter/BlobWriterTests.cs b/src/Compilers/Core/CodeAnalysisTest/PEWriter/BlobWriterTests.cs index 45758923a5e..af4e174ab2e 100644 --- a/src/Compilers/Core/CodeAnalysisTest/PEWriter/BlobWriterTests.cs +++ b/src/Compilers/Core/CodeAnalysisTest/PEWriter/BlobWriterTests.cs @@ -12,14 +12,14 @@ public class BlobWriterTests { private static byte[] CompressUnsignedInteger(int value) { - var writer = new BlobWriter(); + var writer = new BlobBuilder(); writer.WriteCompressedInteger((uint)value); return writer.ToArray(); } private static byte[] CompressSignedInteger(int value) { - var writer = new BlobWriter(); + var writer = new BlobBuilder(); writer.WriteCompressedSignedInteger(value); return writer.ToArray(); } @@ -59,7 +59,7 @@ public void CompressSignedIntegersFromSpecExamples() [Fact] public void WritePrimitive() { - var writer = new BlobWriter(4); + var writer = new BlobBuilder(4); writer.WriteUInt32(0x11223344); writer.WriteUInt16(0x5566); @@ -98,7 +98,7 @@ public void WritePrimitive() [Fact] public void WriteBytes1() { - var writer = new BlobWriter(4); + var writer = new BlobBuilder(4); writer.WriteBytes(new byte[] { 1, 2, 3, 4 }); writer.WriteBytes(new byte[] { }); @@ -123,7 +123,7 @@ public void WriteBytes1() [Fact] public void WriteBytes2() { - var writer = new BlobWriter(4); + var writer = new BlobBuilder(4); writer.WriteBytes(0xff, 0); writer.WriteBytes(1, 4); @@ -143,7 +143,7 @@ public void WriteBytes2() [Fact] public void WriteAlignPad() { - var writer = new BlobWriter(4); + var writer = new BlobBuilder(4); writer.WriteByte(0x01); writer.PadTo(2); @@ -174,7 +174,7 @@ public void WriteAlignPad() [Fact] public void WriteUTF8() { - var writer = new BlobWriter(4); + var writer = new BlobBuilder(4); writer.WriteUTF8("a"); writer.WriteUTF8(""); writer.WriteUTF8("bc"); diff --git a/src/Compilers/Core/Portable/CodeGen/BasicBlock.cs b/src/Compilers/Core/Portable/CodeGen/BasicBlock.cs index e2afb49fc0e..ba8bca0ec1d 100644 --- a/src/Compilers/Core/Portable/CodeGen/BasicBlock.cs +++ b/src/Compilers/Core/Portable/CodeGen/BasicBlock.cs @@ -73,14 +73,14 @@ internal void Initialize(ILBuilder builder) //parent builder internal ILBuilder builder; - private Cci.BlobWriter _lazyRegularInstructions; - public Cci.BlobWriter Writer + private Cci.BlobBuilder _lazyRegularInstructions; + public Cci.BlobBuilder Writer { get { if (_lazyRegularInstructions == null) { - _lazyRegularInstructions = Cci.BlobWriter.GetInstance(); + _lazyRegularInstructions = Cci.BlobBuilder.GetInstance(); } return _lazyRegularInstructions; @@ -248,7 +248,7 @@ private bool IsBranchToLabel /// /// Instructions that are not branches. /// - public Cci.BlobWriter RegularInstructions => _lazyRegularInstructions; + public Cci.BlobBuilder RegularInstructions => _lazyRegularInstructions; /// /// The block contains only the final branch or nothing at all @@ -533,34 +533,17 @@ private bool TryOptimizeBranchToEquivalent(BasicBlock next, ref int delta) private static bool AreIdentical(BasicBlock one, BasicBlock another) { if (one._branchCode == another._branchCode && - !one._branchCode.CanFallThrough() && - one._branchLabel == another._branchLabel) + !one._branchCode.CanFallThrough() && + one._branchLabel == another._branchLabel) { var instr1 = one.RegularInstructions; var instr2 = another.RegularInstructions; - - if (instr1 == instr2) - { - return true; - } - - if (instr1 != null && instr2 != null && instr1.Length == instr2.Length) - { - for (int i = 0, l = (int)instr1.Length; i < l; i++) - { - if (instr1.Buffer[i] != instr2.Buffer[i]) - { - return false; - } - } - return true; - } + return instr1 == instr2 || instr1?.ContentEquals(instr2) == true; } return false; } - /// /// Returns reversed branch operation for the current block. /// If no reverse opcode can be obtained Nop is returned. diff --git a/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs b/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs index b7fe07966d3..2a368971496 100644 --- a/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs +++ b/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs @@ -864,7 +864,7 @@ private void RealizeBlocks() } // Now linearize everything with computed offsets. - var writer = Cci.BlobWriter.GetInstance(); + var writer = Cci.BlobBuilder.GetInstance(); for (var block = leaderBlock; block != null; block = block.NextBlock) { diff --git a/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs b/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs index 9c10075aebc..0f4728f8eaf 100644 --- a/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs +++ b/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs @@ -704,7 +704,7 @@ private void EmitDouble(double doubleValue) this.GetCurrentWriter().WriteInt64(int64); } - private static void WriteOpCode(Cci.BlobWriter writer, ILOpCode code) + private static void WriteOpCode(Cci.BlobBuilder writer, ILOpCode code) { var size = code.Size(); if (size == 1) @@ -724,7 +724,7 @@ private static void WriteOpCode(Cci.BlobWriter writer, ILOpCode code) } } - private Cci.BlobWriter GetCurrentWriter() + private Cci.BlobBuilder GetCurrentWriter() { return this.GetCurrentBlock().Writer; } diff --git a/src/Compilers/Core/Portable/Collections/ByteSequenceComparer.cs b/src/Compilers/Core/Portable/Collections/ByteSequenceComparer.cs index f37f6bb58f2..b3180b9ae07 100644 --- a/src/Compilers/Core/Portable/Collections/ByteSequenceComparer.cs +++ b/src/Compilers/Core/Portable/Collections/ByteSequenceComparer.cs @@ -1,5 +1,6 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; @@ -40,21 +41,44 @@ internal static bool Equals(ImmutableArray x, ImmutableArray y) return true; } - internal static bool Equals(byte[] x, byte[] y) + internal static bool Equals(byte[] left, int leftStart, byte[] right, int rightStart, int length) { - if (ReferenceEquals(x, y)) + if (left == null || right == null) + { + return ReferenceEquals(left, right); + } + + if (ReferenceEquals(left, right) && leftStart == rightStart) { return true; } - if (x == null || y == null || x.Length != y.Length) + for (var i = 0; i < length; i++) + { + if (left[leftStart + i] != right[rightStart + i]) + { + return false; + } + } + + return true; + } + + internal static bool Equals(byte[] left, byte[] right) + { + if (ReferenceEquals(left, right)) + { + return true; + } + + if (left == null || right == null || left.Length != right.Length) { return false; } - for (var i = 0; i < x.Length; i++) + for (var i = 0; i < left.Length; i++) { - if (x[i] != y[i]) + if (left[i] != right[i]) { return false; } diff --git a/src/Compilers/Core/Portable/ConstantValue.cs b/src/Compilers/Core/Portable/ConstantValue.cs index 0a00be226c2..64c6485782c 100644 --- a/src/Compilers/Core/Portable/ConstantValue.cs +++ b/src/Compilers/Core/Portable/ConstantValue.cs @@ -662,7 +662,7 @@ public bool IsNothing } } - public void Serialize(Cci.BlobWriter writer) + public void Serialize(Cci.BlobBuilder writer) { switch (this.Discriminator) { diff --git a/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs b/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs index d79c4a2a227..941c5fe4821 100644 --- a/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs +++ b/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs @@ -609,7 +609,7 @@ protected override int SerializeLocalVariablesSignature(IMethodBody body) if (localVariables.Length > 0) { - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); writer.WriteByte(0x07); writer.WriteCompressedInteger((uint)localVariables.Length); diff --git a/src/Compilers/Core/Portable/Emit/EditAndContinueMethodDebugInformation.cs b/src/Compilers/Core/Portable/Emit/EditAndContinueMethodDebugInformation.cs index b61cea4a33f..bad69dec05e 100644 --- a/src/Compilers/Core/Portable/Emit/EditAndContinueMethodDebugInformation.cs +++ b/src/Compilers/Core/Portable/Emit/EditAndContinueMethodDebugInformation.cs @@ -121,7 +121,7 @@ private unsafe static ImmutableArray UncompressSlotMap(Immut return mapBuilder.ToImmutableAndFree(); } - internal void SerializeLocalSlots(Cci.BlobWriter writer) + internal void SerializeLocalSlots(Cci.BlobBuilder writer) { int syntaxOffsetBaseline = -1; foreach (LocalSlotDebugInfo localSlot in this.LocalSlots) @@ -237,7 +237,7 @@ internal void SerializeLocalSlots(Cci.BlobWriter writer) lambdas = lambdasBuilder.ToImmutableAndFree(); } - internal void SerializeLambdaMap(Cci.BlobWriter writer) + internal void SerializeLambdaMap(Cci.BlobBuilder writer) { Debug.Assert(this.MethodOrdinal >= -1); writer.WriteCompressedInteger((uint)(this.MethodOrdinal + 1)); diff --git a/src/Compilers/Core/Portable/NativePdbWriter/PdbWriter.cs b/src/Compilers/Core/Portable/NativePdbWriter/PdbWriter.cs index dfed859799b..7ad912f205f 100644 --- a/src/Compilers/Core/Portable/NativePdbWriter/PdbWriter.cs +++ b/src/Compilers/Core/Portable/NativePdbWriter/PdbWriter.cs @@ -48,7 +48,7 @@ internal sealed class PdbLogger // On the other hand, we do want to use a fairly large buffer as the hashing operations // are invoked through reflection, which is fairly slow. private readonly bool _logging; - private readonly BlobWriter _logData; + private readonly BlobBuilder _logData; private const int bufferFlushLimit = 64 * 1024; private readonly HashAlgorithm _hashAlgorithm; @@ -57,7 +57,7 @@ internal PdbLogger(bool logging) _logging = logging; if (logging) { - _logData = BlobWriter.GetInstance(); + _logData = BlobBuilder.GetInstance(); _hashAlgorithm = new SHA1CryptoServiceProvider(); Debug.Assert(_hashAlgorithm.SupportsTransform); } diff --git a/src/Compilers/Core/Portable/PEWriter/BlobWriter.cs b/src/Compilers/Core/Portable/PEWriter/BlobWriter.cs index 866dad5b827..b7c6c3306f6 100644 --- a/src/Compilers/Core/Portable/PEWriter/BlobWriter.cs +++ b/src/Compilers/Core/Portable/PEWriter/BlobWriter.cs @@ -8,17 +8,18 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; +using Microsoft.CodeAnalysis.Collections; using Roslyn.Utilities; namespace Microsoft.Cci { - internal unsafe sealed class BlobWriter + internal unsafe sealed class BlobBuilder { private byte[] _buffer; private int _length; private int _position; - internal BlobWriter(int initialSize = 64) + internal BlobBuilder(int initialSize = 64) { // the writer assumes little-endian architecture: Debug.Assert(BitConverter.IsLittleEndian); @@ -26,12 +27,20 @@ internal BlobWriter(int initialSize = 64) _buffer = new byte[initialSize]; } - internal BlobWriter(ObjectPool pool) + internal BlobBuilder(ObjectPool pool) : this() { _pool = pool; } + /// + /// Compares the current content of this writer with another one. + /// + public bool ContentEquals(BlobBuilder other) + { + return other != null && Length == other.Length && ByteSequenceComparer.Equals(_buffer, 0, other._buffer, 0, Length); + } + public byte[] Buffer => _buffer; public int Length => _length; @@ -643,7 +652,7 @@ public void WriteConstant(object value) } } - internal void WriteTo(BlobWriter stream) + internal void WriteTo(BlobBuilder stream) { stream.WriteBytes(_buffer, 0, _length); } @@ -662,7 +671,7 @@ internal void Clear() #region Poolable - private readonly ObjectPool _pool; + private readonly ObjectPool _pool; // // To implement Poolable, you need two things: @@ -685,23 +694,23 @@ public void Free() } //2) Expose the way to get an instance. - private static readonly ObjectPool s_poolInstance = CreatePool(); + private static readonly ObjectPool s_poolInstance = CreatePool(); - public static BlobWriter GetInstance() + public static BlobBuilder GetInstance() { var stream = s_poolInstance.Allocate(); return stream; } - public static ObjectPool CreatePool() + public static ObjectPool CreatePool() { return CreatePool(32); } - public static ObjectPool CreatePool(int size) + public static ObjectPool CreatePool(int size) { - ObjectPool pool = null; - pool = new ObjectPool(() => new BlobWriter(pool), size); + ObjectPool pool = null; + pool = new ObjectPool(() => new BlobBuilder(pool), size); return pool; } diff --git a/src/Compilers/Core/Portable/PEWriter/CustomDebugInfoWriter.cs b/src/Compilers/Core/Portable/PEWriter/CustomDebugInfoWriter.cs index b66a42232d4..71c90fbf311 100644 --- a/src/Compilers/Core/Portable/PEWriter/CustomDebugInfoWriter.cs +++ b/src/Compilers/Core/Portable/PEWriter/CustomDebugInfoWriter.cs @@ -78,7 +78,7 @@ public byte[] SerializeMethodDebugInfo(EmitContext context, IMethodBody methodBo } } - var customDebugInfo = ArrayBuilder.GetInstance(); + var customDebugInfo = ArrayBuilder.GetInstance(); SerializeIteratorClassMetadata(methodBody, customDebugInfo); @@ -114,7 +114,7 @@ public byte[] SerializeMethodDebugInfo(EmitContext context, IMethodBody methodBo } // internal for testing - internal static void SerializeCustomDebugInformation(EditAndContinueMethodDebugInformation debugInfo, ArrayBuilder customDebugInfo) + internal static void SerializeCustomDebugInformation(EditAndContinueMethodDebugInformation debugInfo, ArrayBuilder customDebugInfo) { if (!debugInfo.LocalSlots.IsDefaultOrEmpty) { @@ -127,9 +127,9 @@ internal static void SerializeCustomDebugInformation(EditAndContinueMethodDebugI } } - private static BlobWriter SerializeRecord(byte kind, Action data) + private static BlobBuilder SerializeRecord(byte kind, Action data) { - var cmw = new BlobWriter(); + var cmw = new BlobBuilder(); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte(kind); cmw.WriteByte(0); @@ -160,15 +160,15 @@ private static BlobWriter SerializeRecord(byte kind, Action data) return cmw; } - private static void SerializeIteratorClassMetadata(IMethodBody methodBody, ArrayBuilder customDebugInfo) + private static void SerializeIteratorClassMetadata(IMethodBody methodBody, ArrayBuilder customDebugInfo) { SerializeReferenceToIteratorClass(methodBody.StateMachineTypeName, customDebugInfo); } - private static void SerializeReferenceToIteratorClass(string iteratorClassName, ArrayBuilder customDebugInfo) + private static void SerializeReferenceToIteratorClass(string iteratorClassName, ArrayBuilder customDebugInfo) { if (iteratorClassName == null) return; - var cmw = new BlobWriter(); + var cmw = new BlobBuilder(); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte(CDI.CdiKindForwardIterator); cmw.Align(4); @@ -182,7 +182,7 @@ private static void SerializeReferenceToIteratorClass(string iteratorClassName, customDebugInfo.Add(cmw); } - private static void SerializeStateMachineLocalScopes(IMethodBody methodBody, ArrayBuilder customDebugInfo) + private static void SerializeStateMachineLocalScopes(IMethodBody methodBody, ArrayBuilder customDebugInfo) { var scopes = methodBody.StateMachineHoistedLocalScopes; if (scopes.IsDefaultOrEmpty) @@ -191,7 +191,7 @@ private static void SerializeStateMachineLocalScopes(IMethodBody methodBody, Arr } uint numberOfScopes = (uint)scopes.Length; - var cmw = new BlobWriter(); + var cmw = new BlobBuilder(); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte(CDI.CdiKindStateMachineHoistedLocalScopes); cmw.Align(4); @@ -215,7 +215,7 @@ private static void SerializeStateMachineLocalScopes(IMethodBody methodBody, Arr customDebugInfo.Add(cmw); } - private static void SerializeDynamicLocalInfo(IMethodBody methodBody, ArrayBuilder customDebugInfo) + private static void SerializeDynamicLocalInfo(IMethodBody methodBody, ArrayBuilder customDebugInfo) { if (!methodBody.HasDynamicLocalVariables) { @@ -248,7 +248,7 @@ private static void SerializeDynamicLocalInfo(IMethodBody methodBody, ArrayBuild Debug.Assert(dynamicLocals.Any()); // There must be at least one dynamic local if this point is reached const int blobSize = 200;//DynamicAttribute - 64, DynamicAttributeLength - 4, SlotIndex -4, IdentifierName - 128 - var cmw = new BlobWriter(); + var cmw = new BlobBuilder(); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte(CDI.CdiKindDynamicLocals); cmw.Align(4); @@ -307,18 +307,18 @@ private static void SerializeDynamicLocalInfo(IMethodBody methodBody, ArrayBuild } // internal for testing - internal static byte[] SerializeCustomDebugMetadata(ArrayBuilder recordWriters) + internal static byte[] SerializeCustomDebugMetadata(ArrayBuilder recordWriters) { if (recordWriters.Count == 0) { return null; } - BlobWriter cmw = BlobWriter.GetInstance(); + BlobBuilder cmw = BlobBuilder.GetInstance(); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte((byte)recordWriters.Count); // count cmw.Align(4); - foreach (BlobWriter recordWriter in recordWriters) + foreach (BlobBuilder recordWriter in recordWriters) { recordWriter.WriteTo(cmw); } @@ -328,7 +328,7 @@ internal static byte[] SerializeCustomDebugMetadata(ArrayBuilder rec return result; } - private void SerializeNamespaceScopeMetadata(EmitContext context, IMethodBody methodBody, ArrayBuilder customDebugInfo) + private void SerializeNamespaceScopeMetadata(EmitContext context, IMethodBody methodBody, ArrayBuilder customDebugInfo) { if (context.Module.GenerateVisualBasicStylePdb) { @@ -343,7 +343,7 @@ private void SerializeNamespaceScopeMetadata(EmitContext context, IMethodBody me } List usingCounts = new List(); - var cmw = new BlobWriter(); + var cmw = new BlobBuilder(); for (IImportScope scope = methodBody.ImportScope; scope != null; scope = scope.Parent) { usingCounts.Add((ushort)scope.GetUsedNamespaces().Length); @@ -421,9 +421,9 @@ private bool ShouldForwardToPreviousMethodWithUsingInfo(EmitContext context, IMe return s1 == s2; } - private void SerializeReferenceToMethodWithModuleInfo(ArrayBuilder customDebugInfo) + private void SerializeReferenceToMethodWithModuleInfo(ArrayBuilder customDebugInfo) { - BlobWriter cmw = new BlobWriter(12); + BlobBuilder cmw = new BlobBuilder(12); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte(CDI.CdiKindForwardToModuleInfo); cmw.Align(4); @@ -432,9 +432,9 @@ private void SerializeReferenceToMethodWithModuleInfo(ArrayBuilder c customDebugInfo.Add(cmw); } - private void SerializeReferenceToPreviousMethodWithUsingInfo(ArrayBuilder customDebugInfo) + private void SerializeReferenceToPreviousMethodWithUsingInfo(ArrayBuilder customDebugInfo) { - BlobWriter cmw = new BlobWriter(12); + BlobBuilder cmw = new BlobBuilder(12); cmw.WriteByte(CDI.CdiVersion); cmw.WriteByte(CDI.CdiKindForwardInfo); cmw.Align(4); diff --git a/src/Compilers/Core/Portable/PEWriter/ManagedResource.cs b/src/Compilers/Core/Portable/PEWriter/ManagedResource.cs index cac3325850b..1be8ad65d55 100644 --- a/src/Compilers/Core/Portable/PEWriter/ManagedResource.cs +++ b/src/Compilers/Core/Portable/PEWriter/ManagedResource.cs @@ -32,7 +32,7 @@ internal ManagedResource(string name, bool isPublic, Func streamProvider _isPublic = isPublic; } - public void WriteData(BlobWriter resourceWriter) + public void WriteData(BlobBuilder resourceWriter) { if (_fileReference == null) { diff --git a/src/Compilers/Core/Portable/PEWriter/MetadataHeapsBuilder.cs b/src/Compilers/Core/Portable/PEWriter/MetadataHeapsBuilder.cs index 48f828a3d1c..931e321e710 100644 --- a/src/Compilers/Core/Portable/PEWriter/MetadataHeapsBuilder.cs +++ b/src/Compilers/Core/Portable/PEWriter/MetadataHeapsBuilder.cs @@ -98,13 +98,13 @@ internal sealed class MetadataHeapsBuilder // #US heap private readonly Dictionary _userStrings = new Dictionary(); - private readonly BlobWriter _userStringWriter = new BlobWriter(1024); + private readonly BlobBuilder _userStringWriter = new BlobBuilder(1024); private readonly int _userStringHeapStartOffset; // #String heap private Dictionary _strings = new Dictionary(128); private int[] _stringIndexToHeapPositionMap; - private BlobWriter _stringWriter; + private BlobBuilder _stringWriter; private readonly int _stringHeapStartOffset; // #Blob heap @@ -114,7 +114,7 @@ internal sealed class MetadataHeapsBuilder // #GUID heap private readonly Dictionary _guids = new Dictionary(); - private readonly BlobWriter _guidWriter = new BlobWriter(16); // full metadata has just a single guid + private readonly BlobBuilder _guidWriter = new BlobBuilder(16); // full metadata has just a single guid private bool _streamsAreComplete; @@ -144,7 +144,7 @@ internal sealed class MetadataHeapsBuilder _guidWriter.WriteBytes(0, guidHeapStartOffset); } - internal BlobIdx GetBlobIndex(BlobWriter stream) + internal BlobIdx GetBlobIndex(BlobBuilder stream) { // TODO: avoid making a copy if the blob exists in the index return GetBlobIndex(stream.ToImmutableArray()); @@ -160,7 +160,7 @@ internal BlobIdx GetBlobIndex(ImmutableArray blob) index = new BlobIdx(_blobHeapSize); _blobs.Add(blob, index); - _blobHeapSize += BlobWriter.GetCompressedIntegerSize(blob.Length) + blob.Length; + _blobHeapSize += BlobBuilder.GetCompressedIntegerSize(blob.Length) + blob.Length; } return index; @@ -174,7 +174,7 @@ public BlobIdx GetConstantBlobIndex(object value) return this.GetBlobIndex(str); } - var writer = new BlobWriter(); + var writer = new BlobBuilder(); writer.WriteConstant(value); return this.GetBlobIndex(writer); } @@ -361,7 +361,7 @@ private void SerializeStringHeap() sorted.Sort(new SuffixSort()); _strings = null; - _stringWriter = new BlobWriter(1024); + _stringWriter = new BlobBuilder(1024); // Create VirtIdx to Idx map and add entry for empty string _stringIndexToHeapPositionMap = new int[sorted.Count + 1]; @@ -420,7 +420,7 @@ public int Compare(KeyValuePair xPair, KeyValuePair ::= AliasAssemblyReference writer.WriteByte((byte)ImportDefinitionKind.AliasAssemblyReference); @@ -275,7 +275,7 @@ private void SerializeImport(BlobWriter writer, AssemblyReferenceAlias alias) writer.WriteCompressedInteger((uint)GetOrAddAssemblyRefIndex(alias.Assembly)); } - private void SerializeImport(BlobWriter writer, UsedNamespaceOrType import) + private void SerializeImport(BlobBuilder writer, UsedNamespaceOrType import) { if (import.TargetXmlNamespaceOpt != null) { @@ -358,7 +358,7 @@ private void SerializeImport(BlobWriter writer, UsedNamespaceOrType import) private void DefineModuleImportScope() { // module-level import scope: - var writer = new BlobWriter(); + var writer = new BlobBuilder(); SerializeModuleDefaultNamespace(); @@ -406,7 +406,7 @@ private int GetImportScopeIndex(IImportScope scope, Dictionary= -1); - var writer = new BlobWriter(); + var writer = new BlobBuilder(); writer.WriteUInt32((uint)((long)asyncInfo.CatchHandlerOffset + 1)); @@ -537,7 +537,7 @@ private void SerializeStateMachineLocalScopes(IMethodBody methodBody, int method return; } - var writer = new BlobWriter(); + var writer = new BlobBuilder(); foreach (var scope in scopes) { @@ -564,7 +564,7 @@ private BlobIdx SerializeSequencePoints(int localSignatureRowId, ImmutableArray< return default(BlobIdx); } - var writer = new BlobWriter(); + var writer = new BlobBuilder(); int previousNonHiddenStartLine = -1; int previousNonHiddenStartColumn = -1; @@ -625,7 +625,7 @@ private BlobIdx SerializeSequencePoints(int localSignatureRowId, ImmutableArray< return _debugHeapsOpt.GetBlobIndex(writer); } - private void SerializeDeltaLinesAndColumns(BlobWriter writer, SequencePoint sequencePoint) + private void SerializeDeltaLinesAndColumns(BlobBuilder writer, SequencePoint sequencePoint) { int deltaLines = sequencePoint.EndLine - sequencePoint.StartLine; int deltaColumns = sequencePoint.EndColumn - sequencePoint.StartColumn; @@ -677,7 +677,7 @@ private BlobIdx SerializeDocumentName(string name) { Debug.Assert(name != null); - var writer = new BlobWriter(); + var writer = new BlobBuilder(); int c1 = Count(name, Separator1[0]); int c2 = Count(name, Separator2[0]); @@ -719,7 +719,7 @@ private void SerializeEncMethodDebugInformation(IMethodBody methodBody, int meth if (!encInfo.LocalSlots.IsDefaultOrEmpty) { - var writer = new BlobWriter(); + var writer = new BlobBuilder(); encInfo.SerializeLocalSlots(writer); @@ -733,7 +733,7 @@ private void SerializeEncMethodDebugInformation(IMethodBody methodBody, int meth if (!encInfo.Lambdas.IsDefaultOrEmpty) { - var writer = new BlobWriter(); + var writer = new BlobBuilder(); encInfo.SerializeLambdaMap(writer); @@ -750,7 +750,7 @@ private void SerializeEncMethodDebugInformation(IMethodBody methodBody, int meth #region Table Serialization - private void SerializeDocumentTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeDocumentTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _documentTable) { @@ -761,7 +761,7 @@ private void SerializeDocumentTable(BlobWriter writer, MetadataSizes metadataSiz } } - private void SerializeMethodBodyTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeMethodBodyTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _methodBodyTable) { @@ -769,7 +769,7 @@ private void SerializeMethodBodyTable(BlobWriter writer, MetadataSizes metadataS } } - private void SerializeLocalScopeTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeLocalScopeTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _localScopeTable) { @@ -782,7 +782,7 @@ private void SerializeLocalScopeTable(BlobWriter writer, MetadataSizes metadataS } } - private void SerializeLocalVariableTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeLocalVariableTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _localVariableTable) { @@ -792,7 +792,7 @@ private void SerializeLocalVariableTable(BlobWriter writer, MetadataSizes metada } } - private void SerializeLocalConstantTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeLocalConstantTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _localConstantTable) { @@ -801,7 +801,7 @@ private void SerializeLocalConstantTable(BlobWriter writer, MetadataSizes metada } } - private void SerializeImportScopeTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeImportScopeTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _importScopeTable) { @@ -810,7 +810,7 @@ private void SerializeImportScopeTable(BlobWriter writer, MetadataSizes metadata } } - private void SerializeStateMachineMethodTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeStateMachineMethodTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (var row in _stateMachineMethodTable) { @@ -819,7 +819,7 @@ private void SerializeStateMachineMethodTable(BlobWriter writer, MetadataSizes m } } - private void SerializeCustomDebugInformationTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeCustomDebugInformationTable(BlobBuilder writer, MetadataSizes metadataSizes) { // sort by Parent, Kind _customDebugInformationTable.Sort(CustomDebugInformationRowComparer.Instance); diff --git a/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs b/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs index ed5fee54896..dfe3ad57176 100644 --- a/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs +++ b/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs @@ -769,7 +769,7 @@ private BlobIdx GetCustomAttributeSignatureIndex(ICustomAttribute customAttribut return result; } - var writer = new BlobWriter(); + var writer = new BlobBuilder(); this.SerializeCustomAttributeSignature(customAttribute, false, writer); result = heaps.GetBlobIndex(writer); _customAttributeSignatureIndex.Add(customAttribute, result); @@ -885,7 +885,7 @@ internal BlobIdx GetFieldSignatureIndex(IFieldReference fieldReference) return result; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); this.SerializeFieldSignature(fieldReference, writer); result = heaps.GetBlobIndex(writer); _fieldSignatureIndex.Add(fieldReference, result); @@ -992,7 +992,7 @@ private uint GetImplementationCodedIndex(INamespaceTypeReference namespaceRef) return 0; } - private static uint GetManagedResourceOffset(ManagedResource resource, BlobWriter resourceWriter) + private static uint GetManagedResourceOffset(ManagedResource resource, BlobBuilder resourceWriter) { if (resource.ExternalFile != null) { @@ -1145,7 +1145,7 @@ internal BlobIdx GetMethodInstanceSignatureIndex(IGenericMethodInstanceReference return result; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); writer.WriteByte(0x0A); writer.WriteCompressedInteger(methodInstanceReference.GetGenericMethod(Context).GenericParameterCount); foreach (ITypeReference typeref in methodInstanceReference.GetGenericArguments(Context)) @@ -1167,7 +1167,7 @@ private BlobIdx GetMarshallingDescriptorIndex(IMarshallingInformation marshallin return result; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); this.SerializeMarshallingDescriptor(marshallingInformation, writer); result = heaps.GetBlobIndex(writer); _marshallingDescriptorIndex.Add(marshallingInformation, result); @@ -1227,7 +1227,7 @@ private BlobIdx GetMethodSignatureIndexAndBlob(IMethodReference methodReference, return existing.Key; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); this.SerializeSignature(methodReference, methodReference.GenericParameterCount, methodReference.ExtraParameters, writer); signatureBlob = writer.ToImmutableArray(); @@ -1239,7 +1239,7 @@ private BlobIdx GetMethodSignatureIndexAndBlob(IMethodReference methodReference, private BlobIdx GetGenericMethodInstanceIndex(IGenericMethodInstanceReference genericMethodInstanceReference) { - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); this.SerializeGenericMethodInstanceSignature(writer, genericMethodInstanceReference); BlobIdx result = heaps.GetBlobIndex(writer); writer.Free(); @@ -1310,7 +1310,7 @@ internal PrimitiveTypeCode GetConstantTypeCode(ILocalDefinition constant) private BlobIdx GetPermissionSetIndex(ImmutableArray permissionSet) { - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); BlobIdx result; try { @@ -1356,7 +1356,7 @@ private BlobIdx GetPropertySignatureIndex(IPropertyDefinition propertyDef) return existing.Key; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); this.SerializeSignature(propertyDef, 0, ImmutableArray.Empty, writer); var blob = writer.ToImmutableArray(); var result = heaps.GetBlobIndex(blob); @@ -1852,7 +1852,7 @@ internal BlobIdx GetTypeSpecSignatureIndex(ITypeReference typeReference) return result; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); this.SerializeTypeReference(typeReference, writer, false, true); result = heaps.GetBlobIndex(writer); _typeSpecSignatureIndex.Add(typeReference, result); @@ -1928,7 +1928,7 @@ internal int GetTokenForDefinition(IDefinition definition) throw ExceptionUtilities.Unreachable; } - private void SerializeCustomModifiers(ImmutableArray customModifiers, BlobWriter writer) + private void SerializeCustomModifiers(ImmutableArray customModifiers, BlobBuilder writer) { foreach (ICustomModifier customModifier in customModifiers) { @@ -1936,7 +1936,7 @@ private void SerializeCustomModifiers(ImmutableArray customModi } } - private void SerializeCustomModifier(ICustomModifier customModifier, BlobWriter writer) + private void SerializeCustomModifier(ICustomModifier customModifier, BlobBuilder writer) { if (customModifier.IsOptional) { @@ -1950,7 +1950,7 @@ private void SerializeCustomModifier(ICustomModifier customModifier, BlobWriter writer.WriteCompressedInteger(this.GetTypeDefOrRefCodedIndex(customModifier.GetModifier(Context), true)); } - private void SerializeMetadataHeader(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeMetadataHeader(BlobBuilder writer, MetadataSizes metadataSizes) { int startOffset = writer.Position; @@ -2016,7 +2016,7 @@ private void SerializeMetadataHeader(BlobWriter writer, MetadataSizes metadataSi Debug.Assert(endOffset - startOffset == metadataSizes.MetadataHeaderSize); } - private static void SerializeStreamHeader(ref int offsetFromStartOfMetadata, int alignedStreamSize, string streamName, BlobWriter writer) + private static void SerializeStreamHeader(ref int offsetFromStartOfMetadata, int alignedStreamSize, string streamName, BlobBuilder writer) { // 4 for the first uint (offset), 4 for the second uint (padded size), length of stream name + 1 for null terminator (then padded) int sizeOfStreamHeader = MetadataSizes.GetMetadataStreamHeaderSize(streamName); @@ -2041,10 +2041,10 @@ public void WriteMetadataAndIL(PdbWriter pdbWriterOpt, Stream metadataStream, St pdbWriterOpt?.SetMetadataEmitter(this); // TODO: we can precalculate the exact size of IL stream - var ilWriter = new BlobWriter(1024); - var metadataWriter = new BlobWriter(4 * 1024); - var mappedFieldDataWriter = new BlobWriter(0); - var managedResourceDataWriter = new BlobWriter(0); + var ilWriter = new BlobBuilder(1024); + var metadataWriter = new BlobBuilder(4 * 1024); + var mappedFieldDataWriter = new BlobBuilder(0); + var managedResourceDataWriter = new BlobBuilder(0); // Add 4B of padding to the start of the separated IL stream, // so that method RVAs, which are offsets to this stream, are never 0. @@ -2061,7 +2061,7 @@ public void WriteMetadataAndIL(PdbWriter pdbWriterOpt, Stream metadataStream, St SerializeMetadataAndIL( metadataWriter, - default(BlobWriter), + default(BlobBuilder), pdbWriterOpt, ilWriter, mappedFieldDataWriter, @@ -2081,12 +2081,12 @@ public void WriteMetadataAndIL(PdbWriter pdbWriterOpt, Stream metadataStream, St } public void SerializeMetadataAndIL( - BlobWriter metadataWriter, - BlobWriter debugMetadataWriterOpt, + BlobBuilder metadataWriter, + BlobBuilder debugMetadataWriterOpt, PdbWriter nativePdbWriterOpt, - BlobWriter ilWriter, - BlobWriter mappedFieldDataWriter, - BlobWriter managedResourceDataWriter, + BlobBuilder ilWriter, + BlobBuilder mappedFieldDataWriter, + BlobBuilder managedResourceDataWriter, int methodBodyStreamRva, Func calculateMappedFieldDataStreamRva, out int moduleVersionIdOffsetInMetadataStream, @@ -2197,7 +2197,7 @@ private static int CalculateStrongNameSignatureSize(IModule module) } private void SerializeMetadata( - BlobWriter metadataWriter, + BlobBuilder metadataWriter, MetadataSizes metadataSizes, int methodBodyStreamRva, int mappedFieldDataStreamRva, @@ -2243,7 +2243,7 @@ private int GetModuleVersionGuidOffsetInMetadataStream(int guidHeapOffsetInMetad } private void SerializeMetadataTables( - BlobWriter writer, + BlobBuilder writer, MetadataSizes metadataSizes, int methodBodyStreamRva, int mappedFieldDataStreamRva) @@ -2480,7 +2480,7 @@ private int GetModuleVersionGuidOffsetInMetadataStream(int guidHeapOffsetInMetad Debug.Assert(metadataSizes.MetadataTableStreamSize == endPosition - startPosition); } - private void PopulateTables(int[] methodBodyRvas, BlobWriter mappedFieldDataWriter, BlobWriter resourceWriter) + private void PopulateTables(int[] methodBodyRvas, BlobBuilder mappedFieldDataWriter, BlobBuilder resourceWriter) { this.PopulateAssemblyRefTableRows(); this.PopulateAssemblyTableRows(); @@ -3144,7 +3144,7 @@ private struct FieldMarshalRow { public uint Parent; public BlobIdx NativeType; private readonly List _fieldMarshalTable = new List(); - private void PopulateFieldRvaTableRows(BlobWriter mappedFieldDataWriter) + private void PopulateFieldRvaTableRows(BlobBuilder mappedFieldDataWriter) { foreach (IFieldDefinition fieldDef in this.GetFieldDefs()) { @@ -3329,7 +3329,7 @@ private struct InterfaceImplRow { public uint Class; public uint Interface; } private readonly List _interfaceImplTable = new List(); - private void PopulateManifestResourceTableRows(BlobWriter resourceDataWriter) + private void PopulateManifestResourceTableRows(BlobBuilder resourceDataWriter) { foreach (var resource in this.module.GetResources(Context)) { @@ -3740,7 +3740,7 @@ private struct TypeSpecRow { public BlobIdx Signature; } private readonly List _typeSpecTable = new List(); - private void SerializeTablesHeader(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeTablesHeader(BlobBuilder writer, MetadataSizes metadataSizes) { int startPosition = writer.Position; @@ -3780,7 +3780,7 @@ private void SerializeTablesHeader(BlobWriter writer, MetadataSizes metadataSize Debug.Assert(metadataSizes.CalculateTableStreamHeaderSize() == endPosition - startPosition); } - private static void SerializeStandalonePdbStream(BlobWriter writer, MetadataSizes metadataSizes, int entryPointToken) + private static void SerializeStandalonePdbStream(BlobBuilder writer, MetadataSizes metadataSizes, int entryPointToken) { int startPosition = writer.Position; @@ -3793,7 +3793,7 @@ private static void SerializeStandalonePdbStream(BlobWriter writer, MetadataSize Debug.Assert(metadataSizes.CalculateStandalonePdbStreamSize() == endPosition - startPosition); } - private static void SerializeRowCounts(BlobWriter writer, ImmutableArray rowCounts, ulong includeTables) + private static void SerializeRowCounts(BlobBuilder writer, ImmutableArray rowCounts, ulong includeTables) { for (int i = 0; i < rowCounts.Length; i++) { @@ -3808,7 +3808,7 @@ private static void SerializeRowCounts(BlobWriter writer, ImmutableArray ro } } - private void SerializeModuleTable(BlobWriter writer, MetadataSizes metadataSizes, MetadataHeapsBuilder heaps) + private void SerializeModuleTable(BlobBuilder writer, MetadataSizes metadataSizes, MetadataHeapsBuilder heaps) { writer.WriteUInt16(_moduleRow.Generation); writer.WriteReference((uint)heaps.ResolveStringIndex(_moduleRow.Name), metadataSizes.StringIndexSize); @@ -3817,7 +3817,7 @@ private void SerializeModuleTable(BlobWriter writer, MetadataSizes metadataSizes writer.WriteReference((uint)_moduleRow.EncBaseId, metadataSizes.GuidIndexSize); } - private void SerializeEncLogTable(BlobWriter writer) + private void SerializeEncLogTable(BlobBuilder writer) { foreach (EncLogRow encLog in _encLogTable) { @@ -3826,7 +3826,7 @@ private void SerializeEncLogTable(BlobWriter writer) } } - private void SerializeEncMapTable(BlobWriter writer) + private void SerializeEncMapTable(BlobBuilder writer) { foreach (EncMapRow encMap in _encMapTable) { @@ -3834,7 +3834,7 @@ private void SerializeEncMapTable(BlobWriter writer) } } - private void SerializeTypeRefTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeTypeRefTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (TypeRefRow typeRef in _typeRefTable) { @@ -3844,7 +3844,7 @@ private void SerializeTypeRefTable(BlobWriter writer, MetadataSizes metadataSize } } - private void SerializeTypeDefTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeTypeDefTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (TypeDefRow typeDef in _typeDefTable) { @@ -3857,7 +3857,7 @@ private void SerializeTypeDefTable(BlobWriter writer, MetadataSizes metadataSize } } - private void SerializeFieldTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeFieldTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (FieldDefRow fieldDef in _fieldDefTable) { @@ -3867,7 +3867,7 @@ private void SerializeFieldTable(BlobWriter writer, MetadataSizes metadataSizes) } } - private void SerializeMethodDefTable(BlobWriter writer, MetadataSizes metadataSizes, int methodBodyStreamRva) + private void SerializeMethodDefTable(BlobBuilder writer, MetadataSizes metadataSizes, int methodBodyStreamRva) { foreach (MethodRow method in _methodTable) { @@ -3888,7 +3888,7 @@ private void SerializeMethodDefTable(BlobWriter writer, MetadataSizes metadataSi } } - private void SerializeParamTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeParamTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ParamRow param in _paramTable) { @@ -3898,7 +3898,7 @@ private void SerializeParamTable(BlobWriter writer, MetadataSizes metadataSizes) } } - private void SerializeInterfaceImplTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeInterfaceImplTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (InterfaceImplRow interfaceImpl in _interfaceImplTable) { @@ -3907,7 +3907,7 @@ private void SerializeInterfaceImplTable(BlobWriter writer, MetadataSizes metada } } - private void SerializeMemberRefTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeMemberRefTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (MemberRefRow memberRef in _memberRefTable) { @@ -3917,7 +3917,7 @@ private void SerializeMemberRefTable(BlobWriter writer, MetadataSizes metadataSi } } - private void SerializeConstantTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeConstantTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ConstantRow constant in _constantTable) { @@ -3928,7 +3928,7 @@ private void SerializeConstantTable(BlobWriter writer, MetadataSizes metadataSiz } } - private void SerializeCustomAttributeTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeCustomAttributeTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (CustomAttributeRow customAttribute in _customAttributeTable) { @@ -3938,7 +3938,7 @@ private void SerializeCustomAttributeTable(BlobWriter writer, MetadataSizes meta } } - private void SerializeFieldMarshalTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeFieldMarshalTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (FieldMarshalRow fieldMarshal in _fieldMarshalTable) { @@ -3947,7 +3947,7 @@ private void SerializeFieldMarshalTable(BlobWriter writer, MetadataSizes metadat } } - private void SerializeDeclSecurityTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeDeclSecurityTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (DeclSecurityRow declSecurity in _declSecurityTable) { @@ -3957,7 +3957,7 @@ private void SerializeDeclSecurityTable(BlobWriter writer, MetadataSizes metadat } } - private void SerializeClassLayoutTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeClassLayoutTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ClassLayoutRow classLayout in _classLayoutTable) { @@ -3967,7 +3967,7 @@ private void SerializeClassLayoutTable(BlobWriter writer, MetadataSizes metadata } } - private void SerializeFieldLayoutTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeFieldLayoutTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (FieldLayoutRow fieldLayout in _fieldLayoutTable) { @@ -3976,7 +3976,7 @@ private void SerializeFieldLayoutTable(BlobWriter writer, MetadataSizes metadata } } - private void SerializeStandAloneSigTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeStandAloneSigTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (BlobIdx blobIndex in this.GetStandAloneSignatures()) { @@ -3984,7 +3984,7 @@ private void SerializeStandAloneSigTable(BlobWriter writer, MetadataSizes metada } } - private void SerializeEventMapTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeEventMapTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (EventMapRow eventMap in _eventMapTable) { @@ -3993,7 +3993,7 @@ private void SerializeEventMapTable(BlobWriter writer, MetadataSizes metadataSiz } } - private void SerializeEventTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeEventTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (EventRow eventRow in _eventTable) { @@ -4003,7 +4003,7 @@ private void SerializeEventTable(BlobWriter writer, MetadataSizes metadataSizes) } } - private void SerializePropertyMapTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializePropertyMapTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (PropertyMapRow propertyMap in _propertyMapTable) { @@ -4012,7 +4012,7 @@ private void SerializePropertyMapTable(BlobWriter writer, MetadataSizes metadata } } - private void SerializePropertyTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializePropertyTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (PropertyRow property in _propertyTable) { @@ -4022,7 +4022,7 @@ private void SerializePropertyTable(BlobWriter writer, MetadataSizes metadataSiz } } - private void SerializeMethodSemanticsTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeMethodSemanticsTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (MethodSemanticsRow methodSemantic in _methodSemanticsTable) { @@ -4032,7 +4032,7 @@ private void SerializeMethodSemanticsTable(BlobWriter writer, MetadataSizes meta } } - private void SerializeMethodImplTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeMethodImplTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (MethodImplRow methodImpl in _methodImplTable) { @@ -4042,7 +4042,7 @@ private void SerializeMethodImplTable(BlobWriter writer, MetadataSizes metadataS } } - private void SerializeModuleRefTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeModuleRefTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ModuleRefRow moduleRef in _moduleRefTable) { @@ -4050,7 +4050,7 @@ private void SerializeModuleRefTable(BlobWriter writer, MetadataSizes metadataSi } } - private void SerializeTypeSpecTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeTypeSpecTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (TypeSpecRow typeSpec in _typeSpecTable) { @@ -4058,7 +4058,7 @@ private void SerializeTypeSpecTable(BlobWriter writer, MetadataSizes metadataSiz } } - private void SerializeImplMapTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeImplMapTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ImplMapRow implMap in _implMapTable) { @@ -4069,7 +4069,7 @@ private void SerializeImplMapTable(BlobWriter writer, MetadataSizes metadataSize } } - private void SerializeFieldRvaTable(BlobWriter writer, MetadataSizes metadataSizes, int mappedFieldDataStreamRva) + private void SerializeFieldRvaTable(BlobBuilder writer, MetadataSizes metadataSizes, int mappedFieldDataStreamRva) { foreach (FieldRvaRow fieldRva in _fieldRvaTable) { @@ -4078,7 +4078,7 @@ private void SerializeFieldRvaTable(BlobWriter writer, MetadataSizes metadataSiz } } - private void SerializeAssemblyTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeAssemblyTable(BlobBuilder writer, MetadataSizes metadataSizes) { IAssembly assembly = this.module.AsAssembly; if (assembly == null) @@ -4098,7 +4098,7 @@ private void SerializeAssemblyTable(BlobWriter writer, MetadataSizes metadataSiz writer.WriteReference((uint)heaps.ResolveStringIndex(_assemblyCulture), metadataSizes.StringIndexSize); } - private void SerializeAssemblyRefTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeAssemblyRefTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (AssemblyRefTableRow assemblyRef in _assemblyRefTable) { @@ -4125,7 +4125,7 @@ private void SerializeAssemblyRefTable(BlobWriter writer, MetadataSizes metadata } } - private void SerializeFileTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeFileTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (FileTableRow fileReference in _fileTable) { @@ -4135,7 +4135,7 @@ private void SerializeFileTable(BlobWriter writer, MetadataSizes metadataSizes) } } - private void SerializeExportedTypeTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeExportedTypeTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ExportedTypeRow exportedType in _exportedTypeTable) { @@ -4147,7 +4147,7 @@ private void SerializeExportedTypeTable(BlobWriter writer, MetadataSizes metadat } } - private void SerializeManifestResourceTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeManifestResourceTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (ManifestResourceRow manifestResource in _manifestResourceTable) { @@ -4158,7 +4158,7 @@ private void SerializeManifestResourceTable(BlobWriter writer, MetadataSizes met } } - private void SerializeNestedClassTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeNestedClassTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (NestedClassRow nestedClass in _nestedClassTable) { @@ -4167,7 +4167,7 @@ private void SerializeNestedClassTable(BlobWriter writer, MetadataSizes metadata } } - private void SerializeGenericParamTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeGenericParamTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (GenericParamRow genericParam in _genericParamTable) { @@ -4178,7 +4178,7 @@ private void SerializeGenericParamTable(BlobWriter writer, MetadataSizes metadat } } - private void SerializeMethodSpecTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeMethodSpecTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (MethodSpecRow methodSpec in _methodSpecTable) { @@ -4187,7 +4187,7 @@ private void SerializeMethodSpecTable(BlobWriter writer, MetadataSizes metadataS } } - private void SerializeGenericParamConstraintTable(BlobWriter writer, MetadataSizes metadataSizes) + private void SerializeGenericParamConstraintTable(BlobBuilder writer, MetadataSizes metadataSizes) { foreach (GenericParamConstraintRow genericParamConstraint in _genericParamConstraintTable) { @@ -4196,7 +4196,7 @@ private void SerializeGenericParamConstraintTable(BlobWriter writer, MetadataSiz } } - private int[] SerializeMethodBodies(BlobWriter writer, PdbWriter pdbWriterOpt) + private int[] SerializeMethodBodies(BlobBuilder writer, PdbWriter pdbWriterOpt) { CustomDebugInfoWriter customDebugInfoWriter = (pdbWriterOpt != null) ? new CustomDebugInfoWriter(pdbWriterOpt) : null; @@ -4253,7 +4253,7 @@ private int[] SerializeMethodBodies(BlobWriter writer, PdbWriter pdbWriterOpt) return rvas; } - private int SerializeMethodBody(IMethodBody methodBody, BlobWriter writer, uint localSignatureToken) + private int SerializeMethodBody(IMethodBody methodBody, BlobBuilder writer, uint localSignatureToken) { int ilLength = methodBody.IL.Length; uint numberOfExceptionHandlers = (uint)methodBody.ExceptionRegions.Length; @@ -4322,7 +4322,7 @@ protected virtual int SerializeLocalVariablesSignature(IMethodBody body) return 0; } - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); writer.WriteByte(0x07); writer.WriteCompressedInteger((uint)localVariables.Length); foreach (ILocalDefinition local in localVariables) @@ -4337,7 +4337,7 @@ protected virtual int SerializeLocalVariablesSignature(IMethodBody body) return signatureIndex; } - protected void SerializeLocalVariableSignature(BlobWriter writer, ILocalDefinition local) + protected void SerializeLocalVariableSignature(BlobBuilder writer, ILocalDefinition local) { if (module.IsPlatformType(local.Type, PlatformType.SystemTypedReference)) { @@ -4366,7 +4366,7 @@ protected void SerializeLocalVariableSignature(BlobWriter writer, ILocalDefiniti internal int SerializeLocalConstantStandAloneSignature(ILocalDefinition localConstant) { - var writer = BlobWriter.GetInstance(); + var writer = BlobBuilder.GetInstance(); writer.WriteByte(0x06); foreach (ICustomModifier modifier in localConstant.CustomModifiers) @@ -4532,7 +4532,7 @@ private byte[] SerializeMethodBodyIL(IMethodBody methodBody) return methodBodyIL; } - private void SerializeMethodBodyExceptionHandlerTable(IMethodBody methodBody, uint numberOfExceptionHandlers, BlobWriter writer) + private void SerializeMethodBodyExceptionHandlerTable(IMethodBody methodBody, uint numberOfExceptionHandlers, BlobBuilder writer) { var regions = methodBody.ExceptionRegions; bool useSmallExceptionHeaders = MayUseSmallExceptionHeaders(numberOfExceptionHandlers, regions); @@ -4558,7 +4558,7 @@ private void SerializeMethodBodyExceptionHandlerTable(IMethodBody methodBody, ui } } - private void SerializeExceptionRegion(ExceptionHandlerRegion region, bool useSmallExceptionHeaders, BlobWriter writer) + private void SerializeExceptionRegion(ExceptionHandlerRegion region, bool useSmallExceptionHeaders, BlobBuilder writer) { writer.WriteUInt16((ushort)region.HandlerKind); @@ -4621,7 +4621,7 @@ private static bool MayUseSmallExceptionHeaders(uint numberOfExceptionHandlers, return true; } - private void SerializeParameterInformation(IParameterTypeInformation parameterTypeInformation, BlobWriter writer) + private void SerializeParameterInformation(IParameterTypeInformation parameterTypeInformation, BlobBuilder writer) { bool hasByRefBeforeCustomModifiers = parameterTypeInformation.HasByRefBeforeCustomModifiers; @@ -4645,14 +4645,14 @@ private void SerializeParameterInformation(IParameterTypeInformation parameterTy this.SerializeTypeReference(parameterTypeInformation.GetType(Context), writer, false, true); } - private void SerializeFieldSignature(IFieldReference fieldReference, BlobWriter writer) + private void SerializeFieldSignature(IFieldReference fieldReference, BlobBuilder writer) { writer.WriteByte(0x06); this.SerializeTypeReference(fieldReference.GetType(Context), writer, false, true); } - private void SerializeGenericMethodInstanceSignature(BlobWriter writer, IGenericMethodInstanceReference genericMethodInstanceReference) + private void SerializeGenericMethodInstanceSignature(BlobBuilder writer, IGenericMethodInstanceReference genericMethodInstanceReference) { writer.WriteByte(0x0a); writer.WriteCompressedInteger(genericMethodInstanceReference.GetGenericMethod(Context).GenericParameterCount); @@ -4662,7 +4662,7 @@ private void SerializeGenericMethodInstanceSignature(BlobWriter writer, IGeneric } } - private void SerializeCustomAttributeSignature(ICustomAttribute customAttribute, bool writeOnlyNamedArguments, BlobWriter writer) + private void SerializeCustomAttributeSignature(ICustomAttribute customAttribute, bool writeOnlyNamedArguments, BlobBuilder writer) { if (!writeOnlyNamedArguments) { @@ -4711,7 +4711,7 @@ private void SerializeCustomAttributeSignature(ICustomAttribute customAttribute, } } - private void SerializeMetadataExpression(BlobWriter writer, IMetadataExpression expression, ITypeReference targetType) + private void SerializeMetadataExpression(BlobBuilder writer, IMetadataExpression expression, ITypeReference targetType) { IMetadataCreateArray a = expression as IMetadataCreateArray; if (a != null) @@ -4795,7 +4795,7 @@ private void SerializeMetadataExpression(BlobWriter writer, IMetadataExpression } } - private void SerializeMarshallingDescriptor(IMarshallingInformation marshallingInformation, BlobWriter writer) + private void SerializeMarshallingDescriptor(IMarshallingInformation marshallingInformation, BlobBuilder writer) { writer.WriteCompressedInteger((uint)marshallingInformation.UnmanagedType); switch (marshallingInformation.UnmanagedType) @@ -4890,7 +4890,7 @@ private void SerializeMarshallingDescriptor(IMarshallingInformation marshallingI } } - private void SerializeTypeName(ITypeReference typeReference, BlobWriter writer) + private void SerializeTypeName(ITypeReference typeReference, BlobBuilder writer) { writer.WriteSerializedString(typeReference.GetSerializedTypeName(this.Context)); } @@ -4943,7 +4943,7 @@ internal static string StrongName(IAssemblyReference assemblyReference) return pooled.ToStringAndFree(); } - private void SerializePermissionSet(IEnumerable permissionSet, BlobWriter writer) + private void SerializePermissionSet(IEnumerable permissionSet, BlobBuilder writer) { EmitContext context = this.Context; foreach (ICustomAttribute customAttribute in permissionSet) @@ -4961,7 +4961,7 @@ private void SerializePermissionSet(IEnumerable permissionSet, } writer.WriteSerializedString(typeName); - var customAttributeWriter = new BlobWriter(); + var customAttributeWriter = new BlobBuilder(); this.SerializeCustomAttributeSignature(customAttribute, true, customAttributeWriter); writer.WriteCompressedInteger((uint)customAttributeWriter.Length); customAttributeWriter.WriteTo(writer); @@ -4969,7 +4969,7 @@ private void SerializePermissionSet(IEnumerable permissionSet, // TODO: xml for older platforms } - private void SerializeSignature(ISignature signature, ushort genericParameterCount, ImmutableArray extraArgumentTypes, BlobWriter writer) + private void SerializeSignature(ISignature signature, ushort genericParameterCount, ImmutableArray extraArgumentTypes, BlobBuilder writer) { byte header = (byte)signature.CallingConvention; if (signature is IPropertyDefinition) @@ -5014,7 +5014,7 @@ private void SerializeSignature(ISignature signature, ushort genericParameterCou } } - private void SerializeTypeReference(ITypeReference typeReference, BlobWriter writer, bool noTokens, bool treatRefAsPotentialTypeSpec) + private void SerializeTypeReference(ITypeReference typeReference, BlobBuilder writer, bool noTokens, bool treatRefAsPotentialTypeSpec) { while (true) { diff --git a/src/Compilers/Core/Portable/PEWriter/PeWriter.cs b/src/Compilers/Core/Portable/PEWriter/PeWriter.cs index b1fdcabd019..9d41ff47612 100644 --- a/src/Compilers/Core/Portable/PEWriter/PeWriter.cs +++ b/src/Compilers/Core/Portable/PEWriter/PeWriter.cs @@ -39,7 +39,7 @@ internal sealed class PeWriter private readonly IEnumerable _nativeResourcesOpt; private readonly ResourceSection _nativeResourceSectionOpt; - private readonly BlobWriter _win32ResourceWriter = new BlobWriter(1024); + private readonly BlobBuilder _win32ResourceWriter = new BlobBuilder(1024); private PeWriter( ModulePropertiesForSerialization properties, @@ -87,12 +87,12 @@ internal sealed class PeWriter private bool WritePeToStream(MetadataWriter mdWriter, Func getPeStream, Func getPortablePdbStreamOpt, PdbWriter nativePdbWriterOpt) { // TODO: we can precalculate the exact size of IL stream - var ilWriter = new BlobWriter(32 * 1024); - var metadataWriter = new BlobWriter(16 * 1024); - var mappedFieldDataWriter = new BlobWriter(); - var managedResourceWriter = new BlobWriter(1024); + var ilWriter = new BlobBuilder(32 * 1024); + var metadataWriter = new BlobBuilder(16 * 1024); + var mappedFieldDataWriter = new BlobBuilder(); + var managedResourceWriter = new BlobBuilder(1024); - var debugMetadataWriterOpt = (getPortablePdbStreamOpt != null) ? new BlobWriter(16 * 1024) : null; + var debugMetadataWriterOpt = (getPortablePdbStreamOpt != null) ? new BlobBuilder(16 * 1024) : null; nativePdbWriterOpt?.SetMetadataEmitter(mdWriter); @@ -824,7 +824,7 @@ private void SerializeWin32Resources(IEnumerable theResources, i languageDirectory.Entries.Add(r); } - var dataWriter = BlobWriter.GetInstance(); + var dataWriter = BlobBuilder.GetInstance(); //'dataWriter' is where opaque resource data goes as well as strings that are used as type or name identifiers this.WriteDirectory(typeDirectory, _win32ResourceWriter, 0, 0, sizeOfDirectoryTree, resourcesRva, dataWriter); @@ -838,7 +838,7 @@ private void SerializeWin32Resources(IEnumerable theResources, i dataWriter.Free(); } - private void WriteDirectory(Directory directory, BlobWriter writer, uint offset, uint level, uint sizeOfDirectoryTree, int virtualAddressBase, BlobWriter dataWriter) + private void WriteDirectory(Directory directory, BlobBuilder writer, uint offset, uint level, uint sizeOfDirectoryTree, int virtualAddressBase, BlobBuilder dataWriter) { writer.WriteUInt32(0); // Characteristics writer.WriteUInt32(0); // Timestamp @@ -1009,7 +1009,7 @@ private void SerializeWin32Resources(ResourceSection resourceSections, int resou private void WriteHeaders(Stream peStream, NtHeader ntHeader, CoffHeader coffHeader, List sectionHeaders, out long ntHeaderTimestampPosition) { - var writer = new BlobWriter(1024); + var writer = new BlobBuilder(1024); // MS-DOS stub (128 bytes) writer.WriteBytes(s_dosHeader); @@ -1129,7 +1129,7 @@ private void WriteHeaders(Stream peStream, NtHeader ntHeader, CoffHeader coffHea writer.WriteTo(peStream); } - private static void WriteSectionHeader(SectionHeader sectionHeader, BlobWriter writer) + private static void WriteSectionHeader(SectionHeader sectionHeader, BlobBuilder writer) { if (sectionHeader.VirtualSize == 0) { @@ -1165,10 +1165,10 @@ private static void WriteSectionHeader(SectionHeader sectionHeader, BlobWriter w int importTableRva, int importAddressTableRva, int entryPointToken, - BlobWriter metadataWriter, - BlobWriter ilWriter, - BlobWriter mappedFieldDataWriter, - BlobWriter managedResourceWriter, + BlobBuilder metadataWriter, + BlobBuilder ilWriter, + BlobBuilder mappedFieldDataWriter, + BlobBuilder managedResourceWriter, MetadataSizes metadataSizes, ContentId nativePdbContentId, ContentId portablePdbContentId, @@ -1227,7 +1227,7 @@ private static void WriteSectionHeader(SectionHeader sectionHeader, BlobWriter w private void WriteImportAddressTable(Stream peStream, int importTableRva) { - var writer = new BlobWriter(SizeOfImportAddressTable); + var writer = new BlobBuilder(SizeOfImportAddressTable); int ilRVA = importTableRva + 40; int hintRva = ilRVA + (_is32bit ? 12 : 16); @@ -1249,7 +1249,7 @@ private void WriteImportAddressTable(Stream peStream, int importTableRva) private void WriteImportTable(Stream peStream, int importTableRva, int importAddressTableRva) { - var writer = new BlobWriter(SizeOfImportTable); + var writer = new BlobBuilder(SizeOfImportTable); int ilRVA = importTableRva + 40; int hintRva = ilRVA + (_is32bit ? 12 : 16); int nameRva = hintRva + 12 + 2; @@ -1291,7 +1291,7 @@ private void WriteImportTable(Stream peStream, int importTableRva, int importAdd private static void WriteNameTable(Stream peStream) { - var writer = new BlobWriter(SizeOfNameTable); + var writer = new BlobBuilder(SizeOfNameTable); foreach (char ch in CorEntryPointDll) { writer.WriteByte((byte)ch); @@ -1306,7 +1306,7 @@ private static void WriteNameTable(Stream peStream) private static void WriteCorHeader(Stream peStream, CorHeader corHeader) { - var writer = new BlobWriter(CorHeaderSize); + var writer = new BlobBuilder(CorHeaderSize); writer.WriteUInt32(CorHeaderSize); writer.WriteUInt16(corHeader.MajorRuntimeVersion); writer.WriteUInt16(corHeader.MinorRuntimeVersion); @@ -1344,7 +1344,7 @@ private void WriteDebugTable(Stream peStream, SectionHeader textSection, Content { Debug.Assert(nativePdbContentId.IsDefault ^ portablePdbContentId.IsDefault); - var writer = new BlobWriter(); + var writer = new BlobBuilder(); // characteristics: writer.WriteUInt32(0); @@ -1397,7 +1397,7 @@ private void WriteDebugTable(Stream peStream, SectionHeader textSection, Content private void WriteRuntimeStartupStub(Stream peStream, int importAddressTableRva) { - var writer = new BlobWriter(16); + var writer = new BlobBuilder(16); // entry point code, consisting of a jump indirect to _CorXXXMain if (_is32bit) { @@ -1433,7 +1433,7 @@ private void WriteRuntimeStartupStub(Stream peStream, int importAddressTableRva) private void WriteRelocSection(Stream peStream, SectionHeader relocSection, int entryPointAddress) { peStream.Position = relocSection.PointerToRawData; - var writer = new BlobWriter(relocSection.SizeOfRawData); + var writer = new BlobBuilder(relocSection.SizeOfRawData); writer.WriteUInt32((((uint)entryPointAddress + 2) / 0x1000) * 0x1000); writer.WriteUInt32(_properties.Requires64bits && !_properties.RequiresAmdInstructionSet ? 14u : 12u); uint offsetWithinPage = ((uint)entryPointAddress + 2) % 0x1000; diff --git a/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb b/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb index 0c1c8e4d799..2d9e5c9e95b 100644 --- a/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb +++ b/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb @@ -264,14 +264,14 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen ' the initial size is a guess. ' there is no point to be precise here as MemoryStream always has N + 1 storage ' and will need to be trimmed regardless - Dim writer As New Cci.BlobWriter(initializers.Length * 4) + Dim writer As New Cci.BlobBuilder(initializers.Length * 4) SerializeArrayRecursive(writer, initializers) Return writer.ToImmutableArray() End Function - Private Sub SerializeArrayRecursive(bw As Cci.BlobWriter, inits As ImmutableArray(Of BoundExpression)) + Private Sub SerializeArrayRecursive(bw As Cci.BlobBuilder, inits As ImmutableArray(Of BoundExpression)) If inits.Length <> 0 Then If inits(0).Kind = BoundKind.ArrayInitialization Then For Each init In inits diff --git a/src/Test/Utilities/ILBuilderVisualizer.cs b/src/Test/Utilities/ILBuilderVisualizer.cs index b3e67b39483..9ec0ed1e82f 100644 --- a/src/Test/Utilities/ILBuilderVisualizer.cs +++ b/src/Test/Utilities/ILBuilderVisualizer.cs @@ -187,10 +187,10 @@ private static void DumpBlockIL(ILBuilder.BasicBlock block, StringBuilder sb) private static void DumpBasicBlockIL(ILBuilder.BasicBlock block, StringBuilder sb) { - var instrCnt = (int)block.RegularInstructionsLength; + var instrCnt = block.RegularInstructionsLength; if (instrCnt != 0) { - byte[] il = block.RegularInstructions.Buffer; + byte[] il = block.RegularInstructions.ToArray(); new ILBuilderVisualizer(block.builder.module).DumpILBlock(il, instrCnt, sb, SpecializedCollections.EmptyArray(), block.Start); } @@ -219,8 +219,8 @@ private static void DumpBasicBlockIL(ILBuilder.BasicBlock block, StringBuilder s private static void DumpSwitchBlockIL(ILBuilder.SwitchBlock block, StringBuilder sb) { - byte[] il = block.RegularInstructions.Buffer; - new ILBuilderVisualizer(block.builder.module).DumpILBlock(il, (int)block.RegularInstructionsLength, sb, SpecializedCollections.EmptyArray(), block.Start); + byte[] il = block.RegularInstructions.ToArray(); + new ILBuilderVisualizer(block.builder.module).DumpILBlock(il, il.Length, sb, SpecializedCollections.EmptyArray(), block.Start); // switch (N, t1, t2... tN) // IL ==> ILOpCode.Switch < unsigned int32 > < int32 >... < int32 > -- GitLab