summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2022-03-28 14:24:26 +0200
committerTor Egge <Tor.Egge@yahooinc.com>2022-03-28 14:24:26 +0200
commit76ca25195b26cd5dcaae78467cb680ab5fbaf771 (patch)
tree4918a6c4eecbaedd8cf0575598c3a17ada2297ba /searchlib
parent70356e8f12e416062f4f0c862342b26a5b77ed8d (diff)
Use acquire_elem_ref() in condensed bit vector.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/common/condensedbitvectors.cpp7
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));
}
}