[w32handle] Stop returning 0 in every cases for locking/unlocking (#3926)
[mono.git] / mcs / tools / tuner / Mono.Tuner / PrintStatus.cs
index 00ed5e5117d6f199e49aaf7bf496fa1fe38269fc..374395bac8afba79a3190e91b2196510fc1fcea5 100644 (file)
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Collections;
 
 using Mono.Linker;
 using Mono.Linker.Steps;
@@ -34,12 +35,52 @@ using Mono.Linker.Steps;
 using Mono.Cecil;
 
 namespace Mono.Tuner {
-       
+
        public class PrintStatus : BaseStep {
 
+               static string display_internalized = "display_internalized";
+
                protected override void ProcessAssembly (AssemblyDefinition assembly)
                {
-                       Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.Image.FileInformation);
+                       if (Annotations.GetAction (assembly) != AssemblyAction.Link)
+                               return;
+
+                       Console.WriteLine ("Assembly `{0}' ({1}) tuned", assembly.Name, assembly.MainModule.FullyQualifiedName);
+
+                       if (!DisplayInternalized ())
+                               return;
+
+                       foreach (TypeDefinition type in assembly.MainModule.Types)
+                               ProcessType (type);
+               }
+
+               bool DisplayInternalized ()
+               {
+                       try {
+                               return bool.Parse (Context.GetParameter (display_internalized));
+                       } catch {
+                               return false;
+                       }
+               }
+
+               void ProcessType (TypeDefinition type)
+               {
+                       ProcessCollection (type.Fields);
+                       ProcessCollection (type.Methods);
+               }
+
+               void ProcessCollection (ICollection collection)
+               {
+                       foreach (IMetadataTokenProvider provider in collection)
+                               ProcessProvider (provider);
+               }
+
+               void ProcessProvider (IMetadataTokenProvider provider)
+               {
+                       if (!TunerAnnotations.IsInternalized (Context, provider))
+                               return;
+
+                       Console.WriteLine ("[internalized] {0}", provider);
                }
        }
 }