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:
-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)