Esempio n. 1
0
        protected static bool CheckProcessed(IAnnotationProvider provider)
        {
            if (Annotations.IsProcessed(provider))
            {
                return(true);
            }

            Annotations.Processed(provider);
            return(false);
        }
        protected override TypeDefinition MarkType(TypeReference reference)
        {
            if (reference == null)
            {
                return(null);
            }

            reference = GetOriginalType(reference);

            if (reference is FunctionPointerType)
            {
                return(null);
            }

            if (reference is GenericParameter)
            {
                return(null);
            }

            var type = ResolveTypeDefinition(reference);

            if (type == null)
            {
                HandleUnresolvedType(reference);
                return(null);
            }

            if (Annotations.IsProcessed(type))
            {
                return(null);
            }

            if (OptimizerContext.Options.EnableDebugging(OptimizerContext, type))
            {
                OptimizerContext.LogMessage(MessageImportance.Normal, $"MARK TYPE: {type}");
                OptimizerContext.Debug();
            }

            OptimizerContext.Options.CheckFailList(OptimizerContext, type);

            if (ProcessingConditionals && OptimizerContext.IsConditionalTypeMarked(type))
            {
                OptimizerContext.AttemptingToRedefineConditional(type);
            }

            return(base.MarkType(reference));
        }
Esempio n. 3
0
        void ProcessOverride(MethodDefinition method)
        {
            if (!Annotations.IsMarked(method.DeclaringType))
            {
                return;
            }

            if (Annotations.IsProcessed(method))
            {
                return;
            }

            if (Annotations.IsMarked(method))
            {
                return;
            }

            MarkMethod(method);
            ProcessVirtualMethod(method);
        }