@@ -9,7 +9,6 @@ open System.IO
99open System.Reflection
1010open System.Reflection .Metadata
1111open System.Reflection .Metadata .Ecma335
12- open System.Reflection .Metadata .Ecma335 .Blobs
1312open System.Reflection .PortableExecutable
1413open Internal.Utilities
1514open Microsoft.FSharp .Compiler .AbstractIL .IL
@@ -222,10 +221,10 @@ let writePortablePdbInfo (fixupSPs:bool) showTimes fpdb (info:PdbData) =
222221 writer.WriteByte( byte( separator))
223222
224223 for part in name.Split( [| separator |] ) do
225- let partIndex = MetadataTokens.GetHeapOffset( BlobHandle.op_ Implicit( metadata.GetBlobUtf8 ( part)))
224+ let partIndex = MetadataTokens.GetHeapOffset( BlobHandle.op_ Implicit( metadata.GetOrAddBlobUTF8 ( part)))
226225 writer.WriteCompressedInteger( int( partIndex))
227226
228- metadata.GetBlob ( writer);
227+ metadata.GetOrAddBlob ( writer);
229228
230229 let corSymLanguageTypeFSharp = System.Guid( 0xAB4F38C9 u, 0xB6E6 us, 0x43ba us, 0xBE uy, 0x3B uy, 0x58 uy, 0x08 uy, 0x0B uy, 0x2C uy, 0xCC uy, 0xE3 uy)
231230 let documentIndex =
@@ -236,14 +235,14 @@ let writePortablePdbInfo (fixupSPs:bool) showTimes fpdb (info:PdbData) =
236235 match checkSum doc.File with
237236 | Some ( hashAlg, checkSum) ->
238237 serializeDocumentName doc.File,
239- metadata.GetGuid ( hashAlg),
240- metadata.GetBlob ( checkSum.ToImmutableArray()),
241- metadata.GetGuid ( corSymLanguageTypeFSharp)
238+ metadata.GetOrAddGuid ( hashAlg),
239+ metadata.GetOrAddBlob ( checkSum.ToImmutableArray()),
240+ metadata.GetOrAddGuid ( corSymLanguageTypeFSharp)
242241 | None ->
243242 serializeDocumentName doc.File,
244- metadata.GetGuid ( System.Guid.Empty),
245- metadata.GetBlob ( ImmutableArray< byte>. Empty),
246- metadata.GetGuid ( corSymLanguageTypeFSharp)
243+ metadata.GetOrAddGuid ( System.Guid.Empty),
244+ metadata.GetOrAddBlob ( ImmutableArray< byte>. Empty),
245+ metadata.GetOrAddGuid ( corSymLanguageTypeFSharp)
247246 |> metadata.AddDocument
248247 index.Add( doc.File, handle)
249248 index
@@ -332,7 +331,7 @@ let writePortablePdbInfo (fixupSPs:bool) showTimes fpdb (info:PdbData) =
332331 previousNonHiddenStartLine <- sps.[ i]. Line
333332 previousNonHiddenStartColumn <- sps.[ i]. Column
334333
335- getDocumentHandle singleDocumentIndex, metadata.GetBlob ( builder)
334+ getDocumentHandle singleDocumentIndex, metadata.GetOrAddBlob ( builder)
336335
337336 // Write the scopes
338337 let mutable lastLocalVariableHandle = Unchecked.defaultof< LocalVariableHandle>
@@ -347,7 +346,7 @@ let writePortablePdbInfo (fixupSPs:bool) showTimes fpdb (info:PdbData) =
347346 scope.StartOffset,
348347 scope.EndOffset - scope.StartOffset) |> ignore
349348 for localVariable in scope.Locals do
350- lastLocalVariableHandle <- metadata.AddLocalVariable( LocalVariableAttributes.None, localVariable.Index, metadata.GetString ( localVariable.Name))
349+ lastLocalVariableHandle <- metadata.AddLocalVariable( LocalVariableAttributes.None, localVariable.Index, metadata.GetOrAddString ( localVariable.Name))
351350 scope.Children |> Array.iter ( writePdbScope false )
352351
353352 writePdbScope true minfo.RootScope
@@ -358,10 +357,9 @@ let writePortablePdbInfo (fixupSPs:bool) showTimes fpdb (info:PdbData) =
358357 | None -> MetadataTokens.MethodDefinitionHandle( 0 )
359358 | Some x -> MetadataTokens.MethodDefinitionHandle( x)
360359
361- let pdbContentId = ContentId( info.ModuleID, BitConverter.GetBytes( info.Timestamp))
362- let serializer = StandaloneDebugMetadataSerializer( metadata, externalRowCounts, entryPoint, false )
360+ let serializer = PortablePdbBuilder( metadata, externalRowCounts, entryPoint, null )
363361 let blobBuilder = new BlobBuilder()
364- serializer.SerializeMetadata ( blobBuilder, ( fun builder -> pdbContentId ) ) |> ignore
362+ serializer.Serialize ( blobBuilder) |> ignore
365363
366364 reportTime showTimes " PDB: Created"
367365 use portablePdbStream = new FileStream( fpdb, FileMode.Create, FileAccess.ReadWrite)
0 commit comments