public ISymbolNode ConstructedTypeSymbol(TypeDesc type, SignatureContext signatureContext) { if (!_constructedTypeSymbols.TryGetValue(type, out ISymbolNode symbol)) { symbol = new PrecodeHelperImport( _codegenNodeFactory, new TypeFixupSignature(ReadyToRunFixupKind.READYTORUN_FIXUP_TypeDictionary, type, signatureContext)); _constructedTypeSymbols.Add(type, symbol); } return(symbol); }
public ISymbolNode FieldBaseOffset(TypeDesc typeDesc, SignatureContext signatureContext) { ISymbolNode result; if (!_fieldBaseOffsetCache.TryGetValue(typeDesc, out result)) { result = new PrecodeHelperImport( _codegenNodeFactory, _codegenNodeFactory.TypeSignature(ReadyToRunFixupKind.READYTORUN_FIXUP_FieldBaseOffset, typeDesc, signatureContext)); _fieldBaseOffsetCache.Add(typeDesc, result); } return(result); }
public ISortableSymbolNode MethodGenericDictionary(MethodDesc method, ModuleToken methodToken, SignatureContext signatureContext) { if (!_genericDictionaryCache.TryGetValue(method, out ISortableSymbolNode genericDictionary)) { genericDictionary = new PrecodeHelperImport( _codegenNodeFactory, _codegenNodeFactory.MethodSignature( ReadyToRunFixupKind.READYTORUN_FIXUP_MethodDictionary, method, constrainedType: null, methodToken: methodToken, signatureContext: signatureContext, isUnboxingStub: false, isInstantiatingStub: true)); _genericDictionaryCache.Add(method, genericDictionary); } return(genericDictionary); }
public ISymbolNode GetIndirectPInvokeTargetNode(MethodWithToken methodWithToken, SignatureContext signatureContext) { ISymbolNode result; if (!_indirectPInvokeTargetNodes.TryGetValue(methodWithToken, out result)) { result = new PrecodeHelperImport( _codegenNodeFactory, _codegenNodeFactory.MethodSignature( ReadyToRunFixupKind.READYTORUN_FIXUP_IndirectPInvokeTarget, methodWithToken, signatureContext: signatureContext, isUnboxingStub: false, isInstantiatingStub: false)); _indirectPInvokeTargetNodes.Add(methodWithToken, result); } return(result); }