diff options
author | John Chen (CLR) <jochen@microsoft.com> | 2016-05-09 16:38:54 -0700 |
---|---|---|
committer | John Chen (CLR) <jochen@microsoft.com> | 2016-05-09 16:38:54 -0700 |
commit | 9f5d9d4f925db0cf7793322921007f6c4ccc45ad (patch) | |
tree | 5dce61411f7023e9284de783a8dabe5178216ed0 /src/zap | |
parent | 84e2177f7844f7cf1ee2c7ae689396170d6a522a (diff) | |
download | coreclr-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.cpp | 18 |
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( |