示例#1
0
        internal RegisteredMethod GetRegisteredMethod(MethodDesc method)
        {
            RegisteredMethod existingRegistration;

            if (_registeredMethods.TryGetValue(method, out existingRegistration))
            {
                return(existingRegistration);
            }

            RegisteredMethod registration = new RegisteredMethod()
            {
                Method = method
            };

            _registeredMethods.Add(method, registration);

            GetRegisteredType(method.OwningType);

            return(registration);
        }
示例#2
0
        public void AddMethod(MethodDesc method)
        {
            RegisteredMethod reg = GetRegisteredMethod(method);

            if (reg.IncludedInCompilation)
            {
                return;
            }
            reg.IncludedInCompilation = true;

            RegisteredType regType = GetRegisteredType(method.OwningType);

            if (regType.Methods == null)
            {
                regType.Methods = new List <RegisteredMethod>();
            }
            regType.Methods.Add(reg);

            if (_methodsThatNeedsCompilation == null)
            {
                _methodsThatNeedsCompilation = new List <MethodDesc>();
            }
            _methodsThatNeedsCompilation.Add(method);

            if (_options.IsCppCodeGen)
            {
                // Precreate name to ensure that all types referenced by signatures are present
                GetRegisteredType(method.OwningType);
                var signature = method.Signature;
                GetRegisteredType(signature.ReturnType);
                for (int i = 0; i < signature.Length; i++)
                {
                    GetRegisteredType(signature[i]);
                }
            }
        }
示例#3
0
        internal RegisteredMethod GetRegisteredMethod(MethodDesc method)
        {
            RegisteredMethod existingRegistration;
            if (_registeredMethods.TryGetValue(method, out existingRegistration))
                return existingRegistration;

            RegisteredMethod registration = new RegisteredMethod() { Method = method };
            _registeredMethods.Add(method, registration);

            GetRegisteredType(method.OwningType);

            return registration;
        }