From 294f999c3f1b5ef7c5e1f4e96b1032e618fde6b2 Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Sat, 26 Oct 2013 00:13:55 +0200 Subject: Revert my last two commits; these would require a new cecil. This reverts commits c29ac46c408aa2ae588548fa36a0aa9bf0b01014 and b31c9486e3dddb70cc877962a51e3bbe476c42eb. --- mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs | 39 +------------------------ 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs b/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs index 552693546be..5cea341b099 100644 --- a/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs +++ b/mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs @@ -37,7 +37,6 @@ namespace Mono.Linker.Steps { public class SweepStep : BaseStep { AssemblyDefinition [] assemblies; - HashSet resolvedTypeReferences; protected override void Process () { @@ -103,51 +102,15 @@ namespace Mono.Linker.Steps { references.RemoveAt (i); // Removing the reference does not mean it will be saved back to disk! // That depends on the AssemblyAction set for the `assembly` - switch (Annotations.GetAction (assembly)) { - case AssemblyAction.Copy: + if (Annotations.GetAction (assembly) == AssemblyAction.Copy) { // Copy means even if "unlinked" we still want that assembly to be saved back // to disk (OutputStep) without the (removed) reference Annotations.SetAction (assembly, AssemblyAction.Save); - ResolveAllTypeReferences (assembly); - break; - - case AssemblyAction.Save: - case AssemblyAction.Link: - ResolveAllTypeReferences (assembly); - break; } return; } } - void ResolveAllTypeReferences (AssemblyDefinition assembly) - { - if (resolvedTypeReferences == null) - resolvedTypeReferences = new HashSet (); - if (resolvedTypeReferences.Contains (assembly)) - return; - resolvedTypeReferences.Add (assembly); - - var hash = new Dictionary (); - - foreach (TypeReference tr in assembly.MainModule.GetTypeReferences ()) { - if (hash.ContainsKey (tr)) - continue; - var td = tr.Resolve (); - // at this stage reference might include things that can't be resolved - var scope = td == null ? null : assembly.MainModule.Import (td).Scope; - hash.Add (tr, scope); - } - - // Resolve everything first before updating scopes. - // If we set the scope to null, then calling Resolve() on any of its - // nested types would crash. - - foreach (var e in hash) { - e.Key.Scope = e.Value; - } - } - void SweepType (TypeDefinition type) { if (type.HasFields) -- cgit v1.2.3