Skip to content

Commit c92cd7e

Browse files
committed
refactor: user properly aligned type for compressed lines storage
1 parent 0fcd3c9 commit c92cd7e

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/logdata/include/compressedlinestorage.h

+8-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include <array>
2121
#include <cstddef>
2222
#include <cstdint>
23-
#include <vector>
2423

2524
#include "linetypes.h"
2625
#include <type_safe/strong_typedef.hpp>
@@ -39,12 +38,10 @@ class CompressedLinePositionStorage {
3938

4039
// Copy constructor would be slow, delete!
4140
CompressedLinePositionStorage( const CompressedLinePositionStorage& orig ) = delete;
42-
CompressedLinePositionStorage& operator=( const CompressedLinePositionStorage& orig )
43-
= delete;
41+
CompressedLinePositionStorage& operator=( const CompressedLinePositionStorage& orig ) = delete;
4442

4543
CompressedLinePositionStorage( CompressedLinePositionStorage&& orig ) noexcept;
46-
CompressedLinePositionStorage&
47-
operator=( CompressedLinePositionStorage&& orig ) noexcept;
44+
CompressedLinePositionStorage& operator=( CompressedLinePositionStorage&& orig ) noexcept;
4845

4946
~CompressedLinePositionStorage() = default;
5047

@@ -89,7 +86,11 @@ class CompressedLinePositionStorage {
8986
};
9087

9188
klogg::vector<BlockMetadata> blocks_;
92-
klogg::vector<uint8_t> packedLinesStorage_;
89+
90+
struct alignas( 16 ) AlignedStorage {
91+
std::array<uint8_t, 16> d;
92+
};
93+
klogg::vector<AlignedStorage> packedLinesStorage_;
9394

9495
klogg::vector<OffsetInFile> currentLinesBlock_;
9596
klogg::vector<uint32_t> currentLinesBlockShifted_;
@@ -100,7 +101,7 @@ class CompressedLinePositionStorage {
100101
// Current position (position of the end of the last line added)
101102
OffsetInFile lastPos_;
102103

103-
bool canUseSimdSelect_ {false};
104+
bool canUseSimdSelect_{ false };
104105
};
105106

106107
#endif

src/logdata/src/compressedlinestorage.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ void CompressedLinePositionStorage::compress_current_block()
9595
block.packetBitWidth
9696
= static_cast<uint8_t>( simdmaxbitsd1( 0, currentLinesBlockShifted_.data() ) );
9797

98-
const size_t packedLinesSize = block.packetBitWidth * sizeof( __m128i );
98+
const size_t packedLinesSize = block.packetBitWidth;
9999
packedLinesStorage_.resize( packedLinesStorage_.size() + packedLinesSize );
100100
block.packetStorageOffset = packedLinesStorage_.size() - packedLinesSize;
101101

0 commit comments

Comments
 (0)