Beispiel #1
0
        private bool AddMethodToList(MethodDefinition method, TypeReference targetType, bool isVirt)
        {
            MethodUsageInfo virualCallsList;
            bool            found = true;

            if (!Methods.TryGetValue(method, out virualCallsList))
            {
                found           = false;
                virualCallsList = new MethodUsageInfo(method);
                Methods.Add(method, virualCallsList);
            }

            if (method.IsVirtual)
            {
                if (!isVirt)
                {
                    virualCallsList.RegisterNonVirtualUsage();
                }
                else
                {
                    virualCallsList.AddVirtualUsageType(targetType);
                }
            }

            return(!found);
        }
Beispiel #2
0
        private void ResolveVirtualMethod(MethodDefinition method, MethodUsageInfo usageInfo)
        {
            var overrides = new HashSet <MethodDefinition>();

            GetAllOverrides(method, overrides);
            foreach (MethodDefinition methodDefinition in overrides)
            {
                if (IsUsed(methodDefinition.DeclaringType))
                {
                    if (usageInfo.IsIncluded(methodDefinition.DeclaringType.Resolve()))
                    {
                        WalkMethod(methodDefinition);
                    }
                }
            }
        }
Beispiel #3
0
        private bool AddMethodToList(MethodDefinition method, TypeReference targetType, bool isVirt)
        {
            MethodUsageInfo virualCallsList;
            bool found = true;
            if (!Methods.TryGetValue(method, out virualCallsList)) {
                found = false;
                virualCallsList = new MethodUsageInfo(method);
                Methods.Add(method, virualCallsList);
            }

            if (method.IsVirtual) {
                if (!isVirt) {
                    virualCallsList.RegisterNonVirtualUsage();
                }
                else {
                    virualCallsList.AddVirtualUsageType(targetType);
                }
            }

            return !found;
        }
Beispiel #4
0
 private void ResolveVirtualMethod(MethodDefinition method, MethodUsageInfo usageInfo) {
     var overrides = new HashSet<MethodDefinition>();
     GetAllOverrides(method, overrides);
     foreach (MethodDefinition methodDefinition in overrides) {
         if (IsUsed(methodDefinition.DeclaringType)) {
             if (usageInfo.IsIncluded(methodDefinition.DeclaringType.Resolve()))
             {
                 WalkMethod(methodDefinition);
             }
         }
     }
 }