diff options
author | Nguyễn Gia Phong <cnx@loang.net> | 2024-12-02 17:18:25 +0900 |
---|---|---|
committer | Nguyễn Gia Phong <cnx@loang.net> | 2024-12-12 14:59:45 +0900 |
commit | 8ef1e68d59d24ab713ccf6d2524c12d07403fd08 (patch) | |
tree | b7802cb0d83d3d449a27502662b96460147aeac6 /src/aflrun.cpp | |
parent | db31db002483779671fe06a740bbbacf30ec09e7 (diff) | |
download | afl++-8ef1e68d59d24ab713ccf6d2524c12d07403fd08.tar.gz |
Unuse boost::hash_*
Diffstat (limited to 'src/aflrun.cpp')
-rw-r--r-- | src/aflrun.cpp | 37 |
1 files changed, 23 insertions, 14 deletions
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 <boost/dynamic_bitset.hpp> -#include <boost/functional/hash.hpp> namespace bo = boost; #include <algorithm> @@ -2663,37 +2662,47 @@ void FringeBlocks<F, D>::group() rh::unordered_set<reach_t> TargetGrouper::all_targets; +template<typename T> +inline void hash_combine(size_t& seed, const T& v) +{ + /// Behavior is practically identical to boost::hash_combine. + std::hash<T> hasher; + seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2); +} + } // namespace -size_t hash<Fringe>::operator()(const Fringe& p) const noexcept +size_t std::hash<Fringe>::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<SeedFringes>::operator()(const SeedFringes& p) const noexcept +size_t std::hash<SeedFringes>::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<pair<reach_t, reach_t>>::operator()( +size_t std::hash<pair<reach_t, reach_t>>::operator()( const pair<reach_t, reach_t>& 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<ClusterPair>::operator()( - const ClusterPair& p) const noexcept +size_t std::hash<ClusterPair>::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; } |