diff options
author | Tor Egge <Tor.Egge@yahooinc.com> | 2022-03-28 14:24:26 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahooinc.com> | 2022-03-28 14:24:26 +0200 |
commit | 76ca25195b26cd5dcaae78467cb680ab5fbaf771 (patch) | |
tree | 4918a6c4eecbaedd8cf0575598c3a17ada2297ba /searchlib | |
parent | 70356e8f12e416062f4f0c862342b26a5b77ed8d (diff) |
Use acquire_elem_ref() in condensed bit vector.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp b/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp index d03f995f99e..39986c43ac5 100644 --- a/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp +++ b/searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp @@ -71,7 +71,7 @@ private: } bool get(Key key, uint32_t index) const override { assert(key < getKeyCapacity()); - return (_v[index] & (B << key)) != 0; + return (_v.acquire_elem_ref(index) & (B << key)) != 0; } size_t getKeyCapacity() const override { return sizeof(T)*8; } @@ -89,7 +89,7 @@ CondensedBitVectorT<T>::computeCountVector(T mask, CountVector & cv, F func) con size_t i(0); const size_t UNROLL = 2; uint8_t *d = &cv[0]; - const T *v = &_v[0]; + const T *v = &_v.acquire_elem_ref(0); for (const size_t m(cv.size() - (UNROLL - 1)); i < m; i+=UNROLL) { for (size_t j(0); j < UNROLL; j++) { func(d[i+j], countBits(v[i+j] & mask)); @@ -103,8 +103,9 @@ template <typename F> void CondensedBitVectorT<T>::computeTail(T mask, CountVector & cv, F func, size_t i) const { + auto* v = &_v.acquire_elem_ref(0); for (; i < cv.size(); i++) { - func(cv[i], countBits(_v[i] & mask)); + func(cv[i], countBits(v[i] & mask)); } } |