diff options
Diffstat (limited to 'compiler/driver/compiler_driver.h')
-rw-r--r-- | compiler/driver/compiler_driver.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/compiler/driver/compiler_driver.h b/compiler/driver/compiler_driver.h index 233c4f887b..d8f318ba97 100644 --- a/compiler/driver/compiler_driver.h +++ b/compiler/driver/compiler_driver.h @@ -601,6 +601,7 @@ class CompilerDriver { LOCKS_EXCLUDED(compiled_classes_lock_); std::vector<uint8_t>* DeduplicateCode(const std::vector<uint8_t>& code); + SrcMap* DeduplicateSrcMappingTable(const SrcMap& src_map); std::vector<uint8_t>* DeduplicateMappingTable(const std::vector<uint8_t>& code); std::vector<uint8_t>* DeduplicateVMapTable(const std::vector<uint8_t>& code); std::vector<uint8_t>* DeduplicateGCMap(const std::vector<uint8_t>& code); @@ -770,14 +771,15 @@ class CompilerDriver { bool support_boot_image_fixup_; // DeDuplication data structures, these own the corresponding byte arrays. + template <typename ByteArray> class DedupeHashFunc { public: - size_t operator()(const std::vector<uint8_t>& array) const { + size_t operator()(const ByteArray& array) const { // For small arrays compute a hash using every byte. static const size_t kSmallArrayThreshold = 16; size_t hash = 0x811c9dc5; if (array.size() <= kSmallArrayThreshold) { - for (uint8_t b : array) { + for (auto b : array) { hash = (hash * 16777619) ^ b; } } else { @@ -803,11 +805,13 @@ class CompilerDriver { return hash; } }; - DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc, 4> dedupe_code_; - DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc, 4> dedupe_mapping_table_; - DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc, 4> dedupe_vmap_table_; - DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc, 4> dedupe_gc_map_; - DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc, 4> dedupe_cfi_info_; + + DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc<std::vector<uint8_t>>, 4> dedupe_code_; + DedupeSet<SrcMap, size_t, DedupeHashFunc<SrcMap>, 4> dedupe_src_mapping_table_; + DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc<std::vector<uint8_t>>, 4> dedupe_mapping_table_; + DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc<std::vector<uint8_t>>, 4> dedupe_vmap_table_; + DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc<std::vector<uint8_t>>, 4> dedupe_gc_map_; + DedupeSet<std::vector<uint8_t>, size_t, DedupeHashFunc<std::vector<uint8_t>>, 4> dedupe_cfi_info_; DISALLOW_COPY_AND_ASSIGN(CompilerDriver); }; |