public ISymbolNode InterfaceDispatchCell(MethodDesc method, ModuleToken methodToken, SignatureContext signatureContext, bool isUnboxingStub, string callSite) { MethodAndCallSite cellKey = new MethodAndCallSite(method, callSite); if (!_interfaceDispatchCells.TryGetValue(cellKey, out ISymbolNode dispatchCell)) { dispatchCell = new DelayLoadHelperImport( _codegenNodeFactory, _codegenNodeFactory.DispatchImports, ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_DelayLoad_MethodCall | ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_FLAG_VSD, _codegenNodeFactory.MethodSignature(ReadyToRunFixupKind.READYTORUN_FIXUP_VirtualEntry, method, null, methodToken, signatureContext, isUnboxingStub, isInstantiatingStub: false), callSite); _interfaceDispatchCells.Add(cellKey, dispatchCell); } return(dispatchCell); }
public ISymbolNode InterfaceDispatchCell(MethodWithToken method, SignatureContext signatureContext, bool isUnboxingStub, string callSite) { MethodAndCallSite cellKey = new MethodAndCallSite(method, callSite); if (!_interfaceDispatchCells.TryGetValue(cellKey, out ISymbolNode dispatchCell)) { dispatchCell = new DelayLoadHelperMethodImport( _codegenNodeFactory, _codegenNodeFactory.DispatchImports, ILCompiler.ReadyToRunHelper.DelayLoad_MethodCall, method, useVirtualCall: true, useInstantiatingStub: false, _codegenNodeFactory.MethodSignature(ReadyToRunFixupKind.READYTORUN_FIXUP_VirtualEntry, method, isUnboxingStub, isInstantiatingStub: false, signatureContext), signatureContext, callSite); _interfaceDispatchCells.Add(cellKey, dispatchCell); } return(dispatchCell); }
public ISymbolNode InterfaceDispatchCell(MethodWithToken method, MethodDesc callingMethod) { MethodAndCallSite cellKey = new MethodAndCallSite(method, null); return(_interfaceDispatchCells.GetOrAdd(cellKey)); }
public ISymbolNode InterfaceDispatchCell(MethodWithToken method, SignatureContext signatureContext, bool isUnboxingStub, string callSite) { MethodAndCallSite cellKey = new MethodAndCallSite(method, isUnboxingStub, callSite, signatureContext); return(_interfaceDispatchCells.GetOrAdd(cellKey)); }