Make Stacktrace Symbols Cache Aware of Unloadability (phase 1) (dotnet/corefx#35541)
authorJohn Salem <josalem@microsoft.com>
Sat, 2 Mar 2019 00:22:29 +0000 (16:22 -0800)
committerGitHub <noreply@github.com>
Sat, 2 Mar 2019 00:22:29 +0000 (16:22 -0800)
Adds GetSourceLineInfo overload that consumes an Assembly, but does not use it.  A follow-up change will use that assembly for caching the MetadataReaderProvider.

dotnet/coreclrdotnet/corefx#20179

Commit migrated from https://github.com/dotnet/corefx/commit/fa2a3ea5be4a317402e47674c9a1286da24c6d68

src/libraries/System.Diagnostics.StackTrace/src/System/Diagnostics/StackTraceSymbols.CoreCLR.cs

index dc269f5..bdfb0ae 100644 (file)
@@ -4,6 +4,7 @@
 
 using System.Collections.Concurrent;
 using System.IO;
+using System.Reflection;
 using System.Reflection.Metadata;
 using System.Reflection.Metadata.Ecma335;
 using System.Reflection.PortableExecutable;
@@ -48,7 +49,28 @@ namespace System.Diagnostics
         /// <param name="sourceFile">source file return</param>
         /// <param name="sourceLine">line number return</param>
         /// <param name="sourceColumn">column return</param>
-        internal void GetSourceLineInfo(string assemblyPath, IntPtr loadedPeAddress, int loadedPeSize, 
+        internal void GetSourceLineInfo(string assemblyPath, IntPtr loadedPeAddress, int loadedPeSize,
+            IntPtr inMemoryPdbAddress, int inMemoryPdbSize, int methodToken, int ilOffset,
+            out string sourceFile, out int sourceLine, out int sourceColumn)
+        {
+            GetSourceLineInfo(null, assemblyPath, loadedPeAddress, loadedPeSize, inMemoryPdbAddress, inMemoryPdbSize, methodToken, ilOffset, out sourceFile, out sourceLine, out sourceColumn);
+        }
+
+        /// <summary>
+        /// Returns the source file and line number information for the method.
+        /// </summary>
+        /// <param name="assembly">Will be used by upcoming change</param>
+        /// <param name="assemblyPath">file path of the assembly or null</param>
+        /// <param name="loadedPeAddress">loaded PE image address or zero</param>
+        /// <param name="loadedPeSize">loaded PE image size</param>
+        /// <param name="inMemoryPdbAddress">in memory PDB address or zero</param>
+        /// <param name="inMemoryPdbSize">in memory PDB size</param>
+        /// <param name="methodToken">method token</param>
+        /// <param name="ilOffset">il offset of the stack frame</param>
+        /// <param name="sourceFile">source file return</param>
+        /// <param name="sourceLine">line number return</param>
+        /// <param name="sourceColumn">column return</param>
+        internal void GetSourceLineInfo(Assembly assembly, string assemblyPath, IntPtr loadedPeAddress, int loadedPeSize, 
             IntPtr inMemoryPdbAddress, int inMemoryPdbSize, int methodToken, int ilOffset, 
             out string sourceFile, out int sourceLine, out int sourceColumn)
         {