Exemple #1
0
        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);
        }