From 8ef1e68d59d24ab713ccf6d2524c12d07403fd08 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Mon, 2 Dec 2024 17:18:25 +0900 Subject: Unuse boost::hash_* --- src/aflrun.cpp | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/aflrun.cpp b/src/aflrun.cpp index 54a1f203..60d8fab0 100644 --- a/src/aflrun.cpp +++ b/src/aflrun.cpp @@ -1,7 +1,6 @@ #include "aflrun.h" #include -#include namespace bo = boost; #include @@ -2663,37 +2662,47 @@ void FringeBlocks::group() rh::unordered_set TargetGrouper::all_targets; +template +inline void hash_combine(size_t& seed, const T& v) +{ + /// Behavior is practically identical to boost::hash_combine. + std::hash hasher; + seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2); +} + } // namespace -size_t hash::operator()(const Fringe& p) const noexcept +size_t std::hash::operator()(const Fringe& p) const noexcept { size_t seed = 0; - bo::hash_combine(seed, p.block); - bo::hash_combine(seed, p.context); + hash_combine(seed, p.block); + hash_combine(seed, p.context); return seed; } -size_t hash::operator()(const SeedFringes& p) const noexcept +size_t std::hash::operator()(const SeedFringes& p) const noexcept { - const u8* ptr = p.bitmap.get(); - return bo::hash_range(ptr, ptr + p.bitmap_size); + const auto* const bitmap = p.bitmap.get(); + size_t seed = 0; + for (size_t i = 0; i < p.bitmap_size; ++i) + hash_combine(seed, bitmap[i]); + return seed; } -size_t hash>::operator()( +size_t std::hash>::operator()( const pair& p) const noexcept { size_t seed = 0; - bo::hash_combine(seed, p.first); - bo::hash_combine(seed, p.second); + hash_combine(seed, p.first); + hash_combine(seed, p.second); return seed; } -size_t hash::operator()( - const ClusterPair& p) const noexcept +size_t std::hash::operator()(const ClusterPair& p) const noexcept { size_t seed = 0; - bo::hash_combine(seed, p.get_fst()); - bo::hash_combine(seed, p.get_snd()); + hash_combine(seed, p.get_fst()); + hash_combine(seed, p.get_snd()); return seed; } -- cgit 1.4.1