From 370eebb40013533b6db62775f6ce6c1039d36a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Thu, 13 Aug 2015 07:43:11 +0200 Subject: Fixed 'Bug 33041 - Go-to-definition against a type inside Microsoft.mshtml.dll freezes all of XS'. --- .../AssemblyBrowserWidget.cs | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser') diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs index 5a1b069cc6..54ad286a35 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs @@ -129,6 +129,38 @@ namespace MonoDevelop.AssemblyBrowser return referencedSegment.Reference.ToString (); } + class FastNonInterningProvider : InterningProvider + { + Dictionary stringDict = new Dictionary(); + + public override string Intern (string text) + { + if (text == null) + return null; + + string output; + if (stringDict.TryGetValue(text, out output)) + return output; + stringDict [text] = text; + return text; + } + + public override ISupportsInterning Intern (ISupportsInterning obj) + { + return obj; + } + + public override IList InternList(IList list) + { + return list; + } + + public override object InternValue (object obj) + { + return obj; + } + } + public AssemblyBrowserWidget () { this.Build (); @@ -183,6 +215,7 @@ namespace MonoDevelop.AssemblyBrowser languageCombobox.Changed += LanguageComboboxhandleChanged; loader = new CecilLoader (true); + loader.InterningProvider = new FastNonInterningProvider (); loader.IncludeInternalMembers = true; TreeView = new AssemblyBrowserTreeView (new NodeBuilder[] { new ErrorNodeBuilder (), -- cgit v1.2.3