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)
154argument.Generator.Emit(OpCodes.Unbox_Any, parameterCallSite.ServiceType); 158argument.Generator.Emit(OpCodes.Newobj, constructorCallSite.ConstructorInfo); 161argument.Generator.Emit(OpCodes.Box, constructorCallSite.ImplementationType); 186argument.Generator.Emit(OpCodes.Ldarg_1); 187argument.Generator.Emit(OpCodes.Call, generatedMethod.DynamicMethod); 202argument.Generator.Emit(OpCodes.Ldarg_1); 210argument.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.GetArrayEmptyMethodInfo(enumerableCallSite.ItemType)); 218argument.Generator.Emit(OpCodes.Ldc_I4, enumerableCallSite.ServiceCallSites.Length); 219argument.Generator.Emit(OpCodes.Newarr, enumerableCallSite.ItemType); 223argument.Generator.Emit(OpCodes.Dup); 225argument.Generator.Emit(OpCodes.Ldc_I4, i); 231argument.Generator.Emit(OpCodes.Unbox_Any, parameterCallSite.ServiceType); 235argument.Generator.Emit(OpCodes.Stelem, enumerableCallSite.ItemType); 247argument.Generator.Emit(OpCodes.Ldarg_0); 248argument.Generator.Emit(OpCodes.Ldfld, FactoriesField); 250argument.Generator.Emit(OpCodes.Ldc_I4, argument.Factories.Count); 251argument.Generator.Emit(OpCodes.Ldelem, typeof(Func<IServiceProvider, object>)); 253argument.Generator.Emit(OpCodes.Ldarg_1); 254argument.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.InvokeFactoryMethodInfo); 265argument.Generator.Emit(OpCodes.Ldarg_0); 266argument.Generator.Emit(OpCodes.Ldfld, ConstantsField); 268argument.Generator.Emit(OpCodes.Ldc_I4, argument.Constants.Count); 269argument.Generator.Emit(OpCodes.Ldelem, typeof(object)); 279argument.Generator.Emit(OpCodes.Ldtoken, id.ServiceType); 280argument.Generator.Emit(OpCodes.Call, GetTypeFromHandleMethod); 281argument.Generator.Emit(OpCodes.Ldc_I4, key.Slot); 282argument.Generator.Emit(OpCodes.Newobj, CacheKeyCtor); 324LocalBuilder cacheKeyLocal = context.Generator.DeclareLocal(typeof(ServiceCacheKey)); 325LocalBuilder resolvedServicesLocal = context.Generator.DeclareLocal(typeof(IDictionary<ServiceCacheKey, object>)); 326LocalBuilder syncLocal = context.Generator.DeclareLocal(typeof(object)); 327LocalBuilder lockTakenLocal = context.Generator.DeclareLocal(typeof(bool)); 328LocalBuilder resultLocal = context.Generator.DeclareLocal(typeof(object)); 330Label skipCreationLabel = context.Generator.DefineLabel(); 331Label returnLabel = context.Generator.DefineLabel(); 332Label defaultLabel = context.Generator.DefineLabel(); 335context.Generator.Emit(OpCodes.Ldarg_1); 336context.Generator.Emit(OpCodes.Callvirt, ScopeIsRootScope); 337context.Generator.Emit(OpCodes.Brfalse_S, defaultLabel); 339context.Generator.Emit(OpCodes.Call, CallSiteRuntimeResolverInstanceField); 341context.Generator.Emit(OpCodes.Ldarg_1); 342context.Generator.Emit(OpCodes.Callvirt, CallSiteRuntimeResolverResolveMethod); 343context.Generator.Emit(OpCodes.Ret); 346context.Generator.MarkLabel(defaultLabel); 349context.Generator.Emit(OpCodes.Stloc, cacheKeyLocal); 351context.Generator.BeginExceptionBlock(); 354context.Generator.Emit(OpCodes.Ldarg_1); 356context.Generator.Emit(OpCodes.Callvirt, ResolvedServicesGetter); 358context.Generator.Emit(OpCodes.Stloc, resolvedServicesLocal); 361context.Generator.Emit(OpCodes.Ldarg_1); 363context.Generator.Emit(OpCodes.Callvirt, ScopeLockGetter); 365context.Generator.Emit(OpCodes.Stloc, syncLocal); 368context.Generator.Emit(OpCodes.Ldloc, syncLocal); 370context.Generator.Emit(OpCodes.Ldloca, lockTakenLocal); 372context.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.MonitorEnterMethodInfo); 375context.Generator.Emit(OpCodes.Ldloc, resolvedServicesLocal); 377context.Generator.Emit(OpCodes.Ldloc, cacheKeyLocal); 379context.Generator.Emit(OpCodes.Ldloca, resultLocal); 381context.Generator.Emit(OpCodes.Callvirt, ServiceLookupHelpers.TryGetValueMethodInfo); 384context.Generator.Emit(OpCodes.Brtrue, skipCreationLabel); 388context.Generator.Emit(OpCodes.Stloc, resultLocal); 393context.Generator.Emit(OpCodes.Ldloc, resultLocal); 400context.Generator.Emit(OpCodes.Ldloc, resolvedServicesLocal); 402context.Generator.Emit(OpCodes.Ldloc, cacheKeyLocal); 404context.Generator.Emit(OpCodes.Ldloc, resultLocal); 406context.Generator.Emit(OpCodes.Callvirt, ServiceLookupHelpers.AddMethodInfo); 408context.Generator.MarkLabel(skipCreationLabel); 410context.Generator.BeginFinallyBlock(); 413context.Generator.Emit(OpCodes.Ldloc, lockTakenLocal); 415context.Generator.Emit(OpCodes.Brfalse, returnLabel); 417context.Generator.Emit(OpCodes.Ldloc, syncLocal); 419context.Generator.Emit(OpCodes.Call, ServiceLookupHelpers.MonitorExitMethodInfo); 421context.Generator.MarkLabel(returnLabel); 423context.Generator.EndExceptionBlock(); 426context.Generator.Emit(OpCodes.Ldloc, resultLocal); 428context.Generator.Emit(OpCodes.Ret); 434context.Generator.Emit(OpCodes.Ret); 446argument.Generator.Emit(OpCodes.Ldarg_1); 452argument.Generator.Emit(OpCodes.Callvirt, ServiceLookupHelpers.CaptureDisposableMethodInfo);