Do not prefetch nullptr.

- On ARM, this change improved the performance BM_RepeatedPtrField_Add_Sso
  by 3.x times.

PiperOrigin-RevId: 625392922
pull/16530/head
Protobuf Team Bot 10 months ago committed by Copybara-Service
parent ea81024ddf
commit 6f6b9fad66
  1. 2
      src/google/protobuf/repeated_ptr_field.cc

@ -96,12 +96,12 @@ void RepeatedPtrFieldBase::DestroyProtos() {
template <typename F>
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);

Loading…
Cancel
Save