diff options
author | David Wrighton <davidwr@microsoft.com> | 2019-05-20 15:15:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-20 15:15:52 -0700 |
commit | adecd858f558489d8f52c9187fca395ec669a715 (patch) | |
tree | c2b597b90f4eeace4f5d898462b99f609531e1d7 /src/md | |
parent | f4ae8f0312890a7bc14c28764adb609820d86662 (diff) | |
download | coreclr-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.cpp | 4 | ||||
-rw-r--r-- | src/md/runtime/mdinternalro.cpp | 4 |
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; |