+ static inline PoolEntry* getEmptyKey() { return nullptr; }
+
+ static inline PoolEntry* getTombstoneKey() {
+ return reinterpret_cast<PoolEntry*>(static_cast<uintptr_t>(1));
+ }
+
+ template <typename CostKeyT>
+ static unsigned getHashValue(const CostKeyT &C) {
+ return hash_value(C);
+ }
+
+ static unsigned getHashValue(PoolEntry *P) {
+ return getHashValue(P->getCost());
+ }
+
+ static unsigned getHashValue(const PoolEntry *P) {
+ return getHashValue(P->getCost());
+ }
+
+ template <typename CostKeyT1, typename CostKeyT2>
+ static
+ bool isEqual(const CostKeyT1 &C1, const CostKeyT2 &C2) {
+ return C1 == C2;
+ }
+