예제 #1
0
        public ExternEETypeSymbolNode(NodeFactory factory, TypeDesc type)
            : base("__EEType_" + factory.NameMangler.GetMangledTypeName(type))
        {
            _type = type;

            EETypeNode.CheckCanGenerateEEType(factory, type);
        }
        public TypeFixupSignature TypeSignature(ReadyToRunFixupKind fixupKind, TypeDesc typeDesc, SignatureContext signatureContext)
        {
            Dictionary <TypeDesc, TypeFixupSignature> perFixupKindMap;

            if (!_typeSignatures.TryGetValue(fixupKind, out perFixupKindMap))
            {
                perFixupKindMap = new Dictionary <TypeDesc, TypeFixupSignature>();
                _typeSignatures.Add(fixupKind, perFixupKindMap);
            }

            TypeFixupSignature signature;

            if (!perFixupKindMap.TryGetValue(typeDesc, out signature))
            {
                EETypeNode.CheckCanGenerateEEType(this, typeDesc);
                signature = new TypeFixupSignature(fixupKind, typeDesc, signatureContext);
                perFixupKindMap.Add(typeDesc, signature);
            }
            return(signature);
        }