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); }
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]); } } }
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; }