summaryrefslogtreecommitdiff
path: root/src/zap
diff options
context:
space:
mode:
authorJohn Chen (CLR) <jochen@microsoft.com>2016-05-09 16:38:54 -0700
committerJohn Chen (CLR) <jochen@microsoft.com>2016-05-09 16:38:54 -0700
commit9f5d9d4f925db0cf7793322921007f6c4ccc45ad (patch)
tree5dce61411f7023e9284de783a8dabe5178216ed0 /src/zap
parent84e2177f7844f7cf1ee2c7ae689396170d6a522a (diff)
downloadcoreclr-9f5d9d4f925db0cf7793322921007f6c4ccc45ad.tar.gz
coreclr-9f5d9d4f925db0cf7793322921007f6c4ccc45ad.tar.bz2
coreclr-9f5d9d4f925db0cf7793322921007f6c4ccc45ad.zip
Fix CrossGen to skip some methods that require generic dictionary
Resolves issue #4801.
Diffstat (limited to 'src/zap')
-rw-r--r--src/zap/zapinfo.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/zap/zapinfo.cpp b/src/zap/zapinfo.cpp
index 40695c9c21..ee515f7ff6 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(