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())); } }
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())); } }
public InterfaceDispatchCellNode GetInterfaceDispatchCell(NodeFactory factory, GenericDictionaryNode dictionary) { MethodDesc instantiatedMethod = _method.InstantiateSignature(dictionary.TypeInstantiation, dictionary.MethodInstantiation); return(factory.InterfaceDispatchCell(instantiatedMethod, dictionary.GetMangledName())); }