Convert QuicConnection's bools to bit-fields

This shaves another 48 bytes off the size of QuicConnection. Its size on Linux/x86-64 was 6880 and now it is 6832.

Testing with go/benchy suggests that this change has approximately zero impact on any metric.

```
(Generated by http://go/benchy. Settings: --runs 5 --compilation_mode "" --reference "cl/777694707" --config "benchmark")

name                          cpu/op        cpu/op      vs base
BM_QuicConnection_Constructor 6.594µ ± 1%   6.590µ ± 3%  ~ (p=0.836 n=60)

name                          time/op       time/op     vs base
BM_QuicConnection_Constructor 6.503µ ± 0%   6.495µ ± 0%  ~ (p=0.241 n=60)

name                          INSTRUCTIONS/op  INSTRUCTIONS/op  vs base
BM_QuicConnection_Constructor 34.87k ± 0%       34.90k ± 0%  +0.09% (p=0.000 n=60)

name                          CYCLES/op    CYCLES/op   vs base
BM_QuicConnection_Constructor 17.25k ± 0%   17.22k ± 0%  ~ (p=0.281 n=60)

name                          allocs/op   allocs/op   vs base
BM_QuicConnection_Constructor  4.000 ± 0%   4.000 ± 0%  ~ (p=1.000 n=60) ¹
¹                            all samples are equal

name                          peak-mem(Bytes)/op  peak-mem(Bytes)/op  vs base
BM_QuicConnection_Constructor 2.688k ± 0%          2.688k ± 0%  ~ (p=1.000 n=60) ¹
¹                            all samples are equal
```

PiperOrigin-RevId: 777734837
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h
index 7d7c67f..c9ebfe3 100644
--- a/quiche/quic/core/quic_connection.h
+++ b/quiche/quic/core/quic_connection.h
@@ -2498,100 +2498,100 @@
   // Set to true as soon as the packet currently being processed has been
   // detected as a connectivity probing.
   // Always false outside the context of ProcessUdpPacket().
-  bool is_current_packet_connectivity_probing_ = false;
-  bool has_path_challenge_in_current_packet_ = false;
-  bool owns_writer_;
+  bool is_current_packet_connectivity_probing_ : 1 = false;
+  bool has_path_challenge_in_current_packet_ : 1 = false;
+  bool owns_writer_ : 1;
   // On the server, the connection ID is set when receiving the first packet.
   // This variable ensures we only set it this way once.
-  bool client_connection_id_is_set_ = false;
+  bool client_connection_id_is_set_ : 1 = false;
   // Whether we've already replaced our server connection ID due to receiving an
   // INITIAL packet with a different source connection ID. Only used on client.
-  bool server_connection_id_replaced_by_initial_ = false;
+  bool server_connection_id_replaced_by_initial_ : 1 = false;
   // Indicates whether connection version has been negotiated.
   // Always true for server connections.
-  bool version_negotiated_ = false;
+  bool version_negotiated_ : 1 = false;
   // True if Key Update is supported on this connection.
-  bool support_key_update_for_connection_ = false;
-  bool should_last_packet_instigate_acks_ = false;
+  bool support_key_update_for_connection_ : 1 = false;
+  bool should_last_packet_instigate_acks_ : 1 = false;
   // Indicates the retransmission alarm needs to be set.
-  bool pending_retransmission_alarm_ = false;
+  bool pending_retransmission_alarm_ : 1 = false;
   // If true, defer sending data in response to received packets to the
   // SendAlarm.
-  bool defer_send_in_response_to_packets_ = false;
+  bool defer_send_in_response_to_packets_ : 1 = false;
   // True by default.  False if we've received or sent an explicit connection
   // close.
-  bool connected_ = true;
+  bool connected_ : 1 = true;
   // True if the connection is in the CloseConnection stack.
-  bool in_close_connection_ = false;
+  bool in_close_connection_ : 1 = false;
   // Set to false if the connection should not send truncated connection IDs to
   // the peer, even if the peer supports it.
-  bool can_truncate_connection_ids_;
+  bool can_truncate_connection_ids_ : 1;
   // Indicates whether a write error is encountered currently. This is used to
   // avoid infinite write errors.
-  bool write_error_occurred_ = false;
+  bool write_error_occurred_ : 1 = false;
   // If true, bundle an ack-eliciting frame with an ACK if the PTO alarm have
   // previously fired.
-  bool bundle_retransmittable_with_pto_ack_ = false;
+  bool bundle_retransmittable_with_pto_ack_ : 1 = false;
   // True if the peer is unreachable on the current path.
-  bool is_path_degrading_ = false;
+  bool is_path_degrading_ : 1 = false;
   // True if the outgoing flow label has changed since the last foward progress.
-  bool flow_label_has_changed_ = false;
+  bool flow_label_has_changed_ : 1 = false;
   // True if an ack frame is being processed.
-  bool processing_ack_frame_ = false;
+  bool processing_ack_frame_ : 1 = false;
   // True if the writer supports release timestamp.
-  bool supports_release_time_ = false;
-  bool blackhole_detection_disabled_ = false;
-  const bool default_enable_5rto_blackhole_detection_ =
+  bool supports_release_time_ : 1 = false;
+  bool blackhole_detection_disabled_ : 1 = false;
+  const bool default_enable_5rto_blackhole_detection_ : 1 =
       GetQuicReloadableFlag(quic_default_enable_5rto_blackhole_detection2);
   // True if next packet is intended to consume remaining space in the
   // coalescer.
-  bool fill_coalesced_packet_ = false;
+  bool fill_coalesced_packet_ : 1 = false;
   // True if AckFrequencyFrame is supported.
