summaryrefslogtreecommitdiff
path: root/src/md
diff options
context:
space:
mode:
authorDavid Wrighton <davidwr@microsoft.com>2019-05-20 15:15:52 -0700
committerGitHub <noreply@github.com>2019-05-20 15:15:52 -0700
commitadecd858f558489d8f52c9187fca395ec669a715 (patch)
treec2b597b90f4eeace4f5d898462b99f609531e1d7 /src/md
parentf4ae8f0312890a7bc14c28764adb609820d86662 (diff)
downloadcoreclr-adecd858f558489d8f52c9187fca395ec669a715.tar.gz
coreclr-adecd858f558489d8f52c9187fca395ec669a715.tar.bz2
coreclr-adecd858f558489d8f52c9187fca395ec669a715.zip
Cuckoo metadata (#24498)
* Basic infra for cuckoo filter of attributes - Implement cuckoo filter lookup logic - Implement new ready to run section - Add dumper to R2RDump - Parse section on load into data structure - Implement function to query filter - Add concept of enum of well known attributes - So that attribute name hashes themselves may be cached * Wrap all even vaguely perf critical uses of attribute by name parsing with use of R2R data * Update emmintrin.h in the PAL header to contain the needed SSE2 intrinsics for the feature - Disable the presence table for non Corelib cases. Current performance data does not warrant the size increase in other generated binaries
Diffstat (limited to 'src/md')
-rw-r--r--src/md/enc/mdinternalrw.cpp4
-rw-r--r--src/md/runtime/mdinternalro.cpp4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/md/enc/mdinternalrw.cpp b/src/md/enc/mdinternalrw.cpp
index c8f844d625..c24c1b7cae 100644
--- a/src/md/enc/mdinternalrw.cpp
+++ b/src/md/enc/mdinternalrw.cpp
@@ -1482,6 +1482,10 @@ HRESULT MDInternalRW::EnumAllInit( // return S_FALSE if record not found
phEnum->m_ulCount = m_pStgdb->m_MiniMd.getCountFiles();
break;
+ case mdtCustomAttribute:
+ phEnum->m_ulCount = m_pStgdb->m_MiniMd.getCountCustomAttributes();
+ break;
+
default:
_ASSERTE(!"Bad token kind!");
break;
diff --git a/src/md/runtime/mdinternalro.cpp b/src/md/runtime/mdinternalro.cpp
index a4f59a37b2..99a1a0d9c8 100644
--- a/src/md/runtime/mdinternalro.cpp
+++ b/src/md/runtime/mdinternalro.cpp
@@ -609,6 +609,10 @@ HRESULT MDInternalRO::EnumAllInit( // return S_FALSE if record not found
phEnum->m_ulCount = m_LiteWeightStgdb.m_MiniMd.getCountFiles();
break;
+ case mdtCustomAttribute:
+ phEnum->m_ulCount = m_LiteWeightStgdb.m_MiniMd.getCountCustomAttributes();
+ break;
+
default:
_ASSERTE(!"Bad token kind!");
break;