Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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);
        }