aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-06-14 17:37:18 +0200
committerTor Egge <Tor.Egge@online.no>2023-06-14 17:37:18 +0200
commite338eda79fecc15554e99a4c234e01eaadf96332 (patch)
tree5b1781957c36bf5a44def0ebe69221292d53fbd6
parent9431057101a320583fecf5f8d2135060ab137a54 (diff)
Move calculation of array size from entry size to DynamicArrayBufferType
member function.
-rw-r--r--vespalib/src/vespa/vespalib/datastore/array_store_dynamic_type_mapper.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.h1
-rw-r--r--vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.hpp7
3 files changed, 9 insertions, 1 deletions
diff --git a/vespalib/src/vespa/vespalib/datastore/array_store_dynamic_type_mapper.hpp b/vespalib/src/vespa/vespalib/datastore/array_store_dynamic_type_mapper.hpp
index 44c537cf6c8..f529ecccb46 100644
--- a/vespalib/src/vespa/vespalib/datastore/array_store_dynamic_type_mapper.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/array_store_dynamic_type_mapper.hpp
@@ -37,7 +37,7 @@ ArrayStoreDynamicTypeMapper<ElemT>::setup_array_sizes(uint32_t max_buffer_type_i
dynamic_arrays = true;
}
entry_size = DynamicBufferType::calc_entry_size(array_size);
- array_size = (entry_size - sizeof(uint32_t)) / sizeof(ElemT);
+ array_size = DynamicBufferType::calc_array_size(entry_size);
} else {
entry_size = array_size * sizeof(ElemT);
}
diff --git a/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.h b/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.h
index 0f08e3a7ea1..e314accd664 100644
--- a/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.h
+++ b/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.h
@@ -39,6 +39,7 @@ public:
void initialize_reserved_entries(void* buffer, EntryCount reserved_entries) override;
void clean_hold(void* buffer, size_t offset, EntryCount num_entries, CleanContext cleanCxt) override;
static size_t calc_entry_size(size_t array_size) noexcept;
+ static size_t calc_array_size(size_t entry_size) noexcept;
static ElemType* get_entry(void* buffer, size_t offset, uint32_t entry_size) noexcept { return reinterpret_cast<ElemType*>(static_cast<char*>(buffer) + offset * entry_size); }
static const ElemType* get_entry(const void* buffer, size_t offset, uint32_t entry_size) noexcept { return reinterpret_cast<const ElemType*>(static_cast<const char*>(buffer) + offset * entry_size); }
static uint32_t get_dynamic_array_size(const void *buffer, uint32_t entry_size) noexcept { return *reinterpret_cast<const uint32_t*>(static_cast<const char*>(buffer) + entry_size - sizeof(uint32_t)); }
diff --git a/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.hpp b/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.hpp
index 47d7ab313cb..514267b0a85 100644
--- a/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.hpp
+++ b/vespalib/src/vespa/vespalib/datastore/dynamic_array_buffer_type.hpp
@@ -27,6 +27,13 @@ DynamicArrayBufferType<ElemT>::calc_entry_size(size_t array_size) noexcept
}
template <typename ElemT>
+size_t
+DynamicArrayBufferType<ElemT>::calc_array_size(size_t entry_size) noexcept
+{
+ return (entry_size - sizeof(uint32_t)) / sizeof(ElemType);
+}
+
+template <typename ElemT>
void
DynamicArrayBufferType<ElemT>::destroy_entries(void* buffer, EntryCount num_entries)
{