diff options
author | Andon Andonov <anandono@microsoft.com> | 2019-01-14 19:59:12 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-14 19:59:12 -0800 |
commit | 9fe3286e3810298934315e999580edd78c3322c2 (patch) | |
tree | 79258a0ed5b043cc7a0ecac0131a77e58753e436 /src/zap/zapimport.cpp | |
parent | dbdae9cc324a97ebc9199b973abe9a21b1177f01 (diff) | |
download | coreclr-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.cpp | 13 |
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); |