summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-10-14 14:58:19 +0200
committerTor Egge <Tor.Egge@online.no>2022-10-14 14:58:19 +0200
commit8b20389508e70128bb05901b73624af122f786a9 (patch)
treebc130366614ee8e10d6d8e484f3239a098085dd8 /searchlib
parentc41b01a5525e138f64317c185e3604c6249a70c7 (diff)
Use set_skip_reclaim_labels() instead of get_num_subspaces_and_flag_and_set_flag().
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.cpp18
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.h2
2 files changed, 10 insertions, 10 deletions
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.cpp
index b496acd19b8..d13d3f24b5b 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.cpp
@@ -92,15 +92,11 @@ TensorBufferOperations::get_num_subspaces_and_flag(ConstArrayRef<char> buf) cons
return vespalib::atomic::load_ref_relaxed(num_subspaces_and_flag_ref);
}
-uint32_t
-TensorBufferOperations::get_num_subspaces_and_flag_and_set_flag(ArrayRef<char> buf) const noexcept
+void
+TensorBufferOperations::set_skip_reclaim_labels(ArrayRef<char> buf, uint32_t num_subspaces_and_flag) const noexcept
{
uint32_t& num_subspaces_and_flag_ref = *reinterpret_cast<uint32_t*>(buf.data());
- auto num_subspaces_and_flag = vespalib::atomic::load_ref_relaxed(num_subspaces_and_flag_ref);
- if (!get_skip_reclaim_labels(num_subspaces_and_flag)) {
- vespalib::atomic::store_ref_relaxed(num_subspaces_and_flag_ref, (num_subspaces_and_flag | skip_reclaim_labels_mask));
- }
- return num_subspaces_and_flag;
+ vespalib::atomic::store_ref_relaxed(num_subspaces_and_flag_ref, (num_subspaces_and_flag | skip_reclaim_labels_mask));
}
void
@@ -163,16 +159,20 @@ TensorBufferOperations::make_fast_view(ConstArrayRef<char> buf, const vespalib::
void
TensorBufferOperations::copied_labels(ArrayRef<char> buf) const
{
- (void) get_num_subspaces_and_flag_and_set_flag(buf);
+ auto num_subspaces_and_flag = get_num_subspaces_and_flag(buf);
+ if (!get_skip_reclaim_labels(num_subspaces_and_flag)) {
+ set_skip_reclaim_labels(buf, num_subspaces_and_flag);
+ }
}
void
TensorBufferOperations::reclaim_labels(ArrayRef<char> buf) const
{
- auto num_subspaces_and_flag = get_num_subspaces_and_flag_and_set_flag(buf);
+ auto num_subspaces_and_flag = get_num_subspaces_and_flag(buf);
if (get_skip_reclaim_labels(num_subspaces_and_flag)) {
return;
}
+ set_skip_reclaim_labels(buf, num_subspaces_and_flag);
auto num_subspaces = get_num_subspaces(num_subspaces_and_flag);
ArrayRef<string_id> labels(reinterpret_cast<string_id*>(buf.data() + get_labels_offset()), num_subspaces * _num_mapped_dimensions);
for (auto& label : labels) {
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.h b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.h
index 451770614ba..7b6d089f8f2 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.h
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_operations.h
@@ -68,7 +68,7 @@ class TensorBufferOperations
return aligner.align(get_labels_offset() + get_labels_mem_size(num_subspaces));
}
uint32_t get_num_subspaces_and_flag(vespalib::ConstArrayRef<char> buf) const noexcept;
- uint32_t get_num_subspaces_and_flag_and_set_flag(vespalib::ArrayRef<char> buf) const noexcept;
+ void set_skip_reclaim_labels(vespalib::ArrayRef<char> buf, uint32_t num_subspaces_and_flag) const noexcept;
static uint32_t get_num_subspaces(uint32_t num_subspaces_and_flag) noexcept {
return num_subspaces_and_flag & num_subspaces_mask;
}