public void Complete() { if (!IsEnabled) { return; } if (!Compiler.CompilerOptions.EnableStatistics) { return; } MoreLogInfo(); Debug.WriteLine(trace?.ToString()); // REMOVE int totalTypes = 0; int totalMethods = 0; foreach (var type in TypeSystem.AllTypes) { if (type.IsModule) { continue; } totalTypes++; foreach (var method in type.Methods) { if ((!(!method.HasImplementation && method.IsAbstract)) && !method.HasOpenGenericParams && !method.DeclaringType.HasOpenGenericParams) { totalMethods++; } } } Compiler.GlobalCounters.Update("MethodScanner.TotalTypes", totalTypes); Compiler.GlobalCounters.Update("MethodScanner.TotalMethods", totalMethods); Compiler.GlobalCounters.Update("MethodScanner.AllocatedTypes", allocatedTypes.Count); Compiler.GlobalCounters.Update("MethodScanner.InvokedMethods", invokedMethods.Count); Compiler.GlobalCounters.Update("MethodScanner.ScheduledMethods", scheduledMethods.Count); Compiler.GlobalCounters.Update("MethodScanner.AccessedFields", accessedFields.Count); Compiler.GlobalCounters.Update("MethodScanner.InvokedInterfaceType", invokedInteraceTypes.Count); Compiler.PostTrace(trace); }