diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-06-14 17:37:18 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-06-14 17:37:18 +0200 |
commit | e338eda79fecc15554e99a4c234e01eaadf96332 (patch) | |
tree | 5b1781957c36bf5a44def0ebe69221292d53fbd6 | |
parent | 9431057101a320583fecf5f8d2135060ab137a54 (diff) |
Move calculation of array size from entry size to DynamicArrayBufferType
member function.
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) { |