@@ -167,23 +167,23 @@ TEST(AllocationSampleTest, SampleAccuracy) {
167167 // (object size, object alignment, keep objects)
168168 struct Requests {
169169 size_t size;
170- size_t alignment;
170+ std::optional<std:: align_val_t > alignment;
171171 std::optional<tcmalloc::hot_cold_t > hot_cold;
172172 bool expected_hot;
173173 bool keep;
174174 // objects we don't delete as we go
175175 void * list = nullptr ;
176176 };
177177 std::vector<Requests> sizes = {
178- {8 , 0 , std::nullopt , true , false },
179- {16 , 16 , std::nullopt , true , true },
180- {1024 , 0 , std::nullopt , true , false },
181- {64 * 1024 , 64 , std::nullopt , true , false },
182- {512 * 1024 , 0 , std::nullopt , true , true },
183- {1024 * 1024 , 128 , std::nullopt , true , true },
184- {32 , 0 , tcmalloc::hot_cold_t {0 }, false , true },
185- {64 , 0 , tcmalloc::hot_cold_t {255 }, true , true },
186- {8192 , 0 , tcmalloc::hot_cold_t {0 }, false , true },
178+ {8 , std:: nullopt , std::nullopt , true , false },
179+ {16 , std:: align_val_t { 16 } , std::nullopt , true , true },
180+ {1024 , std:: nullopt , std::nullopt , true , false },
181+ {64 * 1024 , std:: align_val_t { 64 } , std::nullopt , true , false },
182+ {512 * 1024 , std:: nullopt , std::nullopt , true , true },
183+ {1024 * 1024 , std:: align_val_t { 128 } , std::nullopt , true , true },
184+ {32 , std:: nullopt , tcmalloc::hot_cold_t {0 }, false , true },
185+ {64 , std:: nullopt , tcmalloc::hot_cold_t {255 }, true , true },
186+ {8192 , std:: nullopt , tcmalloc::hot_cold_t {0 }, false , true },
187187 };
188188 absl::btree_set<size_t > sizes_expected;
189189 for (auto s : sizes) {
@@ -196,17 +196,17 @@ TEST(AllocationSampleTest, SampleAccuracy) {
196196 for (auto & s : sizes) {
197197 for (size_t bytes = 0 ; bytes < kTotalPerSize ; bytes += s.size ) {
198198 void * obj;
199- if (s.alignment > 0 ) {
200- obj = operator new (s.size , static_cast <std:: align_val_t >( s.alignment ) );
199+ if (s.alignment . has_value () ) {
200+ obj = operator new (s.size , * s.alignment );
201201 } else if (s.hot_cold .has_value ()) {
202202 obj = operator new (s.size , *s.hot_cold );
203203 } else {
204204 obj = operator new (s.size );
205205 }
206206 if (s.keep ) {
207207 tcmalloc_internal::SLL_Push (&s.list , obj);
208- } else if (s.alignment > 0 ) {
209- operator delete (obj, static_cast <std:: align_val_t >( s.alignment ) );
208+ } else if (s.alignment . has_value () ) {
209+ operator delete (obj, * s.alignment );
210210 } else {
211211 sized_delete (obj, s.size );
212212 }
@@ -218,7 +218,7 @@ TEST(AllocationSampleTest, SampleAccuracy) {
218218 absl::flat_hash_map<size_t , size_t > m;
219219
220220 // size -> alignment request
221- absl::flat_hash_map<size_t , size_t > alignment;
221+ absl::flat_hash_map<size_t , std::optional<std:: align_val_t > > alignment;
222222
223223 // size -> access_hint
224224 absl::flat_hash_map<size_t , hot_cold_t > access_hint;
@@ -267,8 +267,8 @@ TEST(AllocationSampleTest, SampleAccuracy) {
267267 for (auto & s : sizes) {
268268 while (s.list != nullptr ) {
269269 void * obj = tcmalloc_internal::SLL_Pop (&s.list );
270- if (s.alignment > 0 ) {
271- operator delete (obj, static_cast <std:: align_val_t >( s.alignment ) );
270+ if (s.alignment . has_value () ) {
271+ operator delete (obj, * s.alignment );
272272 } else {
273273 operator delete (obj);
274274 }
0 commit comments