diff options
author | Martin Baulig <martin.baulig@xamarin.com> | 2013-10-26 02:13:55 +0400 |
---|---|---|
committer | Martin Baulig <martin.baulig@xamarin.com> | 2013-10-26 02:14:23 +0400 |
commit | 294f999c3f1b5ef7c5e1f4e96b1032e618fde6b2 (patch) | |
tree | 95634138fde8bde204b524f76725c5064593431b | |
parent | b31c9486e3dddb70cc877962a51e3bbe476c42eb (diff) |
Revert my last two commits; these would require a new cecil.mono-3.2.4mono-3.2.4-branch
This reverts commits c29ac46c408aa2ae588548fa36a0aa9bf0b01014
and b31c9486e3dddb70cc877962a51e3bbe476c42eb.
-rw-r--r-- | mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs | 39 |
1 files changed, 1 insertions, 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<AssemblyDefinition> 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<AssemblyDefinition> (); - if (resolvedTypeReferences.Contains (assembly)) - return; - resolvedTypeReferences.Add (assembly); - - var hash = new Dictionary<TypeReference,IMetadataScope> (); - - 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) |