[msvc] Update csproj files (#4074)
[mono.git] / mcs / tools / mono-symbolicate / symbolicate.cs
index 78b6945f149ed3dc0f0a76949160e86121d476a3..2c04a27eef04e84b37cd51a2b4b9b78a83be4358 100644 (file)
@@ -80,8 +80,16 @@ namespace Mono
                        var symbolManager = new SymbolManager (msymDir, logger);
 
                        using (StreamReader r = new StreamReader (inputFile)) {
-                               var sb = Process (r, symbolManager);
-                               Console.Write (sb.ToString ());
+                               for (var line = r.ReadLine (); line != null; line = r.ReadLine ()) {
+                                       StackFrameData sfData;
+                                       if (StackFrameData.TryParse (line, out sfData) &&
+                                               symbolManager.TryResolveLocation (sfData)) {
+                                               Console.WriteLine (sfData.ToString ());
+                                               continue;
+                                       }
+
+                                       Console.WriteLine (line);
+                               }
                        }
                }
 
@@ -94,88 +102,5 @@ namespace Mono
 
                        symbolManager.StoreSymbols (lookupDirs);
                }
-
-               public static StringBuilder Process (StreamReader reader, SymbolManager symbolManager)
-               {
-                       List<StackFrameData> stackFrames = new List<StackFrameData>();
-                       List<StackTraceMetadata> metadata = new List<StackTraceMetadata>();
-                       StringBuilder sb = new StringBuilder ();
-                       bool linesEnded = false;
-
-                       for (var line = reader.ReadLine (); line != null; line = reader.ReadLine ()) {
-                               StackFrameData sfData;
-                               if (!linesEnded && StackFrameData.TryParse (line, out sfData)) {
-                                       stackFrames.Add (sfData);
-                                       continue;
-                               }
-
-                               if (stackFrames.Count > 0) {
-                                       linesEnded = true;
-
-                                       StackTraceMetadata stMetadata;
-                                       if (StackTraceMetadata.TryParse (line, out stMetadata)) {
-                                               metadata.Add (stMetadata);
-                                               continue;
-                                       }
-
-                                       DumpStackTrace (symbolManager, sb, stackFrames, metadata);
-               
-                                       // Clear lists for next stack trace
-                                       stackFrames.Clear ();
-                                       metadata.Clear ();
-                               }
-
-                               linesEnded = false;
-
-                               // Append last line
-                               sb.AppendLine (line);
-                       }
-
-                       if (stackFrames.Count > 0)
-                               DumpStackTrace (symbolManager, sb, stackFrames, metadata);
-
-                       return sb;
-               }
-
-               private static void DumpStackTrace (SymbolManager symbolManager, StringBuilder sb, List<StackFrameData> stackFrames, List<StackTraceMetadata> metadata)
-               {
-                       string aotid = null;
-                       var aotidMetadata = metadata.FirstOrDefault ( m => m.Id == "AOTID" );
-                       if (aotidMetadata != null)
-                               aotid = aotidMetadata.Value;
-
-                       var linesMvid = ProcessLinesMVID (metadata);
-                       var lineNumber = -1;
-                       foreach (var sfData in stackFrames) {
-                               string mvid = null;
-                               lineNumber++;
-                               if (!sfData.IsValid)
-                                       continue;
-                               if (linesMvid.ContainsKey (lineNumber))
-                                       mvid = linesMvid [lineNumber];
-
-                               symbolManager.TryResolveLocation (sfData, mvid, aotid);
-
-                               sb.AppendLine (sfData.ToString ());
-                       }
-
-                       foreach (var m in metadata)
-                               sb.AppendLine (m.Line);
-               }
-
-               private static Dictionary<int, string> ProcessLinesMVID (List<StackTraceMetadata> metadata)
-               {
-                       var linesMvid = new Dictionary<int, string> ();
-                       var mvidData = metadata.Where ( m => m.Id == "MVID" ).Select ( m => m.Value );
-                       foreach (var m in mvidData) {
-                               var s1 = m.Split (new char[] {' '}, 2);
-                               var mvid = s1 [0];
-                               var lines = s1 [1].Split (',');
-                               foreach (var line in lines)
-                                       linesMvid.Add (int.Parse (line), mvid);
-                       }
-
-                       return linesMvid;
-               }
        }
 }