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