aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-03-16 17:11:45 +0100
committerGitHub <noreply@github.com>2022-03-16 17:11:45 +0100
commitfd26131762bf938c033178637604df97076ffcdf (patch)
tree3e2fd72a7e612368ef065894e987ca55f8caac1a /searchlib
parent124c14075c61613533068fdee8bf5b293137bad3 (diff)
parent21470e3b8cd3e6b3a83730e41175719123dc6b10 (diff)
Merge pull request #21707 from vespa-engine/toregge/add-acquire-multi-value-entry-ref-member-function-to-multi-value-mapping-base
Add acquire_entry_ref() member function to multi value mapping base.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h
index 71f1191e507..382f5b02642 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping.h
@@ -31,7 +31,7 @@ public:
const vespalib::GrowStrategy &gs,
std::shared_ptr<vespalib::alloc::MemoryAllocator> memory_allocator);
~MultiValueMapping() override;
- ConstArrayRef get(uint32_t docId) const { return _store.get(_indices[docId].load_acquire()); }
+ ConstArrayRef get(uint32_t docId) const { return _store.get(acquire_entry_ref(docId)); }
ConstArrayRef getDataForIdx(EntryRef idx) const { return _store.get(idx); }
void set(uint32_t docId, ConstArrayRef values);
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h
index e4588c8e743..9e42e2763e5 100644
--- a/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h
+++ b/searchlib/src/vespa/searchlib/attribute/multi_value_mapping_base.h
@@ -39,6 +39,8 @@ protected:
void updateValueCount(size_t oldValues, size_t newValues) {
_totalValues += newValues - oldValues;
}
+
+ EntryRef acquire_entry_ref(uint32_t docId) const noexcept { return _indices.acquire_elem_ref(docId).load_acquire(); }
public:
using RefCopyVector = vespalib::Array<EntryRef>;