From 0a287b62e1cebef62bd88cb047816b4647e9839d Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Sat, 11 Feb 2023 19:19:42 +0000 Subject: Add noexcept and some constexpr --- eval/src/vespa/eval/eval/fast_addr_map.h | 46 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'eval/src') diff --git a/eval/src/vespa/eval/eval/fast_addr_map.h b/eval/src/vespa/eval/eval/fast_addr_map.h index bda708b0945..442e0560b4b 100644 --- a/eval/src/vespa/eval/eval/fast_addr_map.h +++ b/eval/src/vespa/eval/eval/fast_addr_map.h @@ -20,13 +20,13 @@ class FastAddrMap { public: // label extracting functions - static constexpr string_id self(string_id label) { return label; } - static constexpr string_id self(const string_id *label) { return *label; } + static constexpr string_id self(string_id label) noexcept { return label; } + static constexpr string_id self(const string_id *label) noexcept { return *label; } // label hashing functions - static constexpr uint32_t hash_label(string_id label) { return label.value(); } - static constexpr uint32_t hash_label(const string_id *label) { return label->value(); } - static constexpr uint32_t combine_label_hash(uint32_t full_hash, uint32_t next_hash) { + static constexpr uint32_t hash_label(string_id label) noexcept { return label.value(); } + static constexpr uint32_t hash_label(const string_id *label) noexcept { return label->value(); } + static constexpr uint32_t combine_label_hash(uint32_t full_hash, uint32_t next_hash) noexcept { return ((full_hash * 31) + next_hash); } template @@ -41,9 +41,9 @@ public: // typed uint32_t index used to identify sparse address/dense subspace struct Tag { uint32_t idx; - static constexpr uint32_t npos() { return uint32_t(-1); } - static constexpr Tag make_invalid() { return Tag{npos()}; } - constexpr bool valid() const { return (idx != npos()); } + static constexpr uint32_t npos() noexcept { return uint32_t(-1); } + static constexpr Tag make_invalid() noexcept { return Tag{npos()}; } + constexpr bool valid() const noexcept { return (idx != npos()); } }; // sparse hash set entry @@ -62,9 +62,9 @@ public: struct LabelView { size_t addr_size; const StringIdVector &labels; - LabelView(size_t num_mapped_dims, const StringIdVector &labels_in) + LabelView(size_t num_mapped_dims, const StringIdVector &labels_in) noexcept : addr_size(num_mapped_dims), labels(labels_in) {} - ConstArrayRef get_addr(size_t idx) const { + ConstArrayRef get_addr(size_t idx) const noexcept { return {labels.data() + (idx * addr_size), addr_size}; } }; @@ -72,17 +72,17 @@ public: // hashing functor for sparse hash set struct Hash { template - constexpr uint32_t operator()(const AltKey &key) const { return key.hash; } - constexpr uint32_t operator()(const Entry &entry) const { return entry.hash; } - constexpr uint32_t operator()(string_id label) const { return label.value(); } + constexpr uint32_t operator()(const AltKey &key) const noexcept { return key.hash; } + constexpr uint32_t operator()(const Entry &entry) const noexcept { return entry.hash; } + constexpr uint32_t operator()(string_id label) const noexcept { return label.value(); } }; // equality functor for sparse hash set struct Equal { const LabelView &label_view; - Equal(const LabelView &label_view_in) : label_view(label_view_in) {} + Equal(const LabelView &label_view_in) noexcept : label_view(label_view_in) {} template - bool operator()(const Entry &a, const AltKey &b) const { + bool operator()(const Entry &a, const AltKey &b) const noexcept { if (a.hash != b.hash) { return false; } @@ -110,25 +110,25 @@ public: FastAddrMap &operator=(const FastAddrMap &) = delete; FastAddrMap(FastAddrMap &&) = delete; FastAddrMap &operator=(FastAddrMap &&) = delete; - static constexpr size_t npos() { return -1; } - ConstArrayRef get_addr(size_t idx) const { return _labels.get_addr(idx); } - size_t size() const { return _map.size(); } - constexpr size_t addr_size() const { return _labels.addr_size; } - const StringIdVector &labels() const { return _labels.labels; } + static constexpr size_t npos() noexcept { return -1; } + ConstArrayRef get_addr(size_t idx) const noexcept { return _labels.get_addr(idx); } + size_t size() const noexcept { return _map.size(); } + constexpr size_t addr_size() const noexcept { return _labels.addr_size; } + const StringIdVector &labels() const noexcept { return _labels.labels; } template - size_t lookup(ConstArrayRef addr, uint32_t hash) const { + size_t lookup(ConstArrayRef addr, uint32_t hash) const noexcept { // assert(addr_size() == addr.size()); AltKey key{addr, hash}; auto pos = _map.find(key); return (pos == _map.end()) ? npos() : pos->tag.idx; } - size_t lookup_singledim(string_id addr) const { + size_t lookup_singledim(string_id addr) const noexcept { // assert(addr_size() == 1); auto pos = _map.find(addr); return (pos == _map.end()) ? npos() : pos->tag.idx; } template - size_t lookup(ConstArrayRef addr) const { + size_t lookup(ConstArrayRef addr) const noexcept { return (addr.size() == 1) ? lookup_singledim(self(addr[0])) : lookup(addr, hash_labels(addr)); -- cgit v1.2.3