From 6f6b9fad662ca61e1b9f14fc65e9416aa8c7d3f7 Mon Sep 17 00:00:00 2001 From: Protobuf Team Bot Date: Tue, 16 Apr 2024 11:12:17 -0700 Subject: [PATCH] Do not prefetch nullptr. - On ARM, this change improved the performance BM_RepeatedPtrField_Add_Sso by 3.x times. PiperOrigin-RevId: 625392922 --- src/google/protobuf/repeated_ptr_field.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/protobuf/repeated_ptr_field.cc b/src/google/protobuf/repeated_ptr_field.cc index c716be5abd..010b7aabd9 100644 --- a/src/google/protobuf/repeated_ptr_field.cc +++ b/src/google/protobuf/repeated_ptr_field.cc @@ -96,12 +96,12 @@ void RepeatedPtrFieldBase::DestroyProtos() { template void* RepeatedPtrFieldBase::AddInternal(F factory) { Arena* const arena = GetArena(); - absl::PrefetchToLocalCache(tagged_rep_or_elem_); if (tagged_rep_or_elem_ == nullptr) { ExchangeCurrentSize(1); tagged_rep_or_elem_ = factory(arena); return tagged_rep_or_elem_; } + absl::PrefetchToLocalCache(tagged_rep_or_elem_); if (using_sso()) { if (current_size_ == 0) { ExchangeCurrentSize(1);