summaryrefslogtreecommitdiff
path: root/src/zap/zapimport.cpp
diff options
context:
space:
mode:
authorAndon Andonov <anandono@microsoft.com>2019-01-14 19:59:12 -0800
committerGitHub <noreply@github.com>2019-01-14 19:59:12 -0800
commit9fe3286e3810298934315e999580edd78c3322c2 (patch)
tree79258a0ed5b043cc7a0ecac0131a77e58753e436 /src/zap/zapimport.cpp
parentdbdae9cc324a97ebc9199b973abe9a21b1177f01 (diff)
downloadcoreclr-9fe3286e3810298934315e999580edd78c3322c2.tar.gz
coreclr-9fe3286e3810298934315e999580edd78c3322c2.tar.bz2
coreclr-9fe3286e3810298934315e999580edd78c3322c2.zip
Large version bubble Support (#21727)
* Preliminary Changes * Module Index Resolution * Change infoModule encoding * Change referencing module in R2R * Pre-condition Check * Virtual Method Module Resolution * Remove Workarounds and add conditional import loading * Add signature kind module override * Add ELEMENT_TYPE_MODULE_ZAPSIG * Add switch to enable large version bubble * Cleanup * Change Native header check * Add large version bubble test * Add Large Version Bubble Checks * Cleanup * Revert unnecessary check * Change EncodeMethod Version Bubble Condition * Add Large Version Bubble asserts * Cleanup * Add default argument to runtests.py * Change test PreCommands * Revert whitespace changes * Change breaking conditional check * Streamline Version Bubble test * Address PR Feedback * Address PR Feedback #2 * Remove dead code * Add crossgen-time ifdef
Diffstat (limited to 'src/zap/zapimport.cpp')
-rw-r--r--src/zap/zapimport.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/zap/zapimport.cpp b/src/zap/zapimport.cpp
index d3010af30f..9d8eec16e2 100644
--- a/src/zap/zapimport.cpp
+++ b/src/zap/zapimport.cpp
@@ -329,6 +329,7 @@ ZapGenericSignature * ZapImportTable::GetGenericSignature(PVOID signature, BOOL
/*static*/ DWORD ZapImportTable::EncodeModuleHelper( LPVOID compileContext,
CORINFO_MODULE_HANDLE referencedModule)
{
+ _ASSERTE(!IsReadyToRunCompilation() || IsLargeVersionBubbleEnabled());
ZapImportTable * pTable = (ZapImportTable *)compileContext;
return pTable->GetIndexOfModule(referencedModule);
}
@@ -952,6 +953,7 @@ void ZapImportTable::EncodeModule(CORCOMPILE_FIXUP_BLOB_KIND kind, CORINFO_MODUL
{
if (module != GetImage()->GetModuleHandle())
{
+ _ASSERTE(!IsReadyToRunCompilation() || IsLargeVersionBubbleEnabled());
pSigBuilder->AppendByte(kind | ENCODE_MODULE_OVERRIDE);
pSigBuilder->AppendData(GetIndexOfModule(module));
}
@@ -1635,7 +1637,7 @@ ZapImport * ZapImportTable::GetExternalMethodCell(CORINFO_METHOD_HANDLE handle,
}
else
{
- EncodeMethod(ENCODE_METHOD_ENTRY, handle, &sigBuilder, pResolvedToken, pConstrainedResolvedToken);
+ EncodeMethod(ENCODE_METHOD_ENTRY, handle, &sigBuilder, pResolvedToken, pConstrainedResolvedToken, false);
}
return GetImportForSignature<ZapExternalMethodCell, ZapNodeType_ExternalMethodCell>((PVOID)handle, &sigBuilder);
@@ -1777,7 +1779,7 @@ ZapImport * ZapImportTable::GetDictionaryLookupCell(CORCOMPILE_FIXUP_BLOB_KIND k
if ((kind & ~CORINFO_HELP_READYTORUN_ATYPICAL_CALLSITE) == ENCODE_DICTIONARY_LOOKUP_THISOBJ)
{
CORINFO_CLASS_HANDLE hClassContext = GetJitInfo()->getMethodClass(pResolvedToken->tokenContext);
- GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), hClassContext, &sigBuilder, NULL, NULL);
+ GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), hClassContext, &sigBuilder, this, EncodeModuleHelper);
}
switch (pLookup->runtimeLookupFlags)
@@ -1795,7 +1797,7 @@ ZapImport * ZapImportTable::GetDictionaryLookupCell(CORCOMPILE_FIXUP_BLOB_KIND k
{
_ASSERTE(pLookup->runtimeLookupArgs != NULL);
sigBuilder.AppendData(ENCODE_DECLARINGTYPE_HANDLE);
- GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), (CORINFO_CLASS_HANDLE)pLookup->runtimeLookupArgs, &sigBuilder, NULL, NULL);
+ GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), (CORINFO_CLASS_HANDLE)pLookup->runtimeLookupArgs, &sigBuilder, this, EncodeModuleHelper);
}
else
{
@@ -1844,8 +1846,7 @@ ZapImport * ZapImportTable::GetDynamicHelperCell(CORCOMPILE_FIXUP_BLOB_KIND kind
sigBuilder.AppendData(kind & ~CORINFO_HELP_READYTORUN_ATYPICAL_CALLSITE);
- GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), handle, &sigBuilder, NULL, NULL);
-
+ GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), handle, &sigBuilder, this, EncodeModuleHelper);
pImport->SetBlob(GetBlob(&sigBuilder));
}
@@ -1863,7 +1864,7 @@ ZapImport * ZapImportTable::GetDynamicHelperCell(CORCOMPILE_FIXUP_BLOB_KIND kind
if (delegateType != NULL)
{
_ASSERTE((CORCOMPILE_FIXUP_BLOB_KIND)(kind & ~CORINFO_HELP_READYTORUN_ATYPICAL_CALLSITE) == ENCODE_DELEGATE_CTOR);
- GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), delegateType, &sigBuilder, NULL, NULL);
+ GetCompileInfo()->EncodeClass(m_pImage->GetModuleHandle(), delegateType, &sigBuilder, this, EncodeModuleHelper);
}
return GetImportForSignature<ZapDynamicHelperCell, ZapNodeType_DynamicHelperCell>((void *)(uintptr_t)((kind << 1) | 1), &sigBuilder);