summaryrefslogtreecommitdiff
path: root/src/zap
diff options
context:
space:
mode:
authorFadi Hanna <fadim@microsoft.com>2016-06-21 11:51:05 -0700
committerGitHub <noreply@github.com>2016-06-21 11:51:05 -0700
commitb9f5ae88cc49836c8d31f07db7800707165cdb06 (patch)
treec5d6246379b51c19e9c79489364da1e2a6fe79f5 /src/zap
parentfb79613c44df5ad80831dba1460ffb14dd6497a3 (diff)
downloadcoreclr-b9f5ae88cc49836c8d31f07db7800707165cdb06.tar.gz
coreclr-b9f5ae88cc49836c8d31f07db7800707165cdb06.tar.bz2
coreclr-b9f5ae88cc49836c8d31f07db7800707165cdb06.zip
Generic dictionary minor performance improvement and simplification for R2R (#5690)
A set of refactoring changes to slighly improve the performance of generic dictionary access on R2R images, and simplifying the codebase: 1) Removing dependency on CEEInfo::ComputeRuntimeLookupForSharedGenericTokenStatic (and deleting the API). 2) Stop parsing the generic type/method signatures when generating the R2R dictionary lookup assembly stub. 3) Avoid re-encoding the generic type/method signatures in a new in-memory blob using a SigBuilder (signatures used directly from the R2R image) 4) Moved the parsing/loading of type/method signatures to Dictionary::PopulateEntry() 5) Dictionary index and slot number are now encoded in the generated assembly stub instead of the signature (stub takes a pointer to a data blob, which contains the signature, the dictionary index and slot, and the module pointer)
Diffstat (limited to 'src/zap')
-rw-r--r--src/zap/zapinfo.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/zap/zapinfo.cpp b/src/zap/zapinfo.cpp
index 831c61b4b2..232570f09d 100644
--- a/src/zap/zapinfo.cpp
+++ b/src/zap/zapinfo.cpp
@@ -3487,11 +3487,11 @@ bool ZapInfo::getReadyToRunHelper(CORINFO_RESOLVED_TOKEN * pResolvedToken,
pImport = m_pImage->GetImportTable()->GetDictionaryLookupCell(
(CORCOMPILE_FIXUP_BLOB_KIND)(ENCODE_DICTIONARY_LOOKUP_METHOD | fAtypicalCallsite), pResolvedToken, pGenericLookupKind);
}
- else if (pGenericLookupKind->runtimeLookupKind == CORINFO_LOOKUP_THISOBJ)
- {
- pImport = m_pImage->GetImportTable()->GetDictionaryLookupCell(
- (CORCOMPILE_FIXUP_BLOB_KIND)(ENCODE_DICTIONARY_LOOKUP_THISOBJ | fAtypicalCallsite), pResolvedToken, pGenericLookupKind);
-}
+ else if (pGenericLookupKind->runtimeLookupKind == CORINFO_LOOKUP_THISOBJ)
+ {
+ pImport = m_pImage->GetImportTable()->GetDictionaryLookupCell(
+ (CORCOMPILE_FIXUP_BLOB_KIND)(ENCODE_DICTIONARY_LOOKUP_THISOBJ | fAtypicalCallsite), pResolvedToken, pGenericLookupKind);
+ }
else
{
_ASSERTE(pGenericLookupKind->runtimeLookupKind == CORINFO_LOOKUP_CLASSPARAM);