Ejemplo n.º 1
0
 public override ISymbolNode GetTarget(NodeFactory factory, Instantiation typeInstantiation, Instantiation methodInstantiation, GenericDictionaryNode dictionary)
 {
     if (factory.Target.Abi == TargetAbi.CoreRT)
     {
         MethodDesc instantiatedMethod = _method.InstantiateSignature(typeInstantiation, methodInstantiation);
         return(factory.ReadyToRunHelper(ReadyToRunHelperId.VirtualCall, instantiatedMethod));
     }
     else
     {
         MethodDesc instantiatedMethod = _method.InstantiateSignature(dictionary.TypeInstantiation, dictionary.MethodInstantiation);
         return(factory.InterfaceDispatchCell(instantiatedMethod, dictionary.GetMangledName()));
     }
 }
Ejemplo n.º 2
0
        public override ISymbolNode GetTarget(NodeFactory factory, Instantiation typeInstantiation, Instantiation methodInstantiation, GenericDictionaryNode dictionary)
        {
            if (factory.Target.Abi == TargetAbi.CoreRT)
            {
                MethodDesc instantiatedMethod = _method.InstantiateSignature(typeInstantiation, methodInstantiation);

                // https://github.com/dotnet/corert/issues/2342 - we put a pointer to the virtual call helper into the dictionary
                // but this should be something that will let us compute the target of the dipatch (e.g. interface dispatch cell).
                return(factory.ReadyToRunHelper(ReadyToRunHelperId.VirtualCall, instantiatedMethod));
            }
            else
            {
                MethodDesc instantiatedMethod = _method.InstantiateSignature(dictionary.TypeInstantiation, dictionary.MethodInstantiation);
                return(factory.InterfaceDispatchCell(instantiatedMethod, dictionary.GetMangledName()));
            }
        }
Ejemplo n.º 3
0
        public InterfaceDispatchCellNode GetInterfaceDispatchCell(NodeFactory factory, GenericDictionaryNode dictionary)
        {
            MethodDesc instantiatedMethod = _method.InstantiateSignature(dictionary.TypeInstantiation, dictionary.MethodInstantiation);

            return(factory.InterfaceDispatchCell(instantiatedMethod, dictionary.GetMangledName()));
        }