From 9f5d9d4f925db0cf7793322921007f6c4ccc45ad Mon Sep 17 00:00:00 2001 From: "John Chen (CLR)" Date: Mon, 9 May 2016 16:38:54 -0700 Subject: [PATCH] Fix CrossGen to skip some methods that require generic dictionary Resolves issue #4801. --- src/zap/zapinfo.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/zap/zapinfo.cpp b/src/zap/zapinfo.cpp index 40695c9..ee515f7 100644 --- a/src/zap/zapinfo.cpp +++ b/src/zap/zapinfo.cpp @@ -3428,16 +3428,34 @@ void ZapInfo::getReadyToRunHelper( break; case CORINFO_HELP_READYTORUN_ISINSTANCEOF: + if ((getClassAttribs(pResolvedToken->hClass) & CORINFO_FLG_SHAREDINST) != 0) + { + // READYTORUN: FUTURE: Generics + m_zapper->Warning(W("ReadyToRun: Generic dictionary lookup required\n")); + ThrowHR(E_NOTIMPL); + } pImport = m_pImage->GetImportTable()->GetDynamicHelperCell( (CORCOMPILE_FIXUP_BLOB_KIND)(ENCODE_ISINSTANCEOF_HELPER | fAtypicalCallsite), pResolvedToken->hClass); break; case CORINFO_HELP_READYTORUN_CHKCAST: + if ((getClassAttribs(pResolvedToken->hClass) & CORINFO_FLG_SHAREDINST) != 0) + { + // READYTORUN: FUTURE: Generics + m_zapper->Warning(W("ReadyToRun: Generic dictionary lookup required\n")); + ThrowHR(E_NOTIMPL); + } pImport = m_pImage->GetImportTable()->GetDynamicHelperCell( (CORCOMPILE_FIXUP_BLOB_KIND)(ENCODE_CHKCAST_HELPER | fAtypicalCallsite), pResolvedToken->hClass); break; case CORINFO_HELP_READYTORUN_STATIC_BASE: + if ((getClassAttribs(pResolvedToken->hClass) & CORINFO_FLG_SHAREDINST) != 0) + { + // READYTORUN: FUTURE: Generics + m_zapper->Warning(W("ReadyToRun: Generic dictionary lookup required\n")); + ThrowHR(E_NOTIMPL); + } if (m_pImage->GetCompileInfo()->IsInCurrentVersionBubble(m_pEEJitInfo->getClassModule(pResolvedToken->hClass))) { pImport = m_pImage->GetImportTable()->GetDynamicHelperCell( -- 2.7.4