Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Baulig <martin.baulig@xamarin.com>2013-10-26 02:13:55 +0400
committerMartin Baulig <martin.baulig@xamarin.com>2013-10-26 02:14:23 +0400
commit294f999c3f1b5ef7c5e1f4e96b1032e618fde6b2 (patch)
tree95634138fde8bde204b524f76725c5064593431b
parentb31c9486e3dddb70cc877962a51e3bbe476c42eb (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.cs39
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)