@@ -760,14 +760,6 @@ class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8)
760760template <typename T>
761761PROTOBUF_NOINLINE void * PROTOBUF_NONNULL
762762Arena::DefaultConstruct (Arena* PROTOBUF_NULLABLE arena) {
763- auto operator_new = [](size_t size) -> void * {
764- #if ABSL_HAVE_BUILTIN(__builtin_operator_new)
765- return __builtin_operator_new (size);
766- #else
767- return ::operator new (size);
768- #endif
769- };
770-
771763 if constexpr (internal::FieldHasArenaOffset<T>()) {
772764 if (arena != nullptr ) {
773765 using ArenaRepT = typename internal::FieldArenaRep<T>::Type;
@@ -781,12 +773,12 @@ Arena::DefaultConstruct(Arena* PROTOBUF_NULLABLE arena) {
781773 // Fields which use arena offsets don't have constructors that take an
782774 // arena pointer. Since the arena is nullptr, it is safe to default
783775 // construct the object.
784- return new (operator_new (sizeof (T))) T ();
776+ return new (internal::Allocate (sizeof (T))) T ();
785777 }
786778 } else {
787779 static_assert (is_destructor_skippable<T>::value);
788780 void * mem = arena != nullptr ? arena->AllocateAligned (sizeof (T))
789- : operator_new (sizeof (T));
781+ : internal::Allocate (sizeof (T));
790782 if constexpr (internal::HasDeprecatedArenaConstructor<T>()) {
791783 return new (mem) T (internal::InternalVisibility (), arena);
792784 } else {
@@ -818,11 +810,7 @@ PROTOBUF_NOINLINE void* PROTOBUF_NONNULL Arena::CopyConstruct(
818810 if (arena != nullptr ) {
819811 mem = arena->AllocateAligned (sizeof (T));
820812 } else {
821- #if ABSL_HAVE_BUILTIN(__builtin_operator_new)
822- mem = __builtin_operator_new (sizeof (T));
823- #else
824- mem = ::operator new (sizeof (T));
825- #endif
813+ mem = internal::Allocate (sizeof (T));
826814 }
827815 return new (mem) T (arena, *typed_from);
828816}
0 commit comments