|
|
|
@ -52,7 +52,7 @@ namespace internal { |
|
|
|
|
|
|
|
|
|
inline size_t AlignUpTo8(size_t n) { |
|
|
|
|
// Align n to next multiple of 8 (from Hacker's Delight, Chapter 3.)
|
|
|
|
|
return (n + 7) & (size_t)-8; |
|
|
|
|
return (n + 7) & static_cast<size_t>(-8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// This class provides the core Arena memory allocation library. Different
|
|
|
|
@ -306,8 +306,8 @@ class PROTOBUF_EXPORT ArenaImpl { |
|
|
|
|
public: |
|
|
|
|
// kBlockHeaderSize is sizeof(Block), aligned up to the nearest multiple of 8
|
|
|
|
|
// to protect the invariant that pos is always at a multiple of 8.
|
|
|
|
|
static const size_t kBlockHeaderSize = (sizeof(Block) + 7) & (size_t)-8; |
|
|
|
|
static const size_t kSerialArenaSize = (sizeof(SerialArena) + 7) & (size_t)-8; |
|
|
|
|
static const size_t kBlockHeaderSize = (sizeof(Block) + 7) & static_cast<size_t>(-8); |
|
|
|
|
static const size_t kSerialArenaSize = (sizeof(SerialArena) + 7) & static_cast<size_t>(-8); |
|
|
|
|
static_assert(kBlockHeaderSize % 8 == 0, |
|
|
|
|
"kBlockHeaderSize must be a multiple of 8."); |
|
|
|
|
static_assert(kSerialArenaSize % 8 == 0, |
|
|
|
|