-  bool can_receive_ack_frequency_immediate_ack_ = false;
+  bool can_receive_ack_frequency_immediate_ack_ : 1 = false;
   // Indicate whether coalescing is done.
-  bool coalescing_done_ = false;
+  bool coalescing_done_ : 1 = false;
   // Indicate whether any ENCRYPTION_HANDSHAKE packet has been sent.
-  bool handshake_packet_sent_ = false;
+  bool handshake_packet_sent_ : 1 = false;
   // Indicate whether to send an AckFrequencyFrame upon handshake completion.
   // The AckFrequencyFrame sent will updates client's max_ack_delay, which if
   // chosen properly can reduce the CPU and bandwidth usage for ACK frames.
-  bool send_ack_frequency_on_handshake_completion_ = false;
+  bool send_ack_frequency_on_handshake_completion_ : 1 = false;
   // Indicate whether AckFrequency frame has been sent.
-  bool ack_frequency_sent_ = false;
+  bool ack_frequency_sent_ : 1 = false;
   // True if a 0-RTT decrypter was or is installed at some point in the
   // connection's lifetime.
-  bool had_zero_rtt_decrypter_ = false;
+  bool had_zero_rtt_decrypter_ : 1 = false;
   // True after the first 1-RTT packet has successfully decrypted.
-  bool have_decrypted_first_one_rtt_packet_ = false;
+  bool have_decrypted_first_one_rtt_packet_ : 1 = false;
   // True if we are currently processing OnRetransmissionTimeout.
-  bool in_probe_time_out_ = false;
+  bool in_probe_time_out_ : 1 = false;
   // If true, upon seeing a new client address, validate the client address.
-  bool validate_client_addresses_ = false;
+  bool validate_client_addresses_ : 1 = false;
   // Indicates whether we should proactively validate peer address on a
   // PATH_CHALLENGE received.
-  bool should_proactively_validate_peer_address_on_path_challenge_ = false;
+  bool should_proactively_validate_peer_address_on_path_challenge_ : 1 = false;
   // If true, send connection close packet on INVALID_VERSION.
-  bool send_connection_close_for_invalid_version_ = false;
+  bool send_connection_close_for_invalid_version_ : 1 = false;
   // If true, disable liveness testing.
-  bool liveness_testing_disabled_ = false;
+  bool liveness_testing_disabled_ : 1 = false;
   // If true, connection will migrate to multi-port path upon path degrading.
-  bool multi_port_migration_enabled_ = false;
+  bool multi_port_migration_enabled_ : 1 = false;
   // If true, connection will probe for multi-port path on RTO. This is only
   // used on the client side. If false, connection will probe for multi-port
   // path on receiving a new connection ID frame. See OnNewConnectionIdFrame()
   // for more details.
-  bool multi_port_probing_on_rto_ = false;
+  bool multi_port_probing_on_rto_ : 1 = false;
   // Client side only.
-  bool active_migration_disabled_ = false;
-  const bool ignore_gquic_probing_ =
+  bool active_migration_disabled_ : 1 = false;
+  const bool ignore_gquic_probing_ : 1 =
       GetQuicReloadableFlag(quic_ignore_gquic_probing);
   // If true, kicks off validation of server_preferred_address_ once it is
   // received. Also, send all coalesced packets on both paths until handshake is
   // confirmed.
-  bool accelerated_server_preferred_address_ = false;
+  bool accelerated_server_preferred_address_ : 1 = false;
   // If true, throttle sending if next created packet will exceed amplification
   // limit.
-  const bool enforce_strict_amplification_factor_ =
+  const bool enforce_strict_amplification_factor_ : 1 =
       GetQuicFlag(quic_enforce_strict_amplification_factor);
   // Endpoints should never mark packets with Congestion Experienced (CE), as
   // this is only done by routers. Endpoints cannot send ECT(0) or ECT(1) if
@@ -2599,20 +2599,20 @@
   // the spec, or ECN feedback doesn't conform to the spec. When true, the
   // connection will not verify that the requested codepoint adheres to these
   // policies. This is only accessible through QuicConnectionPeer.
-  bool disable_ecn_codepoint_validation_ = false;
+  bool disable_ecn_codepoint_validation_ : 1 = false;
   // True if the peer is expected to change their flow label in response to
   // a flow label change made by this connection.
-  bool expect_peer_flow_label_change_ = false;
+  bool expect_peer_flow_label_change_ : 1 = false;
   // If true then flow labels will be changed when a PTO fires, or when
   // a PTO'd packet from a peer is detected.
-  bool enable_black_hole_avoidance_via_flow_label_ = false;
+  bool enable_black_hole_avoidance_via_flow_label_ : 1 = false;
   // If true, fixes a off-by-one error in the least unacked packet calculation.
-  bool least_unacked_plus_1_;
-  const bool quic_limit_new_streams_per_loop_2_ =
+  bool least_unacked_plus_1_ : 1;
+  const bool quic_limit_new_streams_per_loop_2_ : 1 =
       GetQuicReloadableFlag(quic_limit_new_streams_per_loop_2);
-  const bool quic_test_peer_addr_change_after_normalize_ =
+  const bool quic_test_peer_addr_change_after_normalize_ : 1 =
       GetQuicReloadableFlag(quic_test_peer_addr_change_after_normalize);
-  const bool quic_fix_timeouts_ = GetQuicReloadableFlag(quic_fix_timeouts);
+  const bool quic_fix_timeouts_ : 1 = GetQuicReloadableFlag(quic_fix_timeouts);
 };
 
 }  // namespace quic