From 3ab1a6b1703bb9a0022f87abac7020da0e7ca1c4 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Thu, 16 Mar 2023 19:49:43 -0700 Subject: [PATCH] [util] Remove asserts from util::bitset When used in kernel vs. non-kernel code the assert macros were not working as expected. Other util code does not use assert like this, so I'm just dropping it from bitset. --- src/libraries/util/util/bitset.h | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/libraries/util/util/bitset.h b/src/libraries/util/util/bitset.h index 667b644..685dfaa 100644 --- a/src/libraries/util/util/bitset.h +++ b/src/libraries/util/util/bitset.h @@ -2,12 +2,6 @@ /// \file bitset.h /// Definition of the `bitset` template class -#if __has_include() -#include -#else -#define assert(...) -#endif - #include namespace util { @@ -20,26 +14,27 @@ class bitset public: template + __attribute__ ((force_inline)) inline bool get(T i) const { - assert(static_cast(i) < N); return bits(i) & bit(i); } template + __attribute__ ((force_inline)) inline bitset & set(T i) { - assert(static_cast(i) < N); bits(i) |= bit(i); return *this; } template + __attribute__ ((force_inline)) inline bitset & clear(T i) { - assert(static_cast(i) < N); bits(i) &= ~bit(i); return *this; } template + __attribute__ ((force_inline)) inline bool operator[](T i) const { return get(i); } inline bool empty() const { @@ -50,12 +45,15 @@ public: private: template + __attribute__ ((force_inline)) inline uint64_t bit(T i) const { return (1ull << (static_cast(i) & 63)); } template + __attribute__ ((force_inline)) inline uint64_t &bits(T i) { return m_bits[static_cast(i) >> 6]; } template + __attribute__ ((force_inline)) inline uint64_t bits(T i) const { return m_bits[static_cast(i) >> 6]; } uint64_t m_bits[num_elems] = {0}; @@ -85,30 +83,33 @@ public: constexpr explicit bitset(Args... args) : m_bits(bit_or(args...)) {} template + __attribute__ ((force_inline)) inline bitset & operator=(T v) { m_bits = static_cast(v); return *this; } inline constexpr operator const uint64_t () const { return m_bits; } template + __attribute__ ((force_inline)) inline constexpr bool get(T i) const { return m_bits & bit(i); } template + __attribute__ ((force_inline)) inline bitset & set(T i) { - assert(static_cast(i) < 64); m_bits |= bit(i); return *this; } template + __attribute__ ((force_inline)) inline bitset & clear(T i) { - assert(static_cast(i) < 64); m_bits &= ~bit(i); return *this; } template + __attribute__ ((force_inline)) inline constexpr bool operator[](T i) const { return get(i); } inline constexpr bool empty() const { return m_bits == 0; } @@ -148,25 +149,27 @@ public: inline constexpr operator uint32_t () const { return m_bits; } template + __attribute__ ((force_inline)) inline constexpr bool get(T i) const { return m_bits & bit(i); } template + __attribute__ ((force_inline)) inline bitset & set(T i) { - assert(static_cast(i) < 32); m_bits |= bit(i); return *this; } template + __attribute__ ((force_inline)) inline bitset & clear(T i) { - assert(static_cast(i) < 32); m_bits &= ~bit(i); return *this; } template + __attribute__ ((force_inline)) inline bool operator[](T i) const { return get(i); } inline bool empty() const { return m_bits == 0; }