Reduce the required alignment of ArenaString from 8 to 4 (#10298)

pull/10313/head
Yash Tibrewal 3 years ago committed by GitHub
parent ddb21b2dff
commit c2548258b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      src/google/protobuf/arenastring.cc

@ -50,7 +50,8 @@ namespace internal {
namespace {
// Enforce that allocated data aligns to at least 8 bytes, and that
// TaggedStringPtr::Flags uses the lower 2 bits as tags.
// Enforce that allocated data aligns to at least 4 bytes, and that
// the alignment of the global const string value does as well.
// The alignment guaranteed by `new std::string` depends on both:
// - new align = __STDCPP_DEFAULT_NEW_ALIGNMENT__ / max_align_t
@ -64,8 +65,8 @@ constexpr size_t kNewAlign = alignof(std::max_align_t);
#endif
constexpr size_t kStringAlign = alignof(std::string);
static_assert((kStringAlign > kNewAlign ? kStringAlign : kNewAlign) >= 8, "");
static_assert(alignof(ExplicitlyConstructedArenaString) >= 8, "");
static_assert((kStringAlign > kNewAlign ? kStringAlign : kNewAlign) >= 4, "");
static_assert(alignof(ExplicitlyConstructedArenaString) >= 4, "");
} // namespace

Loading…
Cancel
Save