From: Konstantin Baladurin Date: Mon, 11 Feb 2019 16:20:50 +0000 (+0300) Subject: prestub: fix ExternalMethodFixupWorker (#22519) X-Git-Tag: accepted/tizen/unified/20190813.215958~61^2~304 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f2ca070a0ab3b75054a225d5908405f83268c920;p=platform%2Fupstream%2Fcoreclr.git prestub: fix ExternalMethodFixupWorker (#22519) Use DispatchToken::CreateDispatchToken to get token to resolve virtual method in case of non interface MT. --- diff --git a/src/vm/prestub.cpp b/src/vm/prestub.cpp index 0f3d96d..d04a5d0 100644 --- a/src/vm/prestub.cpp +++ b/src/vm/prestub.cpp @@ -2378,7 +2378,11 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl DispatchToken token; if (pMT->IsInterface() || MethodTable::VTableIndir_t::isRelative) { - token = pMT->GetLoaderAllocator()->GetDispatchToken(pMT->GetTypeID(), slot); + if (pMT->IsInterface()) + token = pMT->GetLoaderAllocator()->GetDispatchToken(pMT->GetTypeID(), slot); + else + token = DispatchToken::CreateDispatchToken(slot); + StubCallSite callSite(pIndirection, pEMFrame->GetReturnAddress()); pCode = pMgr->ResolveWorker(&callSite, protectedObj, token, VirtualCallStubManager::SK_LOOKUP); }