Reduce QuicConfig size from 1432 bytes to 1160 bytes by better padding.

// Before
sizeof(QuicConfigValue) = 16
sizeof(QuicFixedUint32) = 32
sizeof(QuicFixedUint62) = 48
sizeof(QuicFixedUint128) = 64
sizeof(QuicFixedTagVector) = 80
sizeof(QuicFixedSocketAddress) = 72
sizeof(QuicConfig) = 1432
// After
sizeof(QuicConfigValue) = 16
sizeof(QuicFixedUint32) = 24
sizeof(QuicFixedUint62) = 32
sizeof(QuicFixedUint128) = 48
sizeof(QuicFixedTagVector) = 64
sizeof(QuicFixedSocketAddress) = 64
sizeof(QuicConfig) = 1160

PiperOrigin-RevId: 338664457
Change-Id: I828e2f900d493277832223df0a507bd77ceb8c89
diff --git a/quic/core/quic_config.h b/quic/core/quic_config.h
index 0fa3a1e..016d5d0 100644
--- a/quic/core/quic_config.h
+++ b/quic/core/quic_config.h
@@ -27,7 +27,7 @@
 
 // Describes whether or not a given QuicTag is required or optional in the
 // handshake message.
-enum QuicConfigPresence {
+enum QuicConfigPresence : uint8_t {
   // This negotiable value can be absent from the handshake message. Default
   // value is selected as the negotiated value in such a case.
   PRESENCE_OPTIONAL,
@@ -91,10 +91,10 @@
                                  std::string* error_details) override;
 
  private:
-  uint32_t send_value_;
   bool has_send_value_;
-  uint32_t receive_value_;
   bool has_receive_value_;
+  uint32_t send_value_;
+  uint32_t receive_value_;
 };
 
 // Stores 62bit numbers from handshake messages that unilaterally shared by each
@@ -128,10 +128,10 @@
                                  std::string* error_details) override;
 
  private:
-  uint64_t send_value_;
   bool has_send_value_;
-  uint64_t receive_value_;
   bool has_receive_value_;
+  uint64_t send_value_;
+  uint64_t receive_value_;
 };
 
 // Stores uint128 from CHLO or SHLO messages that are not negotiated.
@@ -161,10 +161,10 @@
                                  std::string* error_details) override;
 
  private:
-  QuicUint128 send_value_;
   bool has_send_value_;
-  QuicUint128 receive_value_;
   bool has_receive_value_;
+  QuicUint128 send_value_;
+  QuicUint128 receive_value_;
 };
 
 // Stores tag from CHLO or SHLO messages that are not negotiated.
@@ -197,10 +197,10 @@
                                  std::string* error_details) override;
 
  private:
-  QuicTagVector send_values_;
   bool has_send_values_;
-  QuicTagVector receive_values_;
   bool has_receive_values_;
+  QuicTagVector send_values_;
+  QuicTagVector receive_values_;
 };
 
 // Stores QuicSocketAddress from CHLO or SHLO messages that are not negotiated.
@@ -228,10 +228,10 @@
                                  std::string* error_details) override;
 
  private:
-  QuicSocketAddress send_value_;
   bool has_send_value_;
-  QuicSocketAddress receive_value_;
   bool has_receive_value_;
+  QuicSocketAddress send_value_;
+  QuicSocketAddress receive_value_;
 };
 
 // QuicConfig contains non-crypto configuration options that are negotiated in