1 write to Generator
Microsoft.Extensions.DependencyInjection (1)
ServiceLookup\ILEmit\ILEmitResolverBuilderContext.cs (1)
12public ILEmitResolverBuilderContext(ILGenerator generator) => Generator = generator;
78 references to Generator
Microsoft.Extensions.DependencyInjection (78)
ServiceLookup\ILEmit\ILEmitResolverBuilder.cs (78)
158argument.Generator.Emit(OpCodes.Unbox_Any, parameterCallSite.ServiceType); 162argument.Generator.Emit(OpCodes.Newobj, constructorCallSite.ConstructorInfo); 165argument.Generator.Emit(OpCodes.Box, constructorCallSite.ImplementationType); 190argument.Generator.Emit(OpCodes.Ldarg_1); 191argument.Generator.Emit(OpCodes.Call, generatedMethod.DynamicMethod); 206argument.Generator.Emit(OpCodes.Ldarg_1); 214argument.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.GetArrayEmptyMethodInfo(enumerableCallSite.ItemType)); 222argument.Generator.Emit(OpCodes.Ldc_I4, enumerableCallSite.ServiceCallSites.Length); 223argument.Generator.Emit(OpCodes.Newarr, enumerableCallSite.ItemType); 227argument.Generator.Emit(OpCodes.Dup); 229argument.Generator.Emit(OpCodes.Ldc_I4, i); 235argument.Generator.Emit(OpCodes.Unbox_Any, parameterCallSite.ServiceType); 239argument.Generator.Emit(OpCodes.Stelem, enumerableCallSite.ItemType); 251argument.Generator.Emit(OpCodes.Ldarg_0); 252argument.Generator.Emit(OpCodes.Ldfld, FactoriesField); 254argument.Generator.Emit(OpCodes.Ldc_I4, argument.Factories.Count); 255argument.Generator.Emit(OpCodes.Ldelem, typeof(Func<IServiceProvider, object>)); 257argument.Generator.Emit(OpCodes.Ldarg_1); 258argument.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.InvokeFactoryMethodInfo); 269argument.Generator.Emit(OpCodes.Ldarg_0); 270argument.Generator.Emit(OpCodes.Ldfld, ConstantsField); 272argument.Generator.Emit(OpCodes.Ldc_I4, argument.Constants.Count); 273argument.Generator.Emit(OpCodes.Ldelem, typeof(object)); 283argument.Generator.Emit(OpCodes.Ldtoken, id.ServiceType); 284argument.Generator.Emit(OpCodes.Call, GetTypeFromHandleMethod); 285argument.Generator.Emit(OpCodes.Ldc_I4, key.Slot); 286argument.Generator.Emit(OpCodes.Newobj, CacheKeyCtor); 328LocalBuilder cacheKeyLocal = context.Generator.DeclareLocal(typeof(ServiceCacheKey)); 329LocalBuilder resolvedServicesLocal = context.Generator.DeclareLocal(typeof(IDictionary<ServiceCacheKey, object>)); 330LocalBuilder syncLocal = context.Generator.DeclareLocal(typeof(object)); 331LocalBuilder lockTakenLocal = context.Generator.DeclareLocal(typeof(bool)); 332LocalBuilder resultLocal = context.Generator.DeclareLocal(typeof(object)); 334Label skipCreationLabel = context.Generator.DefineLabel(); 335Label returnLabel = context.Generator.DefineLabel(); 336Label defaultLabel = context.Generator.DefineLabel(); 339context.Generator.Emit(OpCodes.Ldarg_1); 340context.Generator.Emit(OpCodes.Callvirt, ScopeIsRootScope); 341context.Generator.Emit(OpCodes.Brfalse_S, defaultLabel); 343context.Generator.Emit(OpCodes.Call, CallSiteRuntimeResolverInstanceField); 345context.Generator.Emit(OpCodes.Ldarg_1); 346context.Generator.Emit(OpCodes.Callvirt, CallSiteRuntimeResolverResolveMethod); 347context.Generator.Emit(OpCodes.Ret); 350context.Generator.MarkLabel(defaultLabel); 353context.Generator.Emit(OpCodes.Stloc, cacheKeyLocal); 355context.Generator.BeginExceptionBlock(); 358context.Generator.Emit(OpCodes.Ldarg_1); 360context.Generator.Emit(OpCodes.Callvirt, ResolvedServicesGetter); 362context.Generator.Emit(OpCodes.Stloc, resolvedServicesLocal); 365context.Generator.Emit(OpCodes.Ldarg_1); 367context.Generator.Emit(OpCodes.Callvirt, ScopeLockGetter); 369context.Generator.Emit(OpCodes.Stloc, syncLocal); 372context.Generator.Emit(OpCodes.Ldloc, syncLocal); 374context.Generator.Emit(OpCodes.Ldloca, lockTakenLocal); 376context.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.MonitorEnterMethodInfo); 379context.Generator.Emit(OpCodes.Ldloc, resolvedServicesLocal); 381context.Generator.Emit(OpCodes.Ldloc, cacheKeyLocal); 383context.Generator.Emit(OpCodes.Ldloca, resultLocal); 385context.Generator.Emit(OpCodes.Callvirt, ServiceLookupHelpers.TryGetValueMethodInfo); 388context.Generator.Emit(OpCodes.Brtrue, skipCreationLabel); 392context.Generator.Emit(OpCodes.Stloc, resultLocal); 397context.Generator.Emit(OpCodes.Ldloc, resultLocal); 404context.Generator.Emit(OpCodes.Ldloc, resolvedServicesLocal); 406context.Generator.Emit(OpCodes.Ldloc, cacheKeyLocal); 408context.Generator.Emit(OpCodes.Ldloc, resultLocal); 410context.Generator.Emit(OpCodes.Callvirt, ServiceLookupHelpers.AddMethodInfo); 412context.Generator.MarkLabel(skipCreationLabel); 414context.Generator.BeginFinallyBlock(); 417context.Generator.Emit(OpCodes.Ldloc, lockTakenLocal); 419context.Generator.Emit(OpCodes.Brfalse, returnLabel); 421context.Generator.Emit(OpCodes.Ldloc, syncLocal); 423context.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.MonitorExitMethodInfo); 425context.Generator.MarkLabel(returnLabel); 427context.Generator.EndExceptionBlock(); 430context.Generator.Emit(OpCodes.Ldloc, resultLocal); 432context.Generator.Emit(OpCodes.Ret); 438context.Generator.Emit(OpCodes.Ret); 450argument.Generator.Emit(OpCodes.Ldarg_1); 456argument.Generator.Emit(OpCodes.Callvirt, ServiceLookupHelpers.CaptureDisposableMethodInfo);