grpc 1.68.1 → 1.74.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3051) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +379 -370
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  5. data/include/grpc/event_engine/endpoint_config.h +5 -5
  6. data/include/grpc/event_engine/event_engine.h +232 -16
  7. data/include/grpc/event_engine/internal/write_event.h +34 -0
  8. data/include/grpc/event_engine/memory_request.h +3 -3
  9. data/include/grpc/grpc_posix.h +20 -1
  10. data/include/grpc/impl/channel_arg_names.h +83 -55
  11. data/include/grpc/impl/compression_types.h +3 -2
  12. data/include/grpc/impl/slice_type.h +1 -1
  13. data/include/grpc/module.modulemap +1 -0
  14. data/include/grpc/status.h +1 -1
  15. data/include/grpc/support/atm.h +0 -13
  16. data/include/grpc/support/json.h +43 -37
  17. data/include/grpc/support/port_platform.h +8 -5
  18. data/include/grpc/support/workaround_list.h +1 -4
  19. data/src/core/call/call_arena_allocator.cc +27 -0
  20. data/src/core/call/call_arena_allocator.h +91 -0
  21. data/src/core/call/call_destination.h +76 -0
  22. data/src/core/call/call_filters.cc +148 -0
  23. data/src/core/call/call_filters.h +1976 -0
  24. data/src/core/call/call_finalization.h +88 -0
  25. data/src/core/call/call_spine.cc +90 -0
  26. data/src/core/call/call_spine.h +646 -0
  27. data/src/core/call/call_state.cc +39 -0
  28. data/src/core/call/call_state.h +1154 -0
  29. data/src/core/call/client_call.cc +458 -0
  30. data/src/core/call/client_call.h +192 -0
  31. data/src/core/call/custom_metadata.h +30 -0
  32. data/src/core/call/interception_chain.cc +155 -0
  33. data/src/core/call/interception_chain.h +278 -0
  34. data/src/core/call/message.cc +44 -0
  35. data/src/core/call/message.h +70 -0
  36. data/src/core/call/metadata.cc +61 -0
  37. data/src/core/call/metadata.h +218 -0
  38. data/src/core/call/metadata_batch.cc +383 -0
  39. data/src/core/call/metadata_batch.h +1668 -0
  40. data/src/core/call/metadata_compression_traits.h +66 -0
  41. data/src/core/call/metadata_info.cc +73 -0
  42. data/src/core/call/metadata_info.h +85 -0
  43. data/src/core/call/parsed_metadata.cc +35 -0
  44. data/src/core/call/parsed_metadata.h +429 -0
  45. data/src/core/call/request_buffer.cc +224 -0
  46. data/src/core/call/request_buffer.h +192 -0
  47. data/src/core/call/security_context.cc +125 -0
  48. data/src/core/call/security_context.h +114 -0
  49. data/src/core/call/server_call.cc +259 -0
  50. data/src/core/call/server_call.h +169 -0
  51. data/src/core/call/simple_slice_based_metadata.h +53 -0
  52. data/src/core/call/status_util.cc +153 -0
  53. data/src/core/call/status_util.h +80 -0
  54. data/src/core/channelz/channel_trace.cc +217 -111
  55. data/src/core/channelz/channel_trace.h +389 -64
  56. data/src/core/channelz/channelz.cc +480 -178
  57. data/src/core/channelz/channelz.h +429 -93
  58. data/src/core/channelz/channelz_registry.cc +323 -124
  59. data/src/core/channelz/channelz_registry.h +203 -21
  60. data/src/core/channelz/property_list.cc +357 -0
  61. data/src/core/channelz/property_list.h +202 -0
  62. data/src/core/channelz/ztrace_collector.h +316 -0
  63. data/src/core/client_channel/backup_poller.cc +18 -3
  64. data/src/core/client_channel/client_channel.cc +86 -99
  65. data/src/core/client_channel/client_channel.h +6 -5
  66. data/src/core/client_channel/client_channel_args.h +21 -0
  67. data/src/core/client_channel/client_channel_filter.cc +102 -198
  68. data/src/core/client_channel/client_channel_filter.h +12 -12
  69. data/src/core/client_channel/client_channel_internal.h +1 -1
  70. data/src/core/client_channel/client_channel_plugin.cc +3 -2
  71. data/src/core/client_channel/client_channel_service_config.cc +1 -1
  72. data/src/core/client_channel/client_channel_service_config.h +6 -6
  73. data/src/core/client_channel/config_selector.h +10 -4
  74. data/src/core/client_channel/connector.h +0 -3
  75. data/src/core/client_channel/direct_channel.cc +5 -5
  76. data/src/core/client_channel/direct_channel.h +1 -1
  77. data/src/core/client_channel/dynamic_filters.cc +5 -7
  78. data/src/core/client_channel/dynamic_filters.h +1 -2
  79. data/src/core/client_channel/global_subchannel_pool.cc +71 -7
  80. data/src/core/client_channel/global_subchannel_pool.h +37 -4
  81. data/src/core/client_channel/lb_metadata.cc +7 -8
  82. data/src/core/client_channel/lb_metadata.h +4 -4
  83. data/src/core/client_channel/load_balanced_call_destination.cc +6 -6
  84. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  85. data/src/core/client_channel/retry_filter.cc +22 -28
  86. data/src/core/client_channel/retry_filter.h +11 -8
  87. data/src/core/client_channel/retry_filter_legacy_call_data.cc +58 -56
  88. data/src/core/client_channel/retry_filter_legacy_call_data.h +14 -12
  89. data/src/core/client_channel/retry_interceptor.cc +394 -0
  90. data/src/core/client_channel/retry_interceptor.h +158 -0
  91. data/src/core/client_channel/retry_service_config.cc +3 -3
  92. data/src/core/client_channel/retry_service_config.h +18 -5
  93. data/src/core/client_channel/retry_throttle.cc +69 -73
  94. data/src/core/client_channel/retry_throttle.h +23 -37
  95. data/src/core/client_channel/subchannel.cc +93 -105
  96. data/src/core/client_channel/subchannel.h +15 -14
  97. data/src/core/client_channel/subchannel_pool_interface.cc +5 -6
  98. data/src/core/client_channel/subchannel_pool_interface.h +11 -1
  99. data/src/core/client_channel/subchannel_stream_client.cc +14 -12
  100. data/src/core/client_channel/subchannel_stream_client.h +5 -5
  101. data/src/core/config/config_vars.cc +164 -0
  102. data/src/core/config/config_vars.h +137 -0
  103. data/src/core/config/config_vars_non_generated.cc +49 -0
  104. data/src/core/config/core_configuration.cc +151 -0
  105. data/src/core/config/core_configuration.h +335 -0
  106. data/src/core/config/load_config.cc +78 -0
  107. data/src/core/config/load_config.h +54 -0
  108. data/src/core/credentials/call/call_credentials.h +157 -0
  109. data/src/core/credentials/call/call_creds_registry.h +125 -0
  110. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  111. data/src/core/credentials/call/call_creds_util.cc +97 -0
  112. data/src/core/credentials/call/call_creds_util.h +43 -0
  113. data/src/core/credentials/call/composite/composite_call_credentials.cc +115 -0
  114. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  115. data/src/core/credentials/call/external/aws_external_account_credentials.cc +528 -0
  116. data/src/core/credentials/call/external/aws_external_account_credentials.h +117 -0
  117. data/src/core/credentials/call/external/aws_request_signer.cc +231 -0
  118. data/src/core/credentials/call/external/aws_request_signer.h +72 -0
  119. data/src/core/credentials/call/external/external_account_credentials.cc +641 -0
  120. data/src/core/credentials/call/external/external_account_credentials.h +207 -0
  121. data/src/core/credentials/call/external/file_external_account_credentials.cc +174 -0
  122. data/src/core/credentials/call/external/file_external_account_credentials.h +80 -0
  123. data/src/core/credentials/call/external/url_external_account_credentials.cc +222 -0
  124. data/src/core/credentials/call/external/url_external_account_credentials.h +73 -0
  125. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +154 -0
  126. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  127. data/src/core/credentials/call/iam/iam_credentials.cc +78 -0
  128. data/src/core/credentials/call/iam/iam_credentials.h +66 -0
  129. data/src/core/credentials/call/json_util.cc +69 -0
  130. data/src/core/credentials/call/json_util.h +43 -0
  131. data/src/core/credentials/call/jwt/json_token.cc +318 -0
  132. data/src/core/credentials/call/jwt/json_token.h +78 -0
  133. data/src/core/credentials/call/jwt/jwt_credentials.cc +181 -0
  134. data/src/core/credentials/call/jwt/jwt_credentials.h +106 -0
  135. data/src/core/credentials/call/jwt/jwt_verifier.cc +988 -0
  136. data/src/core/credentials/call/jwt/jwt_verifier.h +122 -0
  137. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  138. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  139. data/src/core/credentials/call/jwt_util.cc +70 -0
  140. data/src/core/credentials/call/jwt_util.h +32 -0
  141. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +656 -0
  142. data/src/core/credentials/call/oauth2/oauth2_credentials.h +197 -0
  143. data/src/core/credentials/call/plugin/plugin_credentials.cc +201 -0
  144. data/src/core/credentials/call/plugin/plugin_credentials.h +123 -0
  145. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +304 -0
  146. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +181 -0
  147. data/src/core/credentials/transport/alts/alts_credentials.cc +116 -0
  148. data/src/core/credentials/transport/alts/alts_credentials.h +127 -0
  149. data/src/core/credentials/transport/alts/alts_security_connector.cc +304 -0
  150. data/src/core/credentials/transport/alts/alts_security_connector.h +78 -0
  151. data/src/core/credentials/transport/alts/check_gcp_environment.cc +71 -0
  152. data/src/core/credentials/transport/alts/check_gcp_environment.h +57 -0
  153. data/src/core/credentials/transport/alts/check_gcp_environment_linux.cc +67 -0
  154. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +32 -0
  155. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +101 -0
  156. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +123 -0
  157. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +45 -0
  158. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +74 -0
  159. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +55 -0
  160. data/src/core/credentials/transport/channel_creds_registry.h +126 -0
  161. data/src/core/credentials/transport/channel_creds_registry_init.cc +245 -0
  162. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  163. data/src/core/credentials/transport/composite/composite_channel_credentials.h +89 -0
  164. data/src/core/credentials/transport/fake/fake_credentials.cc +81 -0
  165. data/src/core/credentials/transport/fake/fake_credentials.h +92 -0
  166. data/src/core/credentials/transport/fake/fake_security_connector.cc +314 -0
  167. data/src/core/credentials/transport/fake/fake_security_connector.h +42 -0
  168. data/src/core/credentials/transport/google_default/credentials_generic.cc +38 -0
  169. data/src/core/credentials/transport/google_default/google_default_credentials.cc +510 -0
  170. data/src/core/credentials/transport/google_default/google_default_credentials.h +101 -0
  171. data/src/core/credentials/transport/insecure/insecure_credentials.cc +71 -0
  172. data/src/core/credentials/transport/insecure/insecure_credentials.h +61 -0
  173. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +118 -0
  174. data/src/core/credentials/transport/insecure/insecure_security_connector.h +102 -0
  175. data/src/core/credentials/transport/local/local_credentials.cc +68 -0
  176. data/src/core/credentials/transport/local/local_credentials.h +77 -0
  177. data/src/core/credentials/transport/local/local_security_connector.cc +306 -0
  178. data/src/core/credentials/transport/local/local_security_connector.h +62 -0
  179. data/src/core/credentials/transport/security_connector.cc +123 -0
  180. data/src/core/credentials/transport/security_connector.h +197 -0
  181. data/src/core/credentials/transport/ssl/ssl_credentials.cc +473 -0
  182. data/src/core/credentials/transport/ssl/ssl_credentials.h +144 -0
  183. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +433 -0
  184. data/src/core/credentials/transport/ssl/ssl_security_connector.h +82 -0
  185. data/src/core/credentials/transport/tls/certificate_provider_factory.h +69 -0
  186. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +50 -0
  187. data/src/core/credentials/transport/tls/certificate_provider_registry.h +75 -0
  188. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +337 -0
  189. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +215 -0
  190. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +84 -0
  191. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +490 -0
  192. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +206 -0
  193. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +237 -0
  194. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +169 -0
  195. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +161 -0
  196. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +145 -0
  197. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +257 -0
  198. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +129 -0
  199. data/src/core/credentials/transport/tls/load_system_roots.h +35 -0
  200. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +36 -0
  201. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +166 -0
  202. data/src/core/credentials/transport/tls/load_system_roots_supported.h +44 -0
  203. data/src/core/credentials/transport/tls/load_system_roots_windows.cc +85 -0
  204. data/src/core/credentials/transport/tls/ssl_utils.cc +646 -0
  205. data/src/core/credentials/transport/tls/ssl_utils.h +193 -0
  206. data/src/core/credentials/transport/tls/tls_credentials.cc +170 -0
  207. data/src/core/credentials/transport/tls/tls_credentials.h +75 -0
  208. data/src/core/credentials/transport/tls/tls_security_connector.cc +817 -0
  209. data/src/core/credentials/transport/tls/tls_security_connector.h +285 -0
  210. data/src/core/credentials/transport/tls/tls_utils.cc +127 -0
  211. data/src/core/credentials/transport/tls/tls_utils.h +50 -0
  212. data/src/core/credentials/transport/transport_credentials.cc +158 -0
  213. data/src/core/credentials/transport/transport_credentials.h +182 -0
  214. data/src/core/credentials/transport/xds/xds_credentials.cc +228 -0
  215. data/src/core/credentials/transport/xds/xds_credentials.h +110 -0
  216. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -13
  217. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +7 -7
  218. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +17 -11
  219. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +11 -18
  220. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -6
  221. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -2
  222. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
  223. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +11 -18
  224. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +21 -21
  225. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +1 -1
  226. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +2 -2
  227. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -6
  228. data/src/core/ext/filters/http/client/http_client_filter.h +5 -5
  229. data/src/core/ext/filters/http/client_authority_filter.cc +5 -12
  230. data/src/core/ext/filters/http/client_authority_filter.h +6 -6
  231. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  232. data/src/core/ext/filters/http/message_compress/compression_filter.cc +21 -25
  233. data/src/core/ext/filters/http/message_compress/compression_filter.h +56 -18
  234. data/src/core/ext/filters/http/server/http_server_filter.cc +5 -10
  235. data/src/core/ext/filters/http/server/http_server_filter.h +22 -10
  236. data/src/core/ext/filters/message_size/message_size_filter.cc +15 -27
  237. data/src/core/ext/filters/message_size/message_size_filter.h +21 -22
  238. data/src/core/ext/filters/rbac/rbac_filter.cc +3 -10
  239. data/src/core/ext/filters/rbac/rbac_filter.h +6 -6
  240. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  241. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  242. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -8
  243. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -4
  244. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +1 -1
  245. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  246. data/src/core/ext/transport/chttp2/chttp2_plugin.cc +40 -0
  247. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +134 -153
  248. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -3
  249. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +356 -769
  250. data/src/core/ext/transport/chttp2/server/chttp2_server.h +197 -13
  251. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -3
  252. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +3 -3
  253. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  254. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +5 -7
  255. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +402 -167
  256. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +7 -13
  257. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  258. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  259. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  260. data/src/core/ext/transport/chttp2/transport/flow_control.h +26 -3
  261. data/src/core/ext/transport/chttp2/transport/frame.cc +326 -167
  262. data/src/core/ext/transport/chttp2/transport/frame.h +126 -8
  263. data/src/core/ext/transport/chttp2/transport/frame_data.cc +25 -8
  264. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -0
  265. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +23 -11
  266. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -3
  267. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
  268. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -7
  269. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -1
  270. data/src/core/ext/transport/chttp2/transport/frame_security.cc +80 -0
  271. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  272. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +43 -8
  273. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +21 -0
  274. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  275. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +12 -5
  276. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +7 -5
  277. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -3
  278. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  279. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +36 -35
  280. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -8
  281. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  282. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +14 -3
  283. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  284. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  285. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -10
  286. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -5
  287. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.cc +30 -0
  288. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  289. data/src/core/ext/transport/chttp2/transport/http2_status.h +414 -0
  290. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  291. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  292. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +223 -0
  293. data/src/core/ext/transport/chttp2/transport/internal.h +90 -23
  294. data/src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h +24 -0
  295. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  296. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  297. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  298. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  299. data/src/core/ext/transport/chttp2/transport/parsing.cc +91 -43
  300. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -1
  301. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  302. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +21 -2
  303. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  304. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  305. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +17 -20
  306. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +19 -2
  307. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +40 -1
  308. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  309. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  310. data/src/core/ext/transport/chttp2/transport/varint.cc +4 -4
  311. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +1 -1
  312. data/src/core/ext/transport/chttp2/transport/writing.cc +109 -77
  313. data/src/core/ext/transport/inproc/inproc_transport.cc +10 -7
  314. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +23 -14
  315. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +7 -3
  316. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +8 -8
  317. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +3 -3
  318. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +68 -68
  319. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +34 -34
  320. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +3 -3
  321. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +3 -3
  322. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +10 -10
  323. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +3 -3
  324. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +20 -18
  325. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +44 -44
  326. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +3 -3
  327. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +3 -3
  328. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +2 -2
  329. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +3 -3
  330. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +3 -3
  331. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +4 -4
  332. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +3 -3
  333. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +3 -3
  334. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +3 -3
  335. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +9 -9
  336. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  337. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +3 -3
  338. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +3 -3
  339. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +3 -3
  340. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +149 -133
  341. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +76 -75
  342. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +3 -3
  343. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +3 -3
  344. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +2 -2
  345. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +3 -3
  346. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +3 -3
  347. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +3 -3
  348. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +5 -5
  349. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +1 -1
  350. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +3 -3
  351. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +41 -29
  352. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +29 -29
  353. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +3 -3
  354. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +231 -243
  355. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +104 -104
  356. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +3 -3
  357. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +30 -30
  358. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +15 -15
  359. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +3 -3
  360. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +367 -349
  361. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +152 -150
  362. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +3 -3
  363. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +3 -3
  364. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +2 -2
  365. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +3 -3
  366. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +61 -61
  367. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +16 -16
  368. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +3 -3
  369. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +53 -49
  370. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +31 -31
  371. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +3 -3
  372. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +44 -32
  373. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +26 -26
  374. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +3 -3
  375. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +3 -3
  376. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +2 -2
  377. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +3 -3
  378. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +329 -262
  379. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +126 -100
  380. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +5 -3
  381. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +61 -57
  382. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +31 -31
  383. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +3 -3
  384. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +7 -3
  385. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +2 -2
  386. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +3 -3
  387. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +3 -3
  388. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +2 -2
  389. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +3 -3
  390. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +3 -3
  391. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +2 -2
  392. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +3 -3
  393. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +91 -95
  394. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +35 -35
  395. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +3 -3
  396. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +115 -103
  397. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +44 -44
  398. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +3 -3
  399. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +3 -3
  400. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +2 -2
  401. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +3 -3
  402. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +19 -15
  403. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +7 -7
  404. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +3 -3
  405. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +216 -117
  406. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +71 -65
  407. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +3 -3
  408. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +3 -3
  409. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +2 -2
  410. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +3 -3
  411. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +3 -3
  412. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +2 -2
  413. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +3 -3
  414. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  415. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  416. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  417. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +232 -21
  418. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +65 -17
  419. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +9 -3
  420. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +34 -30
  421. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +12 -12
  422. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +3 -3
  423. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +3 -3
  424. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +2 -2
  425. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +3 -3
  426. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +15 -40
  427. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +10 -10
  428. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +3 -3
  429. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +52 -44
  430. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +30 -30
  431. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +3 -3
  432. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +27 -27
  433. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +15 -15
  434. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +3 -3
  435. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +3 -3
  436. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +2 -2
  437. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +3 -3
  438. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +150 -142
  439. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +56 -56
  440. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +3 -3
  441. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +80 -167
  442. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +37 -58
  443. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +3 -5
  444. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +88 -3
  445. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +26 -4
  446. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +3 -3
  447. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +3 -3
  448. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +2 -2
  449. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +3 -3
  450. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +9 -9
  451. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +6 -6
  452. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +3 -3
  453. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +56 -36
  454. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +26 -26
  455. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +3 -3
  456. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +17 -4
  457. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +14 -14
  458. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +3 -3
  459. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +175 -39
  460. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +60 -30
  461. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +5 -3
  462. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +55 -80
  463. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +16 -16
  464. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +3 -3
  465. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +927 -686
  466. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +366 -309
  467. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +7 -3
  468. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -16
  469. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +8 -8
  470. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +3 -3
  471. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +18 -6
  472. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +20 -20
  473. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +3 -3
  474. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +3 -3
  475. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +4 -4
  476. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +3 -3
  477. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +3 -3
  478. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +2 -2
  479. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +3 -3
  480. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +7 -3
  481. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +4 -4
  482. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +3 -3
  483. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +3 -3
  484. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +2 -2
  485. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +3 -3
  486. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +10 -10
  487. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +5 -5
  488. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +3 -3
  489. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +3 -3
  490. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +2 -2
  491. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +3 -3
  492. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +22 -18
  493. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +11 -11
  494. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +3 -3
  495. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +3 -5
  496. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +0 -1
  497. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +3 -4
  498. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +10 -10
  499. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +7 -7
  500. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +3 -3
  501. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +19 -19
  502. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +12 -12
  503. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +3 -3
  504. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +313 -410
  505. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +114 -114
  506. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +3 -3
  507. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +3 -3
  508. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +3 -3
  509. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +11 -3
  510. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +4 -4
  511. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +3 -3
  512. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +68 -64
  513. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +31 -31
  514. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +3 -3
  515. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +22 -22
  516. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +10 -10
  517. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +3 -3
  518. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +28 -28
  519. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +13 -13
  520. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +3 -3
  521. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +37 -37
  522. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +13 -13
  523. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +3 -3
  524. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +10 -6
  525. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +6 -6
  526. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +3 -3
  527. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +338 -294
  528. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +144 -143
  529. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +3 -3
  530. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +3 -3
  531. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +2 -2
  532. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +3 -3
  533. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +63 -3
  534. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +15 -4
  535. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +3 -3
  536. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +10 -6
  537. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +9 -9
  538. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +3 -3
  539. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +3 -3
  540. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +3 -3
  541. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +26 -26
  542. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +10 -10
  543. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +3 -3
  544. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +3 -3
  545. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +2 -2
  546. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +3 -3
  547. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +3 -4
  548. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +2 -3
  549. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +3 -3
  550. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +3 -3
  551. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +3 -3
  552. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +91 -87
  553. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +38 -38
  554. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +3 -3
  555. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +7 -3
  556. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +6 -6
  557. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +3 -3
  558. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +167 -77
  559. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +58 -49
  560. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +3 -3
  561. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +40 -10
  562. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +10 -8
  563. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +3 -3
  564. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +35 -27
  565. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +13 -13
  566. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +3 -3
  567. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +3 -3
  568. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +3 -3
  569. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +367 -164
  570. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +94 -69
  571. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +5 -3
  572. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +9 -9
  573. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +6 -6
  574. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +3 -3
  575. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +69 -64
  576. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +36 -36
  577. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +3 -3
  578. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -10
  579. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +5 -5
  580. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +3 -3
  581. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +7 -3
  582. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +4 -4
  583. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +3 -3
  584. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
  585. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
  586. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
  587. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +40 -3
  588. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +8 -5
  589. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +3 -3
  590. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +3 -3
  591. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +3 -3
  592. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +13 -9
  593. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +4 -4
  594. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +3 -3
  595. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +3 -3
  596. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +2 -2
  597. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +3 -3
  598. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +7 -3
  599. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +2 -2
  600. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +3 -3
  601. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +7 -3
  602. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +2 -2
  603. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +3 -3
  604. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +14 -10
  605. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +9 -9
  606. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +3 -3
  607. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +3 -3
  608. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +3 -3
  609. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +7 -3
  610. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +4 -4
  611. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +3 -3
  612. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +7 -3
  613. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +2 -2
  614. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +3 -3
  615. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +11 -3
  616. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +6 -6
  617. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +3 -3
  618. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +11 -3
  619. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +4 -4
  620. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +3 -3
  621. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +18 -14
  622. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +8 -8
  623. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +3 -3
  624. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +7 -3
  625. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +2 -2
  626. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +3 -3
  627. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +3 -3
  628. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +3 -3
  629. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +3 -3
  630. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +3 -3
  631. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +3 -3
  632. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +3 -3
  633. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +3 -3
  634. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +3 -3
  635. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +7 -3
  636. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +2 -2
  637. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +3 -3
  638. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +3 -3
  639. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +3 -3
  640. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +3 -3
  641. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +3 -3
  642. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +3 -3
  643. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +2 -2
  644. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +3 -3
  645. data/src/core/ext/upb-gen/google/api/annotations.upb.h +5 -5
  646. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +1 -1
  647. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +3 -3
  648. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +96 -136
  649. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +46 -46
  650. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +3 -3
  651. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +95 -126
  652. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +51 -51
  653. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +3 -3
  654. data/src/core/ext/upb-gen/google/api/http.upb.h +59 -54
  655. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +26 -26
  656. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +3 -3
  657. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +3 -3
  658. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +2 -2
  659. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +3 -3
  660. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +4 -3
  661. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +3 -3
  662. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +520 -320
  663. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +267 -217
  664. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +25 -20
  665. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +4 -3
  666. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +3 -3
  667. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +4 -3
  668. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +3 -3
  669. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +17 -36
  670. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +8 -8
  671. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +3 -3
  672. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +4 -3
  673. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +3 -3
  674. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +4 -3
  675. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +3 -3
  676. data/src/core/ext/upb-gen/google/rpc/status.upb.h +3 -3
  677. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +2 -2
  678. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +3 -3
  679. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  680. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  681. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  682. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  683. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  684. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  685. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  686. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  687. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  688. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +12 -31
  689. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +2 -2
  690. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +3 -3
  691. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +202 -145
  692. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +50 -44
  693. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +3 -3
  694. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +158 -3
  695. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +42 -4
  696. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -3
  697. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +4 -3
  698. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +3 -3
  699. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +17 -9
  700. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +14 -14
  701. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +3 -3
  702. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +25 -43
  703. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +5 -5
  704. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +3 -3
  705. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +73 -111
  706. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +25 -25
  707. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +3 -3
  708. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +13 -13
  709. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +5 -5
  710. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +3 -3
  711. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +5 -5
  712. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +1 -1
  713. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +3 -3
  714. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +3 -3
  715. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +3 -3
  716. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +5 -5
  717. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +1 -1
  718. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +3 -3
  719. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +5 -5
  720. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +1 -1
  721. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +3 -3
  722. data/src/core/ext/upb-gen/validate/validate.upb.h +385 -373
  723. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +133 -133
  724. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -4
  725. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +13 -13
  726. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +5 -5
  727. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +3 -3
  728. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +5 -5
  729. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +1 -1
  730. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +3 -3
  731. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +3 -3
  732. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +3 -3
  733. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +9 -9
  734. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +3 -3
  735. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -3
  736. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +5 -5
  737. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +1 -1
  738. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +3 -3
  739. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +3 -3
  740. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +3 -3
  741. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +3 -3
  742. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +2 -2
  743. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +3 -3
  744. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +7 -3
  745. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +4 -4
  746. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +3 -3
  747. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +12 -31
  748. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +2 -2
  749. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +3 -3
  750. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +3 -3
  751. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +2 -2
  752. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +3 -3
  753. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +10 -10
  754. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +5 -5
  755. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +3 -3
  756. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +23 -15
  757. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +6 -6
  758. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +3 -3
  759. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +3 -3
  760. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +2 -2
  761. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +3 -3
  762. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +30 -87
  763. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +2 -2
  764. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +3 -3
  765. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +3 -3
  766. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +2 -2
  767. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +3 -3
  768. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +10 -10
  769. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +5 -5
  770. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +3 -3
  771. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +3 -3
  772. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +4 -4
  773. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +3 -3
  774. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +3 -3
  775. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +3 -3
  776. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +6 -6
  777. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +5 -5
  778. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +3 -3
  779. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +45 -49
  780. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +23 -23
  781. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +3 -3
  782. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +3 -3
  783. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +12 -12
  784. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +3 -3
  785. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +7 -3
  786. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +2 -2
  787. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +3 -3
  788. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +7 -3
  789. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +4 -4
  790. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +3 -3
  791. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +7 -3
  792. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +4 -4
  793. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +3 -3
  794. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +4 -3
  795. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +3 -3
  796. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +3 -3
  797. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +2 -2
  798. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +3 -3
  799. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +123 -62
  800. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +8 -4
  801. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +200 -101
  802. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +8 -4
  803. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +152 -77
  804. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +8 -4
  805. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +524 -254
  806. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +8 -4
  807. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +44 -23
  808. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +8 -4
  809. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +66 -34
  810. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +8 -4
  811. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +54 -28
  812. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +8 -4
  813. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +46 -25
  814. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +8 -4
  815. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +47 -25
  816. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +8 -4
  817. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +256 -124
  818. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +8 -4
  819. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -28
  820. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +8 -4
  821. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +55 -28
  822. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +8 -4
  823. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +34 -18
  824. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +8 -4
  825. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +414 -206
  826. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +8 -4
  827. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +831 -413
  828. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +8 -4
  829. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +143 -73
  830. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +8 -4
  831. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1132 -552
  832. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +8 -4
  833. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +63 -34
  834. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +8 -4
  835. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +255 -127
  836. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +8 -4
  837. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +363 -178
  838. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +8 -4
  839. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +227 -114
  840. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +8 -4
  841. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +57 -31
  842. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +8 -4
  843. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +596 -287
  844. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +13 -4
  845. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +271 -137
  846. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +8 -4
  847. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +56 -30
  848. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +8 -4
  849. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +45 -25
  850. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +8 -4
  851. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +59 -31
  852. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +8 -4
  853. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +438 -217
  854. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +8 -4
  855. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +441 -221
  856. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +8 -4
  857. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +55 -30
  858. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +8 -4
  859. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +57 -31
  860. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +8 -4
  861. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +619 -294
  862. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +8 -4
  863. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +70 -36
  864. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +8 -4
  865. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +62 -33
  866. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +8 -4
  867. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +68 -0
  868. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +37 -0
  869. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +97 -39
  870. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +23 -4
  871. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +97 -51
  872. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +8 -4
  873. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +51 -27
  874. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +8 -4
  875. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +147 -76
  876. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +8 -4
  877. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +230 -116
  878. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +8 -4
  879. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +277 -138
  880. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +8 -4
  881. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +48 -26
  882. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +8 -4
  883. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +388 -197
  884. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +8 -4
  885. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +304 -160
  886. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +8 -9
  887. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +175 -82
  888. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +8 -4
  889. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +90 -47
  890. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +8 -4
  891. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +98 -51
  892. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +8 -4
  893. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +196 -99
  894. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +8 -4
  895. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +237 -117
  896. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +8 -4
  897. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +418 -193
  898. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +13 -4
  899. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +194 -99
  900. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +8 -4
  901. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2004 -955
  902. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +18 -4
  903. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +101 -53
  904. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +8 -4
  905. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +352 -176
  906. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +8 -4
  907. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +79 -42
  908. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +8 -4
  909. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +67 -37
  910. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +8 -4
  911. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +63 -34
  912. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +8 -4
  913. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +88 -47
  914. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +8 -4
  915. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +80 -43
  916. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +8 -4
  917. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +53 -29
  918. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +8 -4
  919. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +86 -46
  920. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +8 -4
  921. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +56 -36
  922. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +8 -4
  923. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +91 -49
  924. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +8 -4
  925. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +105 -55
  926. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +8 -4
  927. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +775 -379
  928. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +8 -4
  929. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +52 -28
  930. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +8 -4
  931. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +134 -68
  932. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +8 -4
  933. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +189 -96
  934. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +8 -4
  935. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +116 -61
  936. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +8 -4
  937. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +112 -58
  938. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +8 -4
  939. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +160 -82
  940. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +8 -4
  941. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +75 -39
  942. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +8 -4
  943. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1161 -567
  944. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +8 -4
  945. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +52 -28
  946. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +8 -4
  947. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +56 -33
  948. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +8 -4
  949. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -26
  950. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +8 -4
  951. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +390 -194
  952. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +8 -4
  953. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +126 -65
  954. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +8 -4
  955. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +498 -235
  956. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +8 -4
  957. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +74 -36
  958. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +8 -4
  959. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +221 -110
  960. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +8 -4
  961. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +68 -36
  962. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +8 -4
  963. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +378 -174
  964. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +13 -4
  965. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +100 -52
  966. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +8 -4
  967. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +257 -128
  968. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +8 -4
  969. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +44 -24
  970. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +8 -4
  971. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +68 -35
  972. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +8 -4
  973. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +59 -0
  974. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +37 -0
  975. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +61 -27
  976. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +8 -4
  977. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +65 -34
  978. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +8 -4
  979. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +72 -38
  980. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +8 -4
  981. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +57 -31
  982. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +8 -4
  983. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +52 -29
  984. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +8 -4
  985. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +51 -28
  986. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +8 -4
  987. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +89 -47
  988. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +8 -4
  989. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +37 -20
  990. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +8 -4
  991. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +89 -47
  992. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +8 -4
  993. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +67 -35
  994. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +8 -4
  995. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +112 -58
  996. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +8 -4
  997. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +110 -56
  998. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +8 -4
  999. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +123 -62
  1000. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +8 -4
  1001. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +59 -31
  1002. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +8 -4
  1003. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +30 -16
  1004. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +8 -4
  1005. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +143 -72
  1006. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +8 -4
  1007. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +61 -32
  1008. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +8 -4
  1009. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +51 -27
  1010. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +8 -4
  1011. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +85 -45
  1012. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +8 -4
  1013. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +35 -19
  1014. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +8 -4
  1015. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +44 -23
  1016. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +8 -4
  1017. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +61 -33
  1018. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +8 -4
  1019. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +35 -19
  1020. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +8 -4
  1021. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +272 -133
  1022. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +8 -4
  1023. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +315 -154
  1024. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +8 -4
  1025. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +64 -33
  1026. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +8 -4
  1027. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +35 -19
  1028. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +8 -4
  1029. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +26 -15
  1030. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +8 -4
  1031. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +1106 -496
  1032. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +13 -4
  1033. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +28 -16
  1034. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +8 -4
  1035. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +23 -13
  1036. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +8 -4
  1037. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +69 -35
  1038. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +8 -4
  1039. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +29 -16
  1040. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +8 -4
  1041. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +51 -26
  1042. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +8 -4
  1043. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +32 -17
  1044. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +8 -4
  1045. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  1046. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  1047. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  1048. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  1049. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +161 -79
  1050. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +8 -4
  1051. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +84 -42
  1052. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +8 -4
  1053. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +48 -26
  1054. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +8 -4
  1055. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +26 -14
  1056. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +8 -4
  1057. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +50 -26
  1058. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +8 -4
  1059. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +36 -19
  1060. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +8 -4
  1061. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +538 -261
  1062. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +8 -4
  1063. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +86 -43
  1064. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +8 -4
  1065. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +49 -26
  1066. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +8 -4
  1067. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +27 -15
  1068. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +8 -4
  1069. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +87 -44
  1070. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +8 -4
  1071. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +37 -20
  1072. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +8 -4
  1073. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +30 -17
  1074. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +8 -4
  1075. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +41 -23
  1076. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +8 -4
  1077. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +62 -33
  1078. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +8 -4
  1079. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +36 -19
  1080. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +8 -4
  1081. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +36 -20
  1082. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +8 -4
  1083. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +42 -23
  1084. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +8 -4
  1085. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +76 -39
  1086. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +8 -4
  1087. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -24
  1088. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +8 -4
  1089. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +41 -23
  1090. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +8 -4
  1091. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +53 -29
  1092. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +8 -4
  1093. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +29 -16
  1094. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +8 -4
  1095. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +58 -32
  1096. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +8 -4
  1097. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +207 -103
  1098. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +8 -4
  1099. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +95 -49
  1100. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +8 -4
  1101. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +38 -20
  1102. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +8 -4
  1103. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +60 -31
  1104. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +8 -4
  1105. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +67 -36
  1106. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +8 -4
  1107. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +31 -17
  1108. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +8 -4
  1109. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +31 -17
  1110. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +8 -4
  1111. data/src/core/filter/auth/auth_filters.h +208 -0
  1112. data/src/core/filter/auth/client_auth_filter.cc +192 -0
  1113. data/src/core/filter/auth/server_auth_filter.cc +208 -0
  1114. data/src/core/filter/blackboard.cc +2 -2
  1115. data/src/core/filter/filter_args.h +98 -0
  1116. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  1117. data/src/core/handshaker/handshaker.cc +23 -25
  1118. data/src/core/handshaker/handshaker.h +3 -0
  1119. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +13 -7
  1120. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  1121. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +36 -52
  1122. data/src/core/handshaker/http_connect/http_proxy_mapper.h +5 -5
  1123. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +5 -5
  1124. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +6 -6
  1125. data/src/core/handshaker/proxy_mapper.h +4 -4
  1126. data/src/core/handshaker/proxy_mapper_registry.cc +5 -6
  1127. data/src/core/handshaker/proxy_mapper_registry.h +4 -4
  1128. data/src/core/handshaker/security/legacy_secure_endpoint.cc +597 -0
  1129. data/src/core/handshaker/security/secure_endpoint.cc +813 -311
  1130. data/src/core/handshaker/security/secure_endpoint.h +17 -0
  1131. data/src/core/handshaker/security/security_handshaker.cc +12 -11
  1132. data/src/core/handshaker/security/security_handshaker.h +2 -2
  1133. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +14 -6
  1134. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1135. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -5
  1136. data/src/core/lib/channel/channel_args.cc +28 -13
  1137. data/src/core/lib/channel/channel_args.h +65 -39
  1138. data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
  1139. data/src/core/lib/channel/channel_stack.cc +32 -4
  1140. data/src/core/lib/channel/channel_stack.h +16 -6
  1141. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -2
  1142. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  1143. data/src/core/lib/channel/connected_channel.cc +4 -4
  1144. data/src/core/lib/channel/promise_based_filter.cc +10 -10
  1145. data/src/core/lib/channel/promise_based_filter.h +749 -416
  1146. data/src/core/lib/compression/compression.cc +3 -2
  1147. data/src/core/lib/compression/compression_internal.cc +9 -9
  1148. data/src/core/lib/compression/compression_internal.h +3 -3
  1149. data/src/core/lib/debug/trace.cc +1 -1
  1150. data/src/core/lib/debug/trace_flags.cc +7 -6
  1151. data/src/core/lib/debug/trace_flags.h +3 -3
  1152. data/src/core/lib/debug/trace_impl.h +0 -1
  1153. data/src/core/lib/event_engine/ares_resolver.cc +175 -60
  1154. data/src/core/lib/event_engine/ares_resolver.h +54 -12
  1155. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +10 -6
  1156. data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -8
  1157. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +10 -11
  1158. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -10
  1159. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +2 -4
  1160. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +9 -10
  1161. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -4
  1162. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -7
  1163. data/src/core/lib/event_engine/channel_args_endpoint_config.h +6 -7
  1164. data/src/core/lib/event_engine/common_closures.h +2 -4
  1165. data/src/core/lib/event_engine/default_event_engine.cc +63 -34
  1166. data/src/core/lib/event_engine/default_event_engine.h +25 -34
  1167. data/src/core/lib/event_engine/default_event_engine_factory.cc +12 -18
  1168. data/src/core/lib/event_engine/default_event_engine_factory.h +3 -5
  1169. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  1170. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  1171. data/src/core/lib/event_engine/event_engine.cc +9 -4
  1172. data/src/core/lib/event_engine/extensions/blocking_dns.h +46 -0
  1173. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -4
  1174. data/src/core/lib/event_engine/extensions/channelz.h +66 -0
  1175. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -4
  1176. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  1177. data/src/core/lib/event_engine/extensions/supports_fd.h +2 -4
  1178. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  1179. data/src/core/lib/event_engine/extensions/tcp_trace.h +4 -6
  1180. data/src/core/lib/event_engine/grpc_polled_fd.h +7 -4
  1181. data/src/core/lib/event_engine/handle_containers.h +2 -4
  1182. data/src/core/lib/event_engine/memory_allocator_factory.h +2 -4
  1183. data/src/core/lib/event_engine/nameser.h +1 -1
  1184. data/src/core/lib/event_engine/poller.h +2 -4
  1185. data/src/core/lib/event_engine/posix.h +2 -4
  1186. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +134 -212
  1187. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +13 -19
  1188. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +83 -172
  1189. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +9 -13
  1190. data/src/core/lib/event_engine/posix_engine/event_poller.h +20 -19
  1191. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -23
  1192. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -4
  1193. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  1194. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  1195. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +31 -23
  1196. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +8 -6
  1197. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +8 -5
  1198. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -4
  1199. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -4
  1200. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +6 -11
  1201. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +5 -4
  1202. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +170 -110
  1203. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +31 -37
  1204. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +344 -104
  1205. data/src/core/lib/event_engine/posix_engine/posix_engine.h +74 -35
  1206. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -4
  1207. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +49 -43
  1208. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +8 -8
  1209. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +60 -146
  1210. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +12 -9
  1211. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  1212. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  1213. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  1214. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  1215. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  1216. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  1217. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +8 -736
  1218. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +12 -174
  1219. data/src/core/lib/event_engine/posix_engine/timer.cc +4 -6
  1220. data/src/core/lib/event_engine/posix_engine/timer.h +4 -6
  1221. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +3 -5
  1222. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -4
  1223. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +38 -29
  1224. data/src/core/lib/event_engine/posix_engine/timer_manager.h +17 -17
  1225. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +119 -157
  1226. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +30 -99
  1227. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +28 -29
  1228. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +8 -6
  1229. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +38 -58
  1230. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +8 -6
  1231. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +9 -10
  1232. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +14 -10
  1233. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +5 -5
  1234. data/src/core/lib/event_engine/query_extensions.h +12 -25
  1235. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +2 -4
  1236. data/src/core/lib/event_engine/resolved_address.cc +2 -4
  1237. data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
  1238. data/src/core/lib/event_engine/shim.cc +18 -18
  1239. data/src/core/lib/event_engine/shim.h +16 -4
  1240. data/src/core/lib/event_engine/slice.cc +2 -4
  1241. data/src/core/lib/event_engine/slice_buffer.cc +2 -4
  1242. data/src/core/lib/event_engine/tcp_socket_utils.cc +16 -23
  1243. data/src/core/lib/event_engine/tcp_socket_utils.h +5 -7
  1244. data/src/core/lib/event_engine/thread_local.cc +2 -4
  1245. data/src/core/lib/event_engine/thread_local.h +2 -4
  1246. data/src/core/lib/event_engine/thread_pool/thread_count.cc +2 -4
  1247. data/src/core/lib/event_engine/thread_pool/thread_count.h +4 -18
  1248. data/src/core/lib/event_engine/thread_pool/thread_pool.h +9 -7
  1249. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -21
  1250. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +23 -15
  1251. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +7 -7
  1252. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +2 -4
  1253. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +2 -4
  1254. data/src/core/lib/event_engine/time_util.cc +2 -4
  1255. data/src/core/lib/event_engine/time_util.h +2 -4
  1256. data/src/core/lib/event_engine/utils.cc +36 -4
  1257. data/src/core/lib/event_engine/utils.h +5 -4
  1258. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +7 -5
  1259. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +6 -4
  1260. data/src/core/lib/event_engine/windows/iocp.cc +2 -4
  1261. data/src/core/lib/event_engine/windows/iocp.h +2 -4
  1262. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +2 -4
  1263. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
  1264. data/src/core/lib/event_engine/windows/win_socket.cc +13 -4
  1265. data/src/core/lib/event_engine/windows/win_socket.h +5 -4
  1266. data/src/core/lib/event_engine/windows/windows_endpoint.cc +32 -25
  1267. data/src/core/lib/event_engine/windows/windows_endpoint.h +9 -8
  1268. data/src/core/lib/event_engine/windows/windows_engine.cc +44 -4
  1269. data/src/core/lib/event_engine/windows/windows_engine.h +10 -8
  1270. data/src/core/lib/event_engine/windows/windows_listener.cc +21 -12
  1271. data/src/core/lib/event_engine/windows/windows_listener.h +11 -8
  1272. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -4
  1273. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -4
  1274. data/src/core/lib/event_engine/work_queue/work_queue.h +2 -4
  1275. data/src/core/lib/experiments/config.cc +1 -1
  1276. data/src/core/lib/experiments/experiments.cc +515 -187
  1277. data/src/core/lib/experiments/experiments.h +190 -91
  1278. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  1279. data/src/core/lib/iomgr/buffer_list.h +22 -21
  1280. data/src/core/lib/iomgr/call_combiner.h +1 -1
  1281. data/src/core/lib/iomgr/cfstream_handle.cc +0 -2
  1282. data/src/core/lib/iomgr/closure.h +1 -2
  1283. data/src/core/lib/iomgr/combiner.cc +3 -3
  1284. data/src/core/lib/iomgr/combiner.h +1 -1
  1285. data/src/core/lib/iomgr/endpoint.cc +4 -3
  1286. data/src/core/lib/iomgr/endpoint.h +7 -4
  1287. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  1288. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  1289. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  1290. data/src/core/lib/iomgr/error.cc +28 -44
  1291. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  1292. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -3
  1293. data/src/core/lib/iomgr/ev_poll_posix.cc +22 -0
  1294. data/src/core/lib/iomgr/ev_posix.cc +1 -1
  1295. data/src/core/lib/iomgr/event_engine_shims/closure.cc +0 -1
  1296. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +12 -13
  1297. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +0 -1
  1298. data/src/core/lib/iomgr/exec_ctx.cc +1 -7
  1299. data/src/core/lib/iomgr/exec_ctx.h +1 -132
  1300. data/src/core/lib/iomgr/fork_posix.cc +0 -7
  1301. data/src/core/lib/iomgr/iomgr.cc +1 -4
  1302. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1303. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -0
  1304. data/src/core/lib/iomgr/iomgr_windows.cc +3 -1
  1305. data/src/core/lib/iomgr/nameser.h +1 -1
  1306. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  1307. data/src/core/lib/iomgr/resolve_address_posix.cc +37 -49
  1308. data/src/core/lib/iomgr/resolve_address_posix.h +15 -0
  1309. data/src/core/lib/iomgr/resolve_address_windows.cc +22 -47
  1310. data/src/core/lib/iomgr/resolve_address_windows.h +15 -2
  1311. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  1312. data/src/core/lib/iomgr/socket_utils_posix.cc +23 -11
  1313. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  1314. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  1315. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -23
  1316. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  1317. data/src/core/lib/iomgr/tcp_client_windows.cc +3 -3
  1318. data/src/core/lib/iomgr/tcp_posix.cc +84 -48
  1319. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  1320. data/src/core/lib/iomgr/tcp_server_posix.cc +10 -4
  1321. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  1322. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  1323. data/src/core/lib/iomgr/tcp_server_windows.cc +44 -22
  1324. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  1325. data/src/core/lib/iomgr/timer_generic.cc +1 -1
  1326. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  1327. data/src/core/lib/iomgr/timer_manager.cc +1 -9
  1328. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +11 -3
  1329. data/src/core/lib/promise/activity.cc +2 -0
  1330. data/src/core/lib/promise/activity.h +35 -13
  1331. data/src/core/lib/promise/all_ok.h +68 -0
  1332. data/src/core/lib/promise/arena_promise.h +23 -7
  1333. data/src/core/lib/promise/detail/basic_seq.h +32 -18
  1334. data/src/core/lib/promise/detail/join_state.h +16 -68
  1335. data/src/core/lib/promise/detail/promise_factory.h +96 -26
  1336. data/src/core/lib/promise/detail/promise_like.h +163 -12
  1337. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  1338. data/src/core/lib/promise/detail/seq_state.h +1162 -495
  1339. data/src/core/lib/promise/for_each.h +14 -5
  1340. data/src/core/lib/promise/if.h +68 -20
  1341. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  1342. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  1343. data/src/core/lib/promise/interceptor_list.h +9 -9
  1344. data/src/core/lib/promise/latch.h +14 -6
  1345. data/src/core/lib/promise/loop.h +131 -17
  1346. data/src/core/lib/promise/map.h +269 -18
  1347. data/src/core/lib/promise/match_promise.h +103 -0
  1348. data/src/core/lib/promise/mpsc.cc +425 -0
  1349. data/src/core/lib/promise/mpsc.h +490 -0
  1350. data/src/core/lib/promise/party.cc +144 -68
  1351. data/src/core/lib/promise/party.h +340 -54
  1352. data/src/core/lib/promise/pipe.h +12 -12
  1353. data/src/core/lib/promise/poll.h +34 -16
  1354. data/src/core/lib/promise/prioritized_race.h +16 -22
  1355. data/src/core/lib/promise/promise.h +6 -5
  1356. data/src/core/lib/promise/race.h +35 -12
  1357. data/src/core/lib/promise/seq.h +52 -35
  1358. data/src/core/lib/promise/sleep.cc +9 -6
  1359. data/src/core/lib/promise/sleep.h +15 -1
  1360. data/src/core/lib/promise/status_flag.h +54 -12
  1361. data/src/core/lib/promise/try_join.h +119 -5
  1362. data/src/core/lib/promise/try_seq.h +79 -49
  1363. data/src/core/lib/promise/wait_set.cc +28 -0
  1364. data/src/core/lib/promise/wait_set.h +86 -0
  1365. data/src/core/lib/resource_quota/api.h +1 -1
  1366. data/src/core/lib/resource_quota/arena.h +106 -0
  1367. data/src/core/lib/resource_quota/connection_quota.h +4 -0
  1368. data/src/core/lib/resource_quota/memory_quota.cc +78 -54
  1369. data/src/core/lib/resource_quota/memory_quota.h +10 -8
  1370. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  1371. data/src/core/lib/security/authorization/evaluate_args.cc +4 -4
  1372. data/src/core/lib/security/authorization/evaluate_args.h +4 -4
  1373. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -8
  1374. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +7 -7
  1375. data/src/core/lib/security/authorization/matchers.h +3 -3
  1376. data/src/core/lib/security/authorization/rbac_policy.cc +1 -1
  1377. data/src/core/lib/security/authorization/rbac_policy.h +3 -3
  1378. data/src/core/lib/slice/slice.h +11 -0
  1379. data/src/core/lib/slice/slice_buffer.cc +3 -2
  1380. data/src/core/lib/slice/slice_buffer.h +8 -2
  1381. data/src/core/lib/surface/call.cc +24 -22
  1382. data/src/core/lib/surface/call.h +4 -3
  1383. data/src/core/lib/surface/call_utils.cc +5 -5
  1384. data/src/core/lib/surface/call_utils.h +17 -7
  1385. data/src/core/lib/surface/channel.cc +6 -14
  1386. data/src/core/lib/surface/channel.h +5 -5
  1387. data/src/core/lib/surface/channel_create.cc +140 -5
  1388. data/src/core/lib/surface/channel_create.h +4 -0
  1389. data/src/core/lib/surface/channel_init.cc +165 -48
  1390. data/src/core/lib/surface/channel_init.h +67 -4
  1391. data/src/core/lib/surface/completion_queue.cc +88 -67
  1392. data/src/core/lib/surface/completion_queue.h +1 -1
  1393. data/src/core/lib/surface/connection_context.cc +77 -0
  1394. data/src/core/lib/surface/connection_context.h +156 -0
  1395. data/src/core/lib/surface/event_string.cc +7 -1
  1396. data/src/core/lib/surface/filter_stack_call.cc +60 -40
  1397. data/src/core/lib/surface/filter_stack_call.h +3 -3
  1398. data/src/core/lib/surface/init.cc +12 -14
  1399. data/src/core/lib/surface/init_internally.h +13 -2
  1400. data/src/core/lib/surface/lame_client.cc +2 -2
  1401. data/src/core/lib/surface/legacy_channel.cc +41 -37
  1402. data/src/core/lib/surface/legacy_channel.h +6 -4
  1403. data/src/core/lib/surface/version.cc +2 -2
  1404. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  1405. data/src/core/lib/transport/call_final_info.h +1 -1
  1406. data/src/core/lib/transport/connectivity_state.cc +8 -9
  1407. data/src/core/lib/transport/connectivity_state.h +2 -4
  1408. data/src/core/lib/transport/error_utils.cc +65 -11
  1409. data/src/core/lib/transport/error_utils.h +2 -2
  1410. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  1411. data/src/core/lib/transport/promise_endpoint.h +307 -0
  1412. data/src/core/lib/transport/status_conversion.cc +11 -36
  1413. data/src/core/lib/transport/status_conversion.h +5 -4
  1414. data/src/core/lib/transport/timeout_encoding.cc +19 -19
  1415. data/src/core/lib/transport/timeout_encoding.h +3 -2
  1416. data/src/core/lib/transport/transport.cc +2 -3
  1417. data/src/core/lib/transport/transport.h +20 -12
  1418. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1419. data/src/core/lib/transport/transport_op_string.cc +1 -1
  1420. data/src/core/load_balancing/backend_metric_parser.cc +12 -25
  1421. data/src/core/load_balancing/child_policy_handler.cc +3 -5
  1422. data/src/core/load_balancing/delegating_helper.h +3 -4
  1423. data/src/core/load_balancing/endpoint_list.cc +12 -2
  1424. data/src/core/load_balancing/endpoint_list.h +20 -13
  1425. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +2 -7
  1426. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +4 -4
  1427. data/src/core/load_balancing/grpclb/grpclb.cc +25 -43
  1428. data/src/core/load_balancing/health_check_client.cc +19 -57
  1429. data/src/core/load_balancing/health_check_client_internal.h +7 -7
  1430. data/src/core/load_balancing/lb_policy.cc +4 -6
  1431. data/src/core/load_balancing/lb_policy.h +6 -16
  1432. data/src/core/load_balancing/lb_policy_registry.cc +10 -8
  1433. data/src/core/load_balancing/oob_backend_metric.cc +3 -9
  1434. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +63 -73
  1435. data/src/core/load_balancing/outlier_detection/outlier_detection.h +4 -3
  1436. data/src/core/load_balancing/pick_first/pick_first.cc +74 -990
  1437. data/src/core/load_balancing/priority/priority.cc +9 -14
  1438. data/src/core/load_balancing/ring_hash/ring_hash.cc +211 -159
  1439. data/src/core/load_balancing/ring_hash/ring_hash.h +4 -11
  1440. data/src/core/load_balancing/rls/rls.cc +139 -233
  1441. data/src/core/load_balancing/rls/rls.h +97 -1
  1442. data/src/core/load_balancing/round_robin/round_robin.cc +17 -23
  1443. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +6 -6
  1444. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +3 -3
  1445. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +25 -34
  1446. data/src/core/load_balancing/weighted_target/weighted_target.cc +12 -26
  1447. data/src/core/load_balancing/xds/cds.cc +25 -27
  1448. data/src/core/load_balancing/xds/xds_cluster_impl.cc +17 -20
  1449. data/src/core/load_balancing/xds/xds_cluster_manager.cc +11 -19
  1450. data/src/core/load_balancing/xds/xds_override_host.cc +99 -125
  1451. data/src/core/load_balancing/xds/xds_wrr_locality.cc +11 -13
  1452. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  1453. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +3 -3
  1454. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +14 -16
  1455. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  1456. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  1457. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  1458. data/src/core/resolver/dns/dns_resolver_plugin.cc +1 -1
  1459. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1460. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -15
  1461. data/src/core/resolver/dns/native/dns_resolver.cc +2 -2
  1462. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1463. data/src/core/resolver/fake/fake_resolver.cc +11 -12
  1464. data/src/core/resolver/fake/fake_resolver.h +2 -2
  1465. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +11 -14
  1466. data/src/core/resolver/polling_resolver.cc +2 -5
  1467. data/src/core/resolver/polling_resolver.h +3 -3
  1468. data/src/core/resolver/resolver_registry.cc +4 -3
  1469. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -2
  1470. data/src/core/resolver/xds/xds_config.cc +12 -9
  1471. data/src/core/resolver/xds/xds_config.h +11 -6
  1472. data/src/core/resolver/xds/xds_dependency_manager.cc +220 -193
  1473. data/src/core/resolver/xds/xds_dependency_manager.h +30 -19
  1474. data/src/core/resolver/xds/xds_resolver.cc +116 -136
  1475. data/src/core/server/add_port.cc +87 -0
  1476. data/src/core/server/server.cc +459 -131
  1477. data/src/core/server/server.h +237 -72
  1478. data/src/core/server/server_call_tracer_filter.cc +5 -9
  1479. data/src/core/server/server_call_tracer_filter.h +1 -1
  1480. data/src/core/server/server_config_selector.h +1 -1
  1481. data/src/core/server/server_config_selector_filter.cc +9 -16
  1482. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  1483. data/src/core/server/xds_server_config_fetcher.cc +159 -187
  1484. data/src/core/service_config/service_config.h +1 -1
  1485. data/src/core/service_config/service_config_channel_arg_filter.cc +9 -21
  1486. data/src/core/service_config/service_config_impl.cc +4 -4
  1487. data/src/core/service_config/service_config_impl.h +1 -1
  1488. data/src/core/telemetry/call_tracer.cc +12 -14
  1489. data/src/core/telemetry/call_tracer.h +10 -9
  1490. data/src/core/telemetry/context_list_entry.cc +38 -0
  1491. data/src/core/telemetry/context_list_entry.h +112 -0
  1492. data/src/core/telemetry/default_tcp_tracer.cc +26 -0
  1493. data/src/core/telemetry/default_tcp_tracer.h +44 -0
  1494. data/src/core/telemetry/histogram_view.cc +3 -3
  1495. data/src/core/telemetry/metrics.cc +44 -23
  1496. data/src/core/telemetry/metrics.h +24 -14
  1497. data/src/core/telemetry/stats.h +0 -5
  1498. data/src/core/telemetry/stats_data.cc +564 -329
  1499. data/src/core/telemetry/stats_data.h +474 -180
  1500. data/src/core/telemetry/tcp_tracer.cc +38 -0
  1501. data/src/core/telemetry/tcp_tracer.h +104 -100
  1502. data/src/core/transport/auth_context.cc +235 -0
  1503. data/src/core/transport/auth_context.h +139 -0
  1504. data/src/core/transport/endpoint_transport.h +90 -0
  1505. data/src/core/transport/endpoint_transport_client_channel_factory.cc +61 -0
  1506. data/src/core/transport/endpoint_transport_client_channel_factory.h +57 -0
  1507. data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -1
  1508. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1509. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1510. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +36 -4
  1511. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -1
  1512. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +74 -20
  1513. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -3
  1514. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1515. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -4
  1516. data/src/core/tsi/fake_transport_security.cc +22 -0
  1517. data/src/core/tsi/ssl_transport_security.cc +203 -76
  1518. data/src/core/tsi/ssl_transport_security.h +8 -3
  1519. data/src/core/tsi/ssl_transport_security_utils.h +1 -1
  1520. data/src/core/tsi/transport_security.h +3 -0
  1521. data/src/core/tsi/transport_security_grpc.cc +8 -0
  1522. data/src/core/tsi/transport_security_grpc.h +22 -3
  1523. data/src/core/tsi/transport_security_interface.h +32 -27
  1524. data/src/core/util/backoff.cc +3 -3
  1525. data/src/core/util/backoff.h +1 -1
  1526. data/src/core/util/check_class_size.h +48 -0
  1527. data/src/core/util/down_cast.h +1 -1
  1528. data/src/core/util/dual_ref_counted.h +48 -0
  1529. data/src/core/util/dump_args.h +1 -9
  1530. data/src/core/util/env.h +3 -4
  1531. data/src/core/util/examine_stack.cc +2 -2
  1532. data/src/core/util/examine_stack.h +3 -4
  1533. data/src/core/util/fork.cc +1 -1
  1534. data/src/core/util/fork.h +2 -2
  1535. data/src/core/util/function_signature.h +80 -0
  1536. data/src/core/util/gcp_metadata_query.cc +4 -3
  1537. data/src/core/util/gpr_time.cc +4 -6
  1538. data/src/core/util/http_client/httpcli.cc +97 -36
  1539. data/src/core/util/http_client/httpcli.h +22 -9
  1540. data/src/core/util/http_client/httpcli_security_connector.cc +7 -6
  1541. data/src/core/util/json/json_channel_args.h +2 -1
  1542. data/src/core/util/json/json_object_loader.cc +4 -4
  1543. data/src/core/util/json/json_object_loader.h +19 -19
  1544. data/src/core/util/json/json_reader.cc +4 -4
  1545. data/src/core/util/json/json_writer.cc +4 -4
  1546. data/src/core/util/latent_see.cc +123 -76
  1547. data/src/core/util/latent_see.h +34 -36
  1548. data/src/core/util/linux/env.cc +6 -5
  1549. data/src/core/util/load_file.cc +26 -14
  1550. data/src/core/util/log.cc +5 -1
  1551. data/src/core/util/lru_cache.h +4 -4
  1552. data/src/core/util/match.h +7 -7
  1553. data/src/core/util/matchers.cc +1 -2
  1554. data/src/core/util/matchers.h +7 -12
  1555. data/src/core/util/memory_usage.h +268 -0
  1556. data/src/core/util/per_cpu.cc +2 -0
  1557. data/src/core/util/per_cpu.h +7 -0
  1558. data/src/core/util/posix/env.cc +2 -2
  1559. data/src/core/util/posix/sync.cc +0 -1
  1560. data/src/core/util/posix/time.cc +0 -1
  1561. data/src/core/util/ref_counted.h +1 -0
  1562. data/src/core/util/ref_counted_ptr.h +27 -1
  1563. data/src/core/util/ring_buffer.h +4 -5
  1564. data/src/core/util/shared_bit_gen.cc +21 -0
  1565. data/src/core/util/shared_bit_gen.h +64 -0
  1566. data/src/core/util/single_set_ptr.h +35 -4
  1567. data/src/core/util/status_helper.cc +98 -79
  1568. data/src/core/util/status_helper.h +13 -30
  1569. data/src/core/util/string.cc +2 -2
  1570. data/src/core/util/sync_abseil.cc +0 -1
  1571. data/src/core/util/table.h +6 -21
  1572. data/src/core/util/time.cc +5 -5
  1573. data/src/core/util/time.h +5 -5
  1574. data/src/core/util/time_precise.cc +0 -1
  1575. data/src/core/util/type_list.h +56 -0
  1576. data/src/core/util/upb_utils.h +42 -0
  1577. data/src/core/util/uri.cc +91 -24
  1578. data/src/core/util/uri.h +23 -7
  1579. data/src/core/util/useful.h +66 -17
  1580. data/src/core/util/validation_errors.cc +5 -5
  1581. data/src/core/util/wait_for_single_owner.cc +31 -0
  1582. data/src/core/util/wait_for_single_owner.h +86 -0
  1583. data/src/core/util/windows/env.cc +3 -3
  1584. data/src/core/util/windows/sync.cc +0 -1
  1585. data/src/core/util/windows/time.cc +0 -1
  1586. data/src/core/util/work_serializer.cc +27 -267
  1587. data/src/core/util/work_serializer.h +3 -27
  1588. data/src/core/xds/grpc/certificate_provider_store.cc +14 -19
  1589. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  1590. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +6 -6
  1591. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  1592. data/src/core/xds/grpc/xds_audit_logger_registry.cc +1 -1
  1593. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +22 -20
  1594. data/src/core/xds/grpc/xds_bootstrap_grpc.h +7 -2
  1595. data/src/core/xds/grpc/xds_certificate_provider.cc +16 -16
  1596. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  1597. data/src/core/xds/grpc/xds_client_grpc.cc +20 -16
  1598. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  1599. data/src/core/xds/grpc/xds_cluster.h +7 -7
  1600. data/src/core/xds/grpc/xds_cluster_parser.cc +29 -28
  1601. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
  1602. data/src/core/xds/grpc/xds_common_types.cc +2 -2
  1603. data/src/core/xds/grpc/xds_common_types.h +4 -4
  1604. data/src/core/xds/grpc/xds_common_types_parser.cc +167 -89
  1605. data/src/core/xds/grpc/xds_common_types_parser.h +20 -7
  1606. data/src/core/xds/grpc/xds_endpoint.cc +3 -4
  1607. data/src/core/xds/grpc/xds_endpoint_parser.cc +68 -37
  1608. data/src/core/xds/grpc/xds_health_status.cc +4 -4
  1609. data/src/core/xds/grpc/xds_health_status.h +4 -3
  1610. data/src/core/xds/grpc/xds_http_fault_filter.cc +19 -21
  1611. data/src/core/xds/grpc/xds_http_fault_filter.h +4 -3
  1612. data/src/core/xds/grpc/xds_http_filter.h +11 -4
  1613. data/src/core/xds/grpc/xds_http_filter_registry.cc +8 -10
  1614. data/src/core/xds/grpc/xds_http_filter_registry.h +4 -4
  1615. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +31 -9
  1616. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +7 -3
  1617. data/src/core/xds/grpc/xds_http_rbac_filter.cc +21 -21
  1618. data/src/core/xds/grpc/xds_http_rbac_filter.h +4 -3
  1619. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +10 -10
  1620. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +4 -3
  1621. data/src/core/xds/grpc/xds_lb_policy_registry.cc +5 -5
  1622. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  1623. data/src/core/xds/grpc/xds_listener.cc +4 -6
  1624. data/src/core/xds/grpc/xds_listener.h +10 -10
  1625. data/src/core/xds/grpc/xds_listener_parser.cc +58 -51
  1626. data/src/core/xds/grpc/xds_listener_parser.h +2 -1
  1627. data/src/core/xds/grpc/xds_metadata.cc +5 -5
  1628. data/src/core/xds/grpc/xds_metadata.h +8 -0
  1629. data/src/core/xds/grpc/xds_metadata_parser.cc +26 -37
  1630. data/src/core/xds/grpc/xds_metadata_parser.h +0 -2
  1631. data/src/core/xds/grpc/xds_route_config.cc +10 -15
  1632. data/src/core/xds/grpc/xds_route_config.h +10 -10
  1633. data/src/core/xds/grpc/xds_route_config_parser.cc +85 -132
  1634. data/src/core/xds/grpc/xds_route_config_parser.h +5 -5
  1635. data/src/core/xds/grpc/xds_routing.cc +6 -6
  1636. data/src/core/xds/grpc/xds_routing.h +6 -6
  1637. data/src/core/xds/grpc/xds_server_grpc.cc +133 -50
  1638. data/src/core/xds/grpc/xds_server_grpc.h +34 -13
  1639. data/src/core/xds/grpc/xds_server_grpc_interface.h +37 -0
  1640. data/src/core/xds/grpc/xds_transport_grpc.cc +29 -12
  1641. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  1642. data/src/core/xds/xds_client/lrs_client.cc +77 -88
  1643. data/src/core/xds/xds_client/lrs_client.h +15 -15
  1644. data/src/core/xds/xds_client/xds_api.cc +5 -228
  1645. data/src/core/xds/xds_client/xds_api.h +1 -133
  1646. data/src/core/xds/xds_client/xds_bootstrap.cc +11 -1
  1647. data/src/core/xds/xds_client/xds_bootstrap.h +25 -1
  1648. data/src/core/xds/xds_client/xds_client.cc +1076 -727
  1649. data/src/core/xds/xds_client/xds_client.h +138 -30
  1650. data/src/core/xds/xds_client/xds_resource_type.h +3 -5
  1651. data/src/core/xds/xds_client/xds_resource_type_impl.h +13 -8
  1652. data/src/core/xds/xds_client/xds_transport.h +1 -1
  1653. data/src/ruby/ext/grpc/extconf.rb +5 -2
  1654. data/src/ruby/ext/grpc/rb_call.c +1 -8
  1655. data/src/ruby/ext/grpc/rb_channel.c +70 -557
  1656. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  1657. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  1658. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  1659. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  1660. data/src/ruby/ext/grpc/rb_grpc.h +1 -1
  1661. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  1662. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  1663. data/src/ruby/ext/grpc/rb_server.c +31 -50
  1664. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  1665. data/src/ruby/lib/grpc/version.rb +1 -1
  1666. data/src/ruby/spec/core_spec.rb +22 -0
  1667. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  1668. data/src/ruby/spec/generic/client_stub_spec.rb +2 -6
  1669. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1670. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +2 -2
  1671. data/third_party/abseil-cpp/absl/algorithm/container.h +81 -67
  1672. data/third_party/abseil-cpp/absl/base/attributes.h +142 -23
  1673. data/third_party/abseil-cpp/absl/base/call_once.h +18 -16
  1674. data/third_party/abseil-cpp/absl/base/config.h +23 -132
  1675. data/third_party/abseil-cpp/absl/base/fast_type_id.h +45 -0
  1676. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  1677. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  1678. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  1679. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  1680. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  1681. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +106 -0
  1682. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +1 -1
  1683. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  1684. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  1685. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -0
  1686. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +5 -1
  1687. data/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  1688. data/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  1689. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  1690. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -10
  1691. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +17 -0
  1692. data/third_party/abseil-cpp/absl/base/macros.h +35 -4
  1693. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  1694. data/third_party/abseil-cpp/absl/base/nullability.h +124 -56
  1695. data/third_party/abseil-cpp/absl/base/optimization.h +8 -12
  1696. data/third_party/abseil-cpp/absl/base/options.h +7 -81
  1697. data/third_party/abseil-cpp/absl/base/policy_checks.h +9 -7
  1698. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  1699. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  1700. data/third_party/abseil-cpp/absl/container/btree_map.h +891 -0
  1701. data/third_party/abseil-cpp/absl/container/btree_set.h +826 -0
  1702. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -15
  1703. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +22 -3
  1704. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +23 -4
  1705. data/third_party/abseil-cpp/absl/container/inlined_vector.h +10 -6
  1706. data/third_party/abseil-cpp/absl/container/internal/btree.h +3149 -0
  1707. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +867 -0
  1708. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  1709. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +10 -2
  1710. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -10
  1711. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  1712. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  1713. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  1714. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  1715. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  1716. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +6 -9
  1717. data/third_party/abseil-cpp/absl/container/internal/layout.h +27 -43
  1718. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  1719. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1462 -263
  1720. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1170 -1547
  1721. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  1722. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  1723. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  1724. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +56 -0
  1725. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  1726. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  1727. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +21 -7
  1728. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  1729. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  1730. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  1731. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +12 -37
  1732. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  1733. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +1 -1
  1734. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -21
  1735. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  1736. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +7 -0
  1737. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  1738. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  1739. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  1740. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -8
  1741. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  1742. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  1743. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  1744. data/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  1745. data/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  1746. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  1747. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  1748. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +3 -2
  1749. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +67 -18
  1750. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  1751. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  1752. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +1 -0
  1753. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +9 -2
  1754. data/third_party/abseil-cpp/absl/flags/flag.h +18 -15
  1755. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  1756. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +14 -5
  1757. data/third_party/abseil-cpp/absl/flags/internal/flag.h +23 -11
  1758. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +4 -0
  1759. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +3 -0
  1760. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +13 -12
  1761. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  1762. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  1763. data/third_party/abseil-cpp/absl/flags/usage_config.cc +9 -4
  1764. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  1765. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  1766. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  1767. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  1768. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  1769. data/third_party/abseil-cpp/absl/hash/hash.h +44 -2
  1770. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +14 -18
  1771. data/third_party/abseil-cpp/absl/hash/internal/hash.h +257 -127
  1772. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +27 -72
  1773. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  1774. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  1775. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +2 -0
  1776. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  1777. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  1778. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  1779. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +43 -38
  1780. data/third_party/abseil-cpp/absl/log/internal/check_op.h +124 -99
  1781. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  1782. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  1783. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +158 -64
  1784. data/third_party/abseil-cpp/absl/log/internal/log_message.h +140 -83
  1785. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  1786. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -5
  1787. data/third_party/abseil-cpp/absl/log/internal/proto.h +28 -18
  1788. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  1789. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  1790. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +107 -0
  1791. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +8 -1
  1792. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  1793. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  1794. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  1795. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +5 -2
  1796. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +2 -0
  1797. data/third_party/abseil-cpp/absl/meta/type_traits.h +62 -181
  1798. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  1799. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  1800. data/third_party/abseil-cpp/absl/numeric/int128.h +15 -3
  1801. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +6 -4
  1802. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +6 -3
  1803. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  1804. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  1805. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +3 -1
  1806. data/third_party/abseil-cpp/absl/random/beta_distribution.h +3 -1
  1807. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +12 -12
  1808. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +10 -0
  1809. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +4 -2
  1810. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  1811. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -0
  1812. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +3 -2
  1813. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -7
  1814. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +185 -0
  1815. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  1816. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +5 -2
  1817. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  1818. data/third_party/abseil-cpp/absl/random/internal/platform.h +12 -12
  1819. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +57 -6
  1820. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -1
  1821. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  1822. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  1823. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +2 -2
  1824. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -1
  1825. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +1 -4
  1826. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +4 -3
  1827. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  1828. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +2 -3
  1829. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  1830. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -2
  1831. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -1
  1832. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +2 -0
  1833. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +5 -4
  1834. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +10 -7
  1835. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  1836. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  1837. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  1838. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  1839. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  1840. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  1841. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  1842. data/third_party/abseil-cpp/absl/strings/ascii.cc +44 -29
  1843. data/third_party/abseil-cpp/absl/strings/ascii.h +62 -22
  1844. data/third_party/abseil-cpp/absl/strings/charconv.cc +25 -29
  1845. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  1846. data/third_party/abseil-cpp/absl/strings/charset.h +3 -4
  1847. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  1848. data/third_party/abseil-cpp/absl/strings/cord.h +99 -102
  1849. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  1850. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  1851. data/third_party/abseil-cpp/absl/strings/escaping.cc +186 -197
  1852. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  1853. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1854. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +1 -1
  1855. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +53 -22
  1856. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  1857. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  1858. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  1859. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  1860. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  1861. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +3 -2
  1862. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  1863. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  1864. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  1865. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -0
  1866. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  1867. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  1868. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  1869. data/third_party/abseil-cpp/absl/strings/match.h +21 -11
  1870. data/third_party/abseil-cpp/absl/strings/numbers.cc +55 -33
  1871. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  1872. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  1873. data/third_party/abseil-cpp/absl/strings/str_cat.h +41 -30
  1874. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  1875. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  1876. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  1877. data/third_party/abseil-cpp/absl/strings/str_split.h +18 -1
  1878. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  1879. data/third_party/abseil-cpp/absl/strings/string_view.h +46 -50
  1880. data/third_party/abseil-cpp/absl/strings/strip.h +11 -8
  1881. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  1882. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  1883. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +16 -10
  1884. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +6 -0
  1885. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -1
  1886. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  1887. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  1888. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  1889. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  1890. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  1891. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  1892. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  1893. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +39 -13
  1894. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  1895. data/third_party/abseil-cpp/absl/synchronization/notification.cc +10 -2
  1896. data/third_party/abseil-cpp/absl/synchronization/notification.h +12 -2
  1897. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  1898. data/third_party/abseil-cpp/absl/time/duration.cc +18 -58
  1899. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  1900. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1901. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1902. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +3 -3
  1903. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +2 -2
  1904. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +2 -2
  1905. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +3 -3
  1906. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +2 -2
  1907. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  1908. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +1 -1
  1909. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +92 -112
  1910. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +1 -1
  1911. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -4
  1912. data/third_party/abseil-cpp/absl/time/time.h +89 -23
  1913. data/third_party/abseil-cpp/absl/types/internal/span.h +3 -2
  1914. data/third_party/abseil-cpp/absl/types/optional.h +7 -745
  1915. data/third_party/abseil-cpp/absl/types/span.h +98 -54
  1916. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  1917. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  1918. data/third_party/boringssl-with-bazel/src/crypto/aes/aes.cc +41 -0
  1919. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +259 -0
  1920. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +53 -0
  1921. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +47 -0
  1922. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +42 -0
  1923. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +109 -0
  1924. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +43 -0
  1925. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +439 -0
  1926. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +239 -0
  1927. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +193 -0
  1928. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +32 -0
  1929. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.cc +415 -0
  1930. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +206 -0
  1931. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.cc +224 -0
  1932. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +172 -0
  1933. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +109 -0
  1934. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +355 -0
  1935. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +61 -0
  1936. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +56 -0
  1937. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +63 -0
  1938. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +52 -0
  1939. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +33 -61
  1940. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +241 -0
  1941. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +963 -0
  1942. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +661 -0
  1943. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +164 -0
  1944. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +276 -0
  1945. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +80 -0
  1946. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +229 -0
  1947. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +434 -0
  1948. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +19 -48
  1949. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +658 -0
  1950. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +268 -0
  1951. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +509 -0
  1952. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +50 -0
  1953. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.cc +193 -0
  1954. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +292 -0
  1955. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +152 -0
  1956. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +17 -61
  1957. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +446 -0
  1958. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +59 -0
  1959. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +144 -0
  1960. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +131 -0
  1961. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +169 -0
  1962. data/third_party/boringssl-with-bazel/src/crypto/bn/bn_asn1.cc +57 -0
  1963. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +407 -0
  1964. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +100 -0
  1965. data/third_party/boringssl-with-bazel/src/crypto/bn/exponentiation.cc +166 -0
  1966. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +93 -0
  1967. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +118 -0
  1968. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
  1969. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +266 -0
  1970. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +708 -0
  1971. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +912 -0
  1972. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +16 -16
  1973. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +156 -0
  1974. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +224 -0
  1975. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +23 -23
  1976. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +108 -0
  1977. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesctrhmac.cc +279 -0
  1978. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aeseax.cc +289 -0
  1979. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +922 -0
  1980. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_chacha20poly1305.cc +341 -0
  1981. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_des.cc +198 -0
  1982. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
  1983. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc2.cc +417 -0
  1984. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
  1985. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_tls.cc +599 -0
  1986. data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
  1987. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +240 -0
  1988. data/third_party/boringssl-with-bazel/src/crypto/cipher/tls_cbc.cc +476 -0
  1989. data/third_party/boringssl-with-bazel/src/crypto/cms/cms.cc +172 -0
  1990. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +631 -0
  1991. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
  1992. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +73 -0
  1993. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +53 -0
  1994. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +60 -0
  1995. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +59 -0
  1996. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +92 -0
  1997. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +39 -0
  1998. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +53 -0
  1999. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +173 -0
  2000. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +24 -22
  2001. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +281 -0
  2002. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +181 -0
  2003. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +2154 -0
  2004. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
  2005. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
  2006. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +17 -17
  2007. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +529 -0
  2008. data/third_party/boringssl-with-bazel/src/crypto/des/des.cc +829 -0
  2009. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +31 -73
  2010. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +123 -0
  2011. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +408 -0
  2012. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +314 -0
  2013. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +941 -0
  2014. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +367 -0
  2015. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +17 -19
  2016. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +554 -0
  2017. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_derive.cc +96 -0
  2018. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +502 -0
  2019. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +78 -0
  2020. data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
  2021. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +351 -0
  2022. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +95 -0
  2023. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +808 -0
  2024. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
  2025. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +379 -0
  2026. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +470 -0
  2027. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +439 -0
  2028. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +17 -59
  2029. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +153 -0
  2030. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +142 -0
  2031. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +279 -0
  2032. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +230 -0
  2033. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +286 -0
  2034. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +103 -0
  2035. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +225 -0
  2036. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +236 -0
  2037. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +609 -0
  2038. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +198 -0
  2039. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +109 -0
  2040. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +237 -0
  2041. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +98 -0
  2042. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +342 -0
  2043. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +216 -0
  2044. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +95 -0
  2045. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +141 -0
  2046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +202 -0
  2047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +1281 -0
  2048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cbc.cc.inc +130 -0
  2049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cfb.cc.inc +166 -0
  2050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
  2051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +604 -0
  2052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm_nohw.cc.inc +302 -0
  2053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +396 -76
  2054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +209 -0
  2055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +93 -0
  2056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
  2057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +282 -0
  2058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +765 -29
  2059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +269 -0
  2060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +554 -0
  2061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +374 -0
  2062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.cc.inc +225 -0
  2063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.cc.inc +159 -0
  2064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +191 -0
  2065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +734 -0
  2066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +87 -0
  2067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +739 -0
  2068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +278 -0
  2069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +323 -0
  2070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.cc.inc +582 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +53 -160
  2072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +99 -0
  2073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +409 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.cc.inc +222 -0
  2075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +698 -0
  2076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +928 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +260 -0
  2078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.cc.inc +142 -0
  2079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +24 -21
  2080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +315 -0
  2081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +382 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +295 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +672 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +1235 -0
  2085. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.cc.inc +409 -0
  2086. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +18 -69
  2087. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +288 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +36 -25
  2089. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +190 -0
  2090. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +424 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -15
  2092. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +244 -0
  2093. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +178 -0
  2094. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +17 -59
  2095. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +17 -51
  2096. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +226 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
  2098. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +971 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +494 -0
  2100. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.cc.inc +439 -0
  2101. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +104 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +23 -70
  2103. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +295 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +1163 -0
  2105. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
  2106. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +741 -0
  2107. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +26 -21
  2108. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +749 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
  2110. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +179 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +279 -0
  2112. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +269 -0
  2113. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +255 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +221 -0
  2115. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +88 -0
  2116. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +278 -0
  2117. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +13 -13
  2118. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +112 -0
  2120. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +215 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +70 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/keccak.cc.inc +279 -0
  2123. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +2300 -0
  2125. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1397 -0
  2127. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +214 -0
  2128. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +22 -28
  2129. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +483 -0
  2130. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +147 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +17 -60
  2132. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +372 -0
  2133. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +983 -0
  2134. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1279 -0
  2135. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +1055 -0
  2137. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +38 -38
  2138. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +327 -0
  2139. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +52 -78
  2140. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +390 -0
  2141. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +299 -0
  2142. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  2143. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/address.h +119 -0
  2144. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  2145. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.cc.inc +169 -0
  2146. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
  2147. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.cc.inc +161 -0
  2148. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
  2149. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/params.h +78 -0
  2150. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +504 -0
  2151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
  2152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
  2153. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.cc.inc +171 -0
  2154. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
  2155. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
  2156. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  2157. data/third_party/boringssl-with-bazel/src/crypto/fuzzer_mode.cc +30 -0
  2158. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +1095 -0
  2159. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +2185 -0
  2160. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +16 -16
  2161. data/third_party/boringssl-with-bazel/src/crypto/internal.h +283 -457
  2162. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
  2163. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +869 -0
  2164. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +34 -78
  2165. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +309 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +194 -0
  2167. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
  2168. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +243 -0
  2169. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +581 -0
  2170. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +90 -0
  2171. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +97 -1042
  2172. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +513 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +14 -56
  2174. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +80 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
  2176. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +149 -0
  2177. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +254 -0
  2178. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +736 -0
  2179. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +45 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +208 -0
  2181. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +141 -0
  2182. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +22 -0
  2183. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +22 -0
  2184. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +36 -22
  2185. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +195 -0
  2186. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +524 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +28 -63
  2188. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +279 -0
  2189. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +471 -0
  2190. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +1322 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +17 -17
  2192. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +314 -0
  2193. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +310 -0
  2194. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +850 -0
  2195. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +17 -17
  2196. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +262 -0
  2197. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +65 -0
  2198. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +194 -0
  2199. data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +60 -0
  2201. data/third_party/boringssl-with-bazel/src/crypto/rand/getrandom_fillin.h +64 -0
  2202. data/third_party/boringssl-with-bazel/src/crypto/rand/internal.h +55 -0
  2203. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
  2204. data/third_party/boringssl-with-bazel/src/crypto/rand/passive.cc +178 -0
  2205. data/third_party/boringssl-with-bazel/src/crypto/rand/rand.cc +77 -0
  2206. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
  2207. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +328 -0
  2208. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +98 -0
  2209. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +56 -0
  2210. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +59 -0
  2211. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
  2212. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_asn1.cc +283 -0
  2213. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +523 -0
  2214. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
  2215. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -0
  2216. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  2217. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  2218. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  2219. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +79 -0
  2220. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +113 -0
  2221. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
  2222. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
  2223. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +496 -0
  2224. data/third_party/boringssl-with-bazel/src/crypto/thread.cc +68 -0
  2225. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +51 -0
  2226. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +151 -0
  2227. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +238 -0
  2228. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +17 -17
  2229. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +1656 -0
  2230. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +685 -0
  2231. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +1263 -0
  2232. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +52 -0
  2233. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +95 -0
  2234. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +74 -0
  2235. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +136 -0
  2236. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +538 -0
  2237. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +355 -0
  2238. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.cc +227 -0
  2239. data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
  2240. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +37 -0
  2241. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +29 -61
  2242. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.cc +185 -0
  2243. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +796 -0
  2244. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +364 -0
  2245. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +103 -0
  2246. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.cc +203 -0
  2247. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.cc +287 -0
  2248. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +79 -0
  2249. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +181 -0
  2250. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +31 -0
  2251. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +593 -0
  2252. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +95 -0
  2253. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +102 -0
  2254. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +366 -0
  2255. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +444 -0
  2256. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +557 -0
  2257. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +73 -0
  2258. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +114 -0
  2259. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +228 -0
  2260. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +79 -0
  2261. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +161 -0
  2262. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +81 -0
  2263. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +304 -0
  2264. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +514 -0
  2265. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +89 -0
  2266. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +101 -0
  2267. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +109 -0
  2268. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +183 -0
  2269. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +590 -0
  2270. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +131 -0
  2271. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +1342 -0
  2272. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +47 -0
  2273. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +186 -0
  2274. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.cc +238 -0
  2275. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +66 -0
  2276. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +44 -0
  2277. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.cc +139 -0
  2278. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +554 -0
  2279. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.cc +164 -0
  2280. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.cc +257 -0
  2281. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.cc +198 -0
  2282. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.cc +118 -0
  2283. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.cc +147 -0
  2284. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +249 -0
  2285. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +1607 -0
  2286. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +440 -0
  2287. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.cc +235 -0
  2288. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.cc +365 -0
  2289. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +67 -0
  2290. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +91 -0
  2291. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +116 -0
  2292. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +318 -0
  2293. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +55 -0
  2294. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +342 -0
  2295. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +36 -0
  2296. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +501 -0
  2297. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +170 -0
  2298. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +74 -0
  2299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +51 -0
  2300. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +34 -0
  2301. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +28 -0
  2302. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +485 -0
  2303. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +153 -0
  2304. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +1538 -0
  2305. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +29 -21
  2306. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +14 -48
  2307. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +16 -76
  2308. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
  2309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +29 -116
  2310. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
  2311. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +248 -328
  2312. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +31 -58
  2313. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +14 -56
  2314. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  2315. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +14 -56
  2316. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +14 -14
  2317. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +14 -56
  2318. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +15 -122
  2319. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +14 -56
  2320. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
  2321. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +38 -17
  2322. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +14 -56
  2323. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +14 -14
  2324. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +32 -60
  2325. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +14 -14
  2326. data/third_party/boringssl-with-bazel/src/include/openssl/cms.h +146 -0
  2327. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +14 -56
  2328. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
  2329. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +48 -17
  2330. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +14 -14
  2331. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +14 -14
  2332. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +14 -56
  2333. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +18 -56
  2334. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +38 -63
  2335. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +18 -59
  2336. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
  2337. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +14 -14
  2338. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -67
  2339. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +32 -73
  2340. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +15 -66
  2341. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +14 -52
  2342. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +14 -14
  2343. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +15 -108
  2344. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +15 -57
  2345. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
  2346. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +14 -108
  2347. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +14 -14
  2348. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +14 -14
  2349. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +14 -56
  2350. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +18 -18
  2351. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -14
  2352. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
  2353. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +14 -14
  2354. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +14 -56
  2355. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +14 -56
  2356. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +14 -56
  2357. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +14 -56
  2358. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +21 -27
  2359. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +14 -38
  2360. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +28 -70
  2361. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +14 -56
  2362. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +14 -14
  2363. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
  2364. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +23 -17
  2365. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
  2366. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
  2367. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +22 -60
  2368. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
  2369. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +14 -14
  2370. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +32 -61
  2371. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +14 -14
  2372. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +14 -14
  2373. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +14 -14
  2374. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +15 -15
  2375. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +14 -56
  2376. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +14 -56
  2377. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -64
  2378. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
  2379. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +14 -14
  2380. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +16 -96
  2381. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +14 -14
  2382. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +174 -0
  2383. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +25 -33
  2384. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
  2385. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +628 -309
  2386. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +15 -114
  2387. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +14 -56
  2388. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -18
  2389. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +16 -58
  2390. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
  2391. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +36 -157
  2392. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +16 -16
  2393. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +14 -56
  2394. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +21 -65
  2395. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
  2396. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
  2397. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
  2398. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +15 -14
  2399. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +680 -434
  2400. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +129 -174
  2401. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +176 -131
  2402. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +21 -127
  2403. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +109 -104
  2404. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +321 -316
  2405. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +101 -94
  2406. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +920 -519
  2407. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +78 -85
  2408. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +67 -157
  2409. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +201 -333
  2410. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +113 -245
  2411. data/third_party/boringssl-with-bazel/src/ssl/internal.h +1054 -540
  2412. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -157
  2413. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +29 -159
  2414. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +18 -112
  2415. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +108 -207
  2416. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +70 -149
  2417. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +15 -20
  2418. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +117 -157
  2419. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +229 -365
  2420. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +294 -32
  2421. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
  2422. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +35 -34
  2423. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +352 -354
  2424. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +43 -101
  2425. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +127 -249
  2426. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +17 -91
  2427. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +109 -157
  2428. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +44 -30
  2429. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +66 -195
  2430. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +46 -177
  2431. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +88 -48
  2432. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +160 -96
  2433. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +251 -184
  2434. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +250 -119
  2435. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +64 -117
  2436. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +54 -139
  2437. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  2438. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  2439. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  2440. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  2441. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  2442. data/third_party/upb/upb/base/internal/log2.h +3 -1
  2443. data/third_party/upb/upb/base/string_view.h +10 -0
  2444. data/third_party/upb/upb/hash/common.c +312 -187
  2445. data/third_party/upb/upb/hash/common.h +44 -43
  2446. data/third_party/upb/upb/hash/int_table.h +29 -5
  2447. data/third_party/upb/upb/hash/str_table.h +6 -0
  2448. data/third_party/upb/upb/json/decode.c +39 -10
  2449. data/third_party/upb/upb/json/decode.h +25 -3
  2450. data/third_party/upb/upb/mem/alloc.h +5 -0
  2451. data/third_party/upb/upb/mem/arena.c +438 -161
  2452. data/third_party/upb/upb/mem/arena.h +57 -11
  2453. data/third_party/upb/upb/mem/arena.hpp +4 -20
  2454. data/third_party/upb/upb/mem/internal/arena.h +65 -29
  2455. data/third_party/upb/upb/message/accessors.c +1 -5
  2456. data/third_party/upb/upb/message/accessors.h +49 -0
  2457. data/third_party/upb/upb/message/array.c +7 -6
  2458. data/third_party/upb/upb/message/array.h +4 -4
  2459. data/third_party/upb/upb/message/compat.c +11 -14
  2460. data/third_party/upb/upb/message/compat.h +4 -3
  2461. data/third_party/upb/upb/message/copy.c +35 -30
  2462. data/third_party/upb/upb/message/internal/accessors.h +151 -15
  2463. data/third_party/upb/upb/message/internal/extension.c +16 -25
  2464. data/third_party/upb/upb/message/internal/extension.h +17 -5
  2465. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  2466. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  2467. data/third_party/upb/upb/message/internal/map.h +76 -22
  2468. data/third_party/upb/upb/message/internal/map_sorter.h +13 -4
  2469. data/third_party/upb/upb/message/internal/message.c +48 -29
  2470. data/third_party/upb/upb/message/internal/message.h +203 -25
  2471. data/third_party/upb/upb/message/map.c +68 -20
  2472. data/third_party/upb/upb/message/map.h +8 -1
  2473. data/third_party/upb/upb/message/map_gencode_util.h +3 -45
  2474. data/third_party/upb/upb/message/map_sorter.c +52 -16
  2475. data/third_party/upb/upb/message/merge.h +3 -3
  2476. data/third_party/upb/upb/message/message.c +200 -42
  2477. data/third_party/upb/upb/message/message.h +69 -4
  2478. data/third_party/upb/upb/message/value.h +9 -0
  2479. data/third_party/upb/upb/mini_descriptor/build_enum.c +16 -6
  2480. data/third_party/upb/upb/mini_descriptor/decode.c +115 -138
  2481. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  2482. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  2483. data/third_party/upb/upb/mini_descriptor/link.c +4 -0
  2484. data/third_party/upb/upb/mini_table/extension.h +8 -1
  2485. data/third_party/upb/upb/mini_table/extension_registry.c +25 -13
  2486. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  2487. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2488. data/third_party/upb/upb/mini_table/internal/extension.h +24 -1
  2489. data/third_party/upb/upb/mini_table/internal/field.h +4 -4
  2490. data/third_party/upb/upb/mini_table/internal/message.h +1 -1
  2491. data/third_party/upb/upb/mini_table/message.c +21 -13
  2492. data/third_party/upb/upb/port/atomic.h +134 -7
  2493. data/third_party/upb/upb/port/def.inc +184 -47
  2494. data/third_party/upb/upb/port/undef.inc +14 -0
  2495. data/third_party/upb/upb/reflection/common.h +1 -11
  2496. data/third_party/upb/upb/reflection/def.hpp +5 -1
  2497. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  2498. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2499. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2500. data/third_party/upb/upb/reflection/enum_def.c +4 -4
  2501. data/third_party/upb/upb/reflection/enum_reserved_range.c +1 -1
  2502. data/third_party/upb/upb/reflection/enum_value_def.c +9 -8
  2503. data/third_party/upb/upb/reflection/extension_range.c +1 -2
  2504. data/third_party/upb/upb/reflection/field_def.c +6 -22
  2505. data/third_party/upb/upb/reflection/field_def.h +1 -1
  2506. data/third_party/upb/upb/reflection/file_def.c +16 -10
  2507. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  2508. data/third_party/upb/upb/reflection/internal/def_builder.h +35 -10
  2509. data/third_party/upb/upb/reflection/internal/enum_value_def.h +1 -1
  2510. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2511. data/third_party/upb/upb/reflection/message.c +19 -16
  2512. data/third_party/upb/upb/reflection/message.h +3 -1
  2513. data/third_party/upb/upb/reflection/message_def.c +4 -7
  2514. data/third_party/upb/upb/reflection/message_reserved_range.c +1 -1
  2515. data/third_party/upb/upb/reflection/method_def.c +1 -1
  2516. data/third_party/upb/upb/reflection/oneof_def.c +3 -3
  2517. data/third_party/upb/upb/reflection/service_def.c +2 -5
  2518. data/third_party/upb/upb/text/encode.c +17 -20
  2519. data/third_party/upb/upb/text/internal/encode.c +25 -6
  2520. data/third_party/upb/upb/text/internal/encode.h +6 -1
  2521. data/third_party/upb/upb/wire/decode.c +154 -107
  2522. data/third_party/upb/upb/wire/decode.h +5 -3
  2523. data/third_party/upb/upb/wire/encode.c +114 -55
  2524. data/third_party/upb/upb/wire/encode.h +2 -0
  2525. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  2526. data/third_party/upb/upb/wire/internal/decode_fast.c +2 -2
  2527. data/third_party/upb/upb/wire/internal/decode_fast.h +4 -0
  2528. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  2529. data/third_party/utf8_range/utf8_range.c +15 -275
  2530. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  2531. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  2532. data/third_party/zlib/deflate.c +40 -15
  2533. data/third_party/zlib/deflate.h +33 -2
  2534. data/third_party/zlib/gzguts.h +2 -6
  2535. data/third_party/zlib/inflate.c +1 -1
  2536. data/third_party/zlib/inftrees.c +3 -3
  2537. data/third_party/zlib/inftrees.h +2 -2
  2538. data/third_party/zlib/trees.c +18 -4
  2539. data/third_party/zlib/zconf.h +1 -9
  2540. data/third_party/zlib/zlib.h +12 -12
  2541. data/third_party/zlib/zutil.h +4 -25
  2542. metadata +631 -521
  2543. data/include/grpc/grpc_cronet.h +0 -37
  2544. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +0 -82
  2545. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -426
  2546. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -87
  2547. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -32
  2548. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -407
  2549. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -124
  2550. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -38
  2551. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -108
  2552. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -33
  2553. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -67
  2554. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -48
  2555. data/src/core/lib/channel/call_finalization.h +0 -88
  2556. data/src/core/lib/channel/status_util.cc +0 -153
  2557. data/src/core/lib/channel/status_util.h +0 -80
  2558. data/src/core/lib/config/config_vars.cc +0 -151
  2559. data/src/core/lib/config/config_vars.h +0 -128
  2560. data/src/core/lib/config/config_vars_non_generated.cc +0 -49
  2561. data/src/core/lib/config/core_configuration.cc +0 -111
  2562. data/src/core/lib/config/core_configuration.h +0 -242
  2563. data/src/core/lib/config/load_config.cc +0 -77
  2564. data/src/core/lib/config/load_config.h +0 -54
  2565. data/src/core/lib/event_engine/forkable.cc +0 -107
  2566. data/src/core/lib/event_engine/forkable.h +0 -69
  2567. data/src/core/lib/iomgr/executor.cc +0 -452
  2568. data/src/core/lib/iomgr/executor.h +0 -119
  2569. data/src/core/lib/iomgr/python_util.h +0 -46
  2570. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +0 -69
  2571. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +0 -50
  2572. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +0 -75
  2573. data/src/core/lib/security/context/security_context.cc +0 -331
  2574. data/src/core/lib/security/context/security_context.h +0 -202
  2575. data/src/core/lib/security/credentials/alts/alts_credentials.cc +0 -116
  2576. data/src/core/lib/security/credentials/alts/alts_credentials.h +0 -127
  2577. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +0 -71
  2578. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +0 -57
  2579. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +0 -67
  2580. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +0 -32
  2581. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +0 -101
  2582. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +0 -123
  2583. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +0 -45
  2584. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +0 -74
  2585. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +0 -55
  2586. data/src/core/lib/security/credentials/call_creds_util.cc +0 -97
  2587. data/src/core/lib/security/credentials/call_creds_util.h +0 -43
  2588. data/src/core/lib/security/credentials/channel_creds_registry.h +0 -126
  2589. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +0 -241
  2590. data/src/core/lib/security/credentials/composite/composite_credentials.cc +0 -168
  2591. data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -134
  2592. data/src/core/lib/security/credentials/credentials.cc +0 -160
  2593. data/src/core/lib/security/credentials/credentials.h +0 -298
  2594. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +0 -529
  2595. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +0 -117
  2596. data/src/core/lib/security/credentials/external/aws_request_signer.cc +0 -230
  2597. data/src/core/lib/security/credentials/external/aws_request_signer.h +0 -72
  2598. data/src/core/lib/security/credentials/external/external_account_credentials.cc +0 -642
  2599. data/src/core/lib/security/credentials/external/external_account_credentials.h +0 -207
  2600. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -175
  2601. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +0 -80
  2602. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +0 -221
  2603. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +0 -73
  2604. data/src/core/lib/security/credentials/fake/fake_credentials.cc +0 -103
  2605. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -124
  2606. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +0 -195
  2607. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +0 -90
  2608. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +0 -38
  2609. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -430
  2610. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -101
  2611. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -78
  2612. data/src/core/lib/security/credentials/iam/iam_credentials.h +0 -66
  2613. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +0 -71
  2614. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +0 -61
  2615. data/src/core/lib/security/credentials/jwt/json_token.cc +0 -318
  2616. data/src/core/lib/security/credentials/jwt/json_token.h +0 -78
  2617. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +0 -182
  2618. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +0 -106
  2619. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -988
  2620. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +0 -122
  2621. data/src/core/lib/security/credentials/local/local_credentials.cc +0 -68
  2622. data/src/core/lib/security/credentials/local/local_credentials.h +0 -77
  2623. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +0 -653
  2624. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +0 -197
  2625. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -202
  2626. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +0 -123
  2627. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +0 -474
  2628. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -144
  2629. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +0 -338
  2630. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +0 -215
  2631. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +0 -84
  2632. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -482
  2633. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -206
  2634. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +0 -237
  2635. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +0 -169
  2636. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +0 -161
  2637. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -145
  2638. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +0 -258
  2639. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +0 -130
  2640. data/src/core/lib/security/credentials/tls/tls_credentials.cc +0 -170
  2641. data/src/core/lib/security/credentials/tls/tls_credentials.h +0 -75
  2642. data/src/core/lib/security/credentials/tls/tls_utils.cc +0 -127
  2643. data/src/core/lib/security/credentials/tls/tls_utils.h +0 -50
  2644. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +0 -298
  2645. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +0 -175
  2646. data/src/core/lib/security/credentials/xds/xds_credentials.cc +0 -230
  2647. data/src/core/lib/security/credentials/xds/xds_credentials.h +0 -110
  2648. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +0 -303
  2649. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +0 -78
  2650. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +0 -314
  2651. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -42
  2652. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +0 -118
  2653. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +0 -102
  2654. data/src/core/lib/security/security_connector/load_system_roots.h +0 -35
  2655. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +0 -36
  2656. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +0 -165
  2657. data/src/core/lib/security/security_connector/load_system_roots_supported.h +0 -44
  2658. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +0 -85
  2659. data/src/core/lib/security/security_connector/local/local_security_connector.cc +0 -306
  2660. data/src/core/lib/security/security_connector/local/local_security_connector.h +0 -62
  2661. data/src/core/lib/security/security_connector/security_connector.cc +0 -123
  2662. data/src/core/lib/security/security_connector/security_connector.h +0 -197
  2663. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +0 -403
  2664. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +0 -81
  2665. data/src/core/lib/security/security_connector/ssl_utils.cc +0 -628
  2666. data/src/core/lib/security/security_connector/ssl_utils.h +0 -188
  2667. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +0 -816
  2668. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -285
  2669. data/src/core/lib/security/transport/auth_filters.h +0 -144
  2670. data/src/core/lib/security/transport/client_auth_filter.cc +0 -219
  2671. data/src/core/lib/security/transport/server_auth_filter.cc +0 -215
  2672. data/src/core/lib/security/util/json_util.cc +0 -69
  2673. data/src/core/lib/security/util/json_util.h +0 -43
  2674. data/src/core/lib/surface/client_call.cc +0 -427
  2675. data/src/core/lib/surface/client_call.h +0 -179
  2676. data/src/core/lib/surface/server_call.cc +0 -221
  2677. data/src/core/lib/surface/server_call.h +0 -168
  2678. data/src/core/lib/transport/call_arena_allocator.cc +0 -27
  2679. data/src/core/lib/transport/call_arena_allocator.h +0 -91
  2680. data/src/core/lib/transport/call_destination.h +0 -76
  2681. data/src/core/lib/transport/call_filters.cc +0 -142
  2682. data/src/core/lib/transport/call_filters.h +0 -1899
  2683. data/src/core/lib/transport/call_spine.cc +0 -131
  2684. data/src/core/lib/transport/call_spine.h +0 -435
  2685. data/src/core/lib/transport/call_state.cc +0 -39
  2686. data/src/core/lib/transport/call_state.h +0 -1061
  2687. data/src/core/lib/transport/custom_metadata.h +0 -30
  2688. data/src/core/lib/transport/http2_errors.h +0 -41
  2689. data/src/core/lib/transport/interception_chain.cc +0 -147
  2690. data/src/core/lib/transport/interception_chain.h +0 -253
  2691. data/src/core/lib/transport/message.cc +0 -44
  2692. data/src/core/lib/transport/message.h +0 -66
  2693. data/src/core/lib/transport/metadata.cc +0 -61
  2694. data/src/core/lib/transport/metadata.h +0 -113
  2695. data/src/core/lib/transport/metadata_batch.cc +0 -374
  2696. data/src/core/lib/transport/metadata_batch.h +0 -1599
  2697. data/src/core/lib/transport/metadata_compression_traits.h +0 -66
  2698. data/src/core/lib/transport/metadata_info.cc +0 -55
  2699. data/src/core/lib/transport/metadata_info.h +0 -85
  2700. data/src/core/lib/transport/parsed_metadata.cc +0 -35
  2701. data/src/core/lib/transport/parsed_metadata.h +0 -429
  2702. data/src/core/lib/transport/simple_slice_based_metadata.h +0 -53
  2703. data/src/core/util/atm.cc +0 -34
  2704. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +0 -50
  2705. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  2706. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  2707. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +0 -108
  2708. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  2709. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +0 -253
  2710. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  2711. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +0 -30
  2712. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  2713. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  2714. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  2715. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  2716. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  2717. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
  2718. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  2719. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +0 -95
  2720. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
  2721. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
  2722. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -151
  2723. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
  2724. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -465
  2725. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -279
  2726. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -235
  2727. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -74
  2728. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +0 -457
  2729. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -245
  2730. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +0 -259
  2731. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -214
  2732. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -183
  2733. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -397
  2734. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -103
  2735. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
  2736. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -105
  2737. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -94
  2738. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +0 -241
  2739. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -973
  2740. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -708
  2741. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
  2742. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -317
  2743. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -126
  2744. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -268
  2745. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -479
  2746. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -726
  2747. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -309
  2748. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -544
  2749. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +0 -92
  2750. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -235
  2751. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -334
  2752. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
  2753. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -480
  2754. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
  2755. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -189
  2756. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -133
  2757. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -169
  2758. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  2759. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -465
  2760. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
  2761. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
  2762. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  2763. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -718
  2764. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -911
  2765. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -156
  2766. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -224
  2767. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
  2768. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
  2769. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -284
  2770. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -841
  2771. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -348
  2772. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
  2773. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
  2774. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -455
  2775. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
  2776. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -598
  2777. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +0 -280
  2778. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +0 -514
  2779. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -672
  2780. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +0 -75
  2781. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -55
  2782. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -62
  2783. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -61
  2784. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +0 -93
  2785. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
  2786. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -54
  2787. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -151
  2788. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -326
  2789. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -188
  2790. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2157
  2791. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
  2792. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -523
  2793. data/third_party/boringssl-with-bazel/src/crypto/des/des.c +0 -871
  2794. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
  2795. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +0 -480
  2796. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -266
  2797. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +0 -1539
  2798. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +0 -58
  2799. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -997
  2800. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -419
  2801. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -572
  2802. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -96
  2803. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -508
  2804. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -78
  2805. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +0 -124
  2806. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -411
  2807. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -91
  2808. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -903
  2809. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -430
  2810. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +0 -547
  2811. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -483
  2812. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +0 -137
  2813. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +0 -120
  2814. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -338
  2815. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -274
  2816. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -332
  2817. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -100
  2818. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -224
  2819. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +0 -232
  2820. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -646
  2821. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -241
  2822. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -106
  2823. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -236
  2824. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2825. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -381
  2826. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -209
  2827. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -156
  2828. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
  2829. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c.inc +0 -127
  2830. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c.inc +0 -1281
  2831. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c.inc +0 -242
  2832. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c.inc +0 -124
  2833. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -279
  2834. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c.inc +0 -310
  2835. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c.inc +0 -541
  2836. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c.inc +0 -428
  2837. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c.inc +0 -267
  2838. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c.inc +0 -201
  2839. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c.inc +0 -234
  2840. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c.inc +0 -876
  2841. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c.inc +0 -87
  2842. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c.inc +0 -1320
  2843. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c.inc +0 -397
  2844. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c.inc +0 -331
  2845. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c.inc +0 -624
  2846. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c.inc +0 -146
  2847. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c.inc +0 -532
  2848. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c.inc +0 -222
  2849. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c.inc +0 -744
  2850. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c.inc +0 -1077
  2851. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c.inc +0 -354
  2852. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c.inc +0 -137
  2853. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c.inc +0 -363
  2854. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c.inc +0 -499
  2855. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c.inc +0 -287
  2856. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c.inc +0 -717
  2857. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c.inc +0 -1464
  2858. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.c.inc +0 -446
  2859. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.c.inc +0 -322
  2860. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c.inc +0 -245
  2861. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c.inc +0 -489
  2862. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c.inc +0 -288
  2863. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c.inc +0 -304
  2864. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c.inc +0 -267
  2865. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c.inc +0 -1043
  2866. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c.inc +0 -561
  2867. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c.inc +0 -491
  2868. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c.inc +0 -104
  2869. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c.inc +0 -359
  2870. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c.inc +0 -1163
  2871. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c.inc +0 -734
  2872. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c.inc +0 -749
  2873. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c.inc +0 -173
  2874. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c.inc +0 -336
  2875. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c.inc +0 -269
  2876. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c.inc +0 -255
  2877. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c.inc +0 -264
  2878. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c.inc +0 -130
  2879. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c.inc +0 -317
  2880. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -29
  2881. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c.inc +0 -112
  2882. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c.inc +0 -256
  2883. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c.inc +0 -240
  2884. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  2885. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c.inc +0 -284
  2886. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c.inc +0 -164
  2887. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c.inc +0 -200
  2888. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c.inc +0 -196
  2889. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c.inc +0 -743
  2890. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c.inc +0 -302
  2891. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -428
  2892. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c.inc +0 -87
  2893. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c.inc +0 -90
  2894. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c.inc +0 -220
  2895. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c.inc +0 -479
  2896. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c.inc +0 -241
  2897. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c.inc +0 -420
  2898. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c.inc +0 -1038
  2899. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c.inc +0 -1351
  2900. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c.inc +0 -121
  2901. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c.inc +0 -1038
  2902. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c.inc +0 -328
  2903. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c.inc +0 -439
  2904. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c.inc +0 -359
  2905. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c.inc +0 -543
  2906. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c.inc +0 -218
  2907. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -1092
  2908. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2234
  2909. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +0 -70
  2910. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c +0 -279
  2911. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +0 -845
  2912. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -350
  2913. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -613
  2914. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +0 -73
  2915. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.c +0 -1687
  2916. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +0 -90
  2917. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -564
  2918. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
  2919. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -243
  2920. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -294
  2921. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -789
  2922. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  2923. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -250
  2924. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -183
  2925. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -64
  2926. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -64
  2927. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  2928. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -523
  2929. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  2930. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -527
  2931. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1352
  2932. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -314
  2933. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -308
  2934. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -847
  2935. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -261
  2936. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -65
  2937. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fork_detect.c +0 -195
  2938. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
  2939. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +0 -60
  2940. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +0 -64
  2941. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -42
  2942. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -174
  2943. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -77
  2944. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +0 -37
  2945. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -46
  2946. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/urandom.c +0 -328
  2947. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -102
  2948. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
  2949. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +0 -59
  2950. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -79
  2951. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  2952. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +0 -570
  2953. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
  2954. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -79
  2955. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  2956. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  2957. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  2958. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  2959. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  2960. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  2961. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  2962. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  2963. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  2964. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  2965. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  2966. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  2967. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  2968. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  2969. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -534
  2970. data/third_party/boringssl-with-bazel/src/crypto/thread.c +0 -110
  2971. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -51
  2972. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -150
  2973. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -236
  2974. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1668
  2975. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -687
  2976. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -1267
  2977. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
  2978. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
  2979. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
  2980. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -178
  2981. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -585
  2982. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -400
  2983. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -269
  2984. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -79
  2985. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +0 -227
  2986. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +0 -786
  2987. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -401
  2988. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -145
  2989. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +0 -245
  2990. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -329
  2991. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -121
  2992. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c +0 -221
  2993. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c +0 -73
  2994. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c +0 -634
  2995. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
  2996. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
  2997. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c +0 -416
  2998. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +0 -482
  2999. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +0 -598
  3000. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
  3001. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
  3002. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c +0 -270
  3003. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
  3004. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +0 -211
  3005. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
  3006. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +0 -344
  3007. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c +0 -555
  3008. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c +0 -81
  3009. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
  3010. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c +0 -150
  3011. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c +0 -224
  3012. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +0 -624
  3013. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
  3014. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +0 -1390
  3015. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -89
  3016. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -227
  3017. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +0 -280
  3018. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -108
  3019. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -86
  3020. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +0 -181
  3021. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -599
  3022. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +0 -206
  3023. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +0 -299
  3024. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +0 -240
  3025. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +0 -160
  3026. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +0 -189
  3027. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -291
  3028. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -1638
  3029. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -440
  3030. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +0 -277
  3031. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +0 -407
  3032. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -109
  3033. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
  3034. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -149
  3035. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -356
  3036. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -97
  3037. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -384
  3038. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -78
  3039. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -527
  3040. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -210
  3041. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -116
  3042. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -93
  3043. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -79
  3044. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -70
  3045. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -544
  3046. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -209
  3047. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.c +0 -1514
  3048. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +0 -129
  3049. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
  3050. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  3051. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -24,9 +24,13 @@
24
24
  #include "absl/base/config.h"
25
25
  #include "absl/base/dynamic_annotations.h"
26
26
  #include "absl/base/internal/endian.h"
27
+ #include "absl/base/internal/raw_logging.h"
27
28
  #include "absl/base/optimization.h"
28
29
  #include "absl/container/internal/container_memory.h"
30
+ #include "absl/container/internal/hashtable_control_bytes.h"
29
31
  #include "absl/container/internal/hashtablez_sampler.h"
32
+ #include "absl/container/internal/raw_hash_set_resize_impl.h"
33
+ #include "absl/functional/function_ref.h"
30
34
  #include "absl/hash/hash.h"
31
35
 
32
36
  namespace absl {
@@ -63,21 +67,31 @@ ABSL_CONST_INIT ABSL_DLL const ctrl_t kSooControl[17] = {
63
67
  static_assert(NumControlBytes(SooCapacity()) <= 17,
64
68
  "kSooControl capacity too small");
65
69
 
66
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
67
- constexpr size_t Group::kWidth;
70
+ namespace {
71
+
72
+ #ifdef ABSL_SWISSTABLE_ASSERT
73
+ #error ABSL_SWISSTABLE_ASSERT cannot be directly set
74
+ #else
75
+ // We use this macro for assertions that users may see when the table is in an
76
+ // invalid state that sanitizers may help diagnose.
77
+ #define ABSL_SWISSTABLE_ASSERT(CONDITION) \
78
+ assert((CONDITION) && "Try enabling sanitizers.")
68
79
  #endif
69
80
 
70
- namespace {
81
+ [[noreturn]] ABSL_ATTRIBUTE_NOINLINE void HashTableSizeOverflow() {
82
+ ABSL_RAW_LOG(FATAL, "Hash table size overflow");
83
+ }
84
+
85
+ void ValidateMaxSize(size_t size, size_t slot_size) {
86
+ if (IsAboveValidSize(size, slot_size)) {
87
+ HashTableSizeOverflow();
88
+ }
89
+ }
71
90
 
72
91
  // Returns "random" seed.
73
92
  inline size_t RandomSeed() {
74
93
  #ifdef ABSL_HAVE_THREAD_LOCAL
75
94
  static thread_local size_t counter = 0;
76
- // On Linux kernels >= 5.4 the MSAN runtime has a false-positive when
77
- // accessing thread local storage data from loaded libraries
78
- // (https://github.com/google/sanitizers/issues/1265), for this reason counter
79
- // needs to be annotated as initialized.
80
- ABSL_ANNOTATE_MEMORY_IS_INITIALIZED(&counter, sizeof(size_t));
81
95
  size_t value = ++counter;
82
96
  #else // ABSL_HAVE_THREAD_LOCAL
83
97
  static std::atomic<size_t> counter(0);
@@ -86,16 +100,37 @@ inline size_t RandomSeed() {
86
100
  return value ^ static_cast<size_t>(reinterpret_cast<uintptr_t>(&counter));
87
101
  }
88
102
 
89
- bool ShouldRehashForBugDetection(const ctrl_t* ctrl, size_t capacity) {
103
+ bool ShouldRehashForBugDetection(PerTableSeed seed, size_t capacity) {
90
104
  // Note: we can't use the abseil-random library because abseil-random
91
105
  // depends on swisstable. We want to return true with probability
92
106
  // `min(1, RehashProbabilityConstant() / capacity())`. In order to do this,
93
107
  // we probe based on a random hash and see if the offset is less than
94
108
  // RehashProbabilityConstant().
95
- return probe(ctrl, capacity, absl::HashOf(RandomSeed())).offset() <
109
+ return probe(seed, capacity, absl::HashOf(RandomSeed())).offset() <
96
110
  RehashProbabilityConstant();
97
111
  }
98
112
 
113
+ // Find a non-deterministic hash for single group table.
114
+ // Last two bits are used to find a position for a newly inserted element after
115
+ // resize.
116
+ // This function basically using H2 last bits to save on shift operation.
117
+ size_t SingleGroupTableH1(size_t hash, PerTableSeed seed) {
118
+ return hash ^ seed.seed();
119
+ }
120
+
121
+ // Returns the address of the slot `i` iterations after `slot` assuming each
122
+ // slot has the specified size.
123
+ inline void* NextSlot(void* slot, size_t slot_size, size_t i = 1) {
124
+ return reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(slot) +
125
+ slot_size * i);
126
+ }
127
+
128
+ // Returns the address of the slot just before `slot` assuming each slot has the
129
+ // specified size.
130
+ inline void* PrevSlot(void* slot, size_t slot_size) {
131
+ return reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(slot) - slot_size);
132
+ }
133
+
99
134
  } // namespace
100
135
 
101
136
  GenerationType* EmptyGeneration() {
@@ -109,42 +144,104 @@ GenerationType* EmptyGeneration() {
109
144
  }
110
145
 
111
146
  bool CommonFieldsGenerationInfoEnabled::
112
- should_rehash_for_bug_detection_on_insert(const ctrl_t* ctrl,
147
+ should_rehash_for_bug_detection_on_insert(PerTableSeed seed,
113
148
  size_t capacity) const {
114
149
  if (reserved_growth_ == kReservedGrowthJustRanOut) return true;
115
150
  if (reserved_growth_ > 0) return false;
116
- return ShouldRehashForBugDetection(ctrl, capacity);
151
+ return ShouldRehashForBugDetection(seed, capacity);
117
152
  }
118
153
 
119
154
  bool CommonFieldsGenerationInfoEnabled::should_rehash_for_bug_detection_on_move(
120
- const ctrl_t* ctrl, size_t capacity) const {
121
- return ShouldRehashForBugDetection(ctrl, capacity);
155
+ PerTableSeed seed, size_t capacity) const {
156
+ return ShouldRehashForBugDetection(seed, capacity);
157
+ }
158
+
159
+ namespace {
160
+
161
+ FindInfo find_first_non_full_from_h1(const ctrl_t* ctrl, size_t h1,
162
+ size_t capacity) {
163
+ auto seq = probe(h1, capacity);
164
+ if (IsEmptyOrDeleted(ctrl[seq.offset()])) {
165
+ return {seq.offset(), /*probe_length=*/0};
166
+ }
167
+ while (true) {
168
+ GroupFullEmptyOrDeleted g{ctrl + seq.offset()};
169
+ auto mask = g.MaskEmptyOrDeleted();
170
+ if (mask) {
171
+ return {seq.offset(mask.LowestBitSet()), seq.index()};
172
+ }
173
+ seq.next();
174
+ ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity && "full table!");
175
+ }
122
176
  }
123
177
 
124
- bool ShouldInsertBackwardsForDebug(size_t capacity, size_t hash,
125
- const ctrl_t* ctrl) {
126
- // To avoid problems with weak hashes and single bit tests, we use % 13.
127
- // TODO(kfm,sbenza): revisit after we do unconditional mixing
128
- return !is_small(capacity) && (H1(hash, ctrl) ^ RandomSeed()) % 13 > 6;
178
+ // Whether a table is "small". A small table fits entirely into a probing
179
+ // group, i.e., has a capacity < `Group::kWidth`.
180
+ //
181
+ // In small mode we are able to use the whole capacity. The extra control
182
+ // bytes give us at least one "empty" control byte to stop the iteration.
183
+ // This is important to make 1 a valid capacity.
184
+ //
185
+ // In small mode only the first `capacity` control bytes after the sentinel
186
+ // are valid. The rest contain dummy ctrl_t::kEmpty values that do not
187
+ // represent a real slot.
188
+ constexpr bool is_small(size_t capacity) {
189
+ return capacity < Group::kWidth - 1;
129
190
  }
130
191
 
131
- size_t PrepareInsertAfterSoo(size_t hash, size_t slot_size,
132
- CommonFields& common) {
133
- assert(common.capacity() == NextCapacity(SooCapacity()));
134
- // After resize from capacity 1 to 3, we always have exactly the slot with
135
- // index 1 occupied, so we need to insert either at index 0 or index 2.
136
- assert(HashSetResizeHelper::SooSlotIndex() == 1);
137
- PrepareInsertCommon(common);
138
- const size_t offset = H1(hash, common.control()) & 2;
139
- common.growth_info().OverwriteEmptyAsFull();
140
- SetCtrlInSingleGroupTable(common, offset, H2(hash), slot_size);
141
- common.infoz().RecordInsert(hash, /*distance_from_desired=*/0);
142
- return offset;
192
+ template <class Fn>
193
+ void IterateOverFullSlotsImpl(const CommonFields& c, size_t slot_size, Fn cb) {
194
+ const size_t cap = c.capacity();
195
+ const ctrl_t* ctrl = c.control();
196
+ void* slot = c.slot_array();
197
+ if (is_small(cap)) {
198
+ // Mirrored/cloned control bytes in small table are also located in the
199
+ // first group (starting from position 0). We are taking group from position
200
+ // `capacity` in order to avoid duplicates.
201
+
202
+ // Small tables capacity fits into portable group, where
203
+ // GroupPortableImpl::MaskFull is more efficient for the
204
+ // capacity <= GroupPortableImpl::kWidth.
205
+ ABSL_SWISSTABLE_ASSERT(cap <= GroupPortableImpl::kWidth &&
206
+ "unexpectedly large small capacity");
207
+ static_assert(Group::kWidth >= GroupPortableImpl::kWidth,
208
+ "unexpected group width");
209
+ // Group starts from kSentinel slot, so indices in the mask will
210
+ // be increased by 1.
211
+ const auto mask = GroupPortableImpl(ctrl + cap).MaskFull();
212
+ --ctrl;
213
+ slot = PrevSlot(slot, slot_size);
214
+ for (uint32_t i : mask) {
215
+ cb(ctrl + i, SlotAddress(slot, i, slot_size));
216
+ }
217
+ return;
218
+ }
219
+ size_t remaining = c.size();
220
+ ABSL_ATTRIBUTE_UNUSED const size_t original_size_for_assert = remaining;
221
+ while (remaining != 0) {
222
+ for (uint32_t i : GroupFullEmptyOrDeleted(ctrl).MaskFull()) {
223
+ ABSL_SWISSTABLE_ASSERT(IsFull(ctrl[i]) &&
224
+ "hash table was modified unexpectedly");
225
+ cb(ctrl + i, SlotAddress(slot, i, slot_size));
226
+ --remaining;
227
+ }
228
+ ctrl += Group::kWidth;
229
+ slot = NextSlot(slot, slot_size, Group::kWidth);
230
+ ABSL_SWISSTABLE_ASSERT(
231
+ (remaining == 0 || *(ctrl - 1) != ctrl_t::kSentinel) &&
232
+ "hash table was modified unexpectedly");
233
+ }
234
+ // NOTE: erasure of the current element is allowed in callback for
235
+ // absl::erase_if specialization. So we use `>=`.
236
+ ABSL_SWISSTABLE_ASSERT(original_size_for_assert >= c.size() &&
237
+ "hash table was modified unexpectedly");
143
238
  }
144
239
 
240
+ } // namespace
241
+
145
242
  void ConvertDeletedToEmptyAndFullToDeleted(ctrl_t* ctrl, size_t capacity) {
146
- assert(ctrl[capacity] == ctrl_t::kSentinel);
147
- assert(IsValidCapacity(capacity));
243
+ ABSL_SWISSTABLE_ASSERT(ctrl[capacity] == ctrl_t::kSentinel);
244
+ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity));
148
245
  for (ctrl_t* pos = ctrl; pos < ctrl + capacity; pos += Group::kWidth) {
149
246
  Group{pos}.ConvertSpecialToEmptyAndFullToDeleted(pos);
150
247
  }
@@ -152,26 +249,25 @@ void ConvertDeletedToEmptyAndFullToDeleted(ctrl_t* ctrl, size_t capacity) {
152
249
  std::memcpy(ctrl + capacity + 1, ctrl, NumClonedBytes());
153
250
  ctrl[capacity] = ctrl_t::kSentinel;
154
251
  }
155
- // Extern template instantiation for inline function.
156
- template FindInfo find_first_non_full(const CommonFields&, size_t);
157
252
 
158
- FindInfo find_first_non_full_outofline(const CommonFields& common,
159
- size_t hash) {
160
- return find_first_non_full(common, hash);
253
+ FindInfo find_first_non_full(const CommonFields& common, size_t hash) {
254
+ return find_first_non_full_from_h1(common.control(), H1(hash, common.seed()),
255
+ common.capacity());
256
+ }
257
+
258
+ void IterateOverFullSlots(const CommonFields& c, size_t slot_size,
259
+ absl::FunctionRef<void(const ctrl_t*, void*)> cb) {
260
+ IterateOverFullSlotsImpl(c, slot_size, cb);
161
261
  }
162
262
 
163
263
  namespace {
164
264
 
165
- // Returns the address of the slot just after slot assuming each slot has the
166
- // specified size.
167
- static inline void* NextSlot(void* slot, size_t slot_size) {
168
- return reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(slot) + slot_size);
265
+ void ResetGrowthLeft(GrowthInfo& growth_info, size_t capacity, size_t size) {
266
+ growth_info.InitGrowthLeftNoDeleted(CapacityToGrowth(capacity) - size);
169
267
  }
170
268
 
171
- // Returns the address of the slot just before slot assuming each slot has the
172
- // specified size.
173
- static inline void* PrevSlot(void* slot, size_t slot_size) {
174
- return reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(slot) - slot_size);
269
+ void ResetGrowthLeft(CommonFields& common) {
270
+ ResetGrowthLeft(common.growth_info(), common.capacity(), common.size());
175
271
  }
176
272
 
177
273
  // Finds guaranteed to exists empty slot from the given position.
@@ -184,17 +280,34 @@ size_t FindEmptySlot(size_t start, size_t end, const ctrl_t* ctrl) {
184
280
  return i;
185
281
  }
186
282
  }
187
- assert(false && "no empty slot");
188
- return ~size_t{};
283
+ ABSL_UNREACHABLE();
284
+ }
285
+
286
+ // Finds guaranteed to exist full slot starting from the given position.
287
+ // NOTE: this function is only triggered for rehash(0), when we need to
288
+ // go back to SOO state, so we keep it simple.
289
+ size_t FindFirstFullSlot(size_t start, size_t end, const ctrl_t* ctrl) {
290
+ for (size_t i = start; i < end; ++i) {
291
+ if (IsFull(ctrl[i])) {
292
+ return i;
293
+ }
294
+ }
295
+ ABSL_UNREACHABLE();
296
+ }
297
+
298
+ void PrepareInsertCommon(CommonFields& common) {
299
+ common.increment_size();
300
+ common.maybe_increment_generation_on_insert();
189
301
  }
190
302
 
191
- void DropDeletesWithoutResize(CommonFields& common,
192
- const PolicyFunctions& policy) {
303
+ size_t DropDeletesWithoutResizeAndPrepareInsert(
304
+ CommonFields& common, const PolicyFunctions& __restrict policy,
305
+ size_t new_hash) {
193
306
  void* set = &common;
194
307
  void* slot_array = common.slot_array();
195
308
  const size_t capacity = common.capacity();
196
- assert(IsValidCapacity(capacity));
197
- assert(!is_small(capacity));
309
+ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity));
310
+ ABSL_SWISSTABLE_ASSERT(!is_single_group(capacity));
198
311
  // Algorithm:
199
312
  // - mark all DELETED slots as EMPTY
200
313
  // - mark all FULL slots as DELETED
@@ -215,7 +328,7 @@ void DropDeletesWithoutResize(CommonFields& common,
215
328
  ConvertDeletedToEmptyAndFullToDeleted(ctrl, capacity);
216
329
  const void* hash_fn = policy.hash_fn(common);
217
330
  auto hasher = policy.hash_slot;
218
- auto transfer = policy.transfer;
331
+ auto transfer_n = policy.transfer_n;
219
332
  const size_t slot_size = policy.slot_size;
220
333
 
221
334
  size_t total_probe_length = 0;
@@ -228,7 +341,7 @@ void DropDeletesWithoutResize(CommonFields& common,
228
341
 
229
342
  for (size_t i = 0; i != capacity;
230
343
  ++i, slot_ptr = NextSlot(slot_ptr, slot_size)) {
231
- assert(slot_ptr == SlotAddress(slot_array, i, slot_size));
344
+ ABSL_SWISSTABLE_ASSERT(slot_ptr == SlotAddress(slot_array, i, slot_size));
232
345
  if (IsEmpty(ctrl[i])) {
233
346
  tmp_space_id = i;
234
347
  continue;
@@ -243,13 +356,14 @@ void DropDeletesWithoutResize(CommonFields& common,
243
356
  // If they do, we don't need to move the object as it falls already in the
244
357
  // best probe we can.
245
358
  const size_t probe_offset = probe(common, hash).offset();
359
+ const h2_t h2 = H2(hash);
246
360
  const auto probe_index = [probe_offset, capacity](size_t pos) {
247
361
  return ((pos - probe_offset) & capacity) / Group::kWidth;
248
362
  };
249
363
 
250
364
  // Element doesn't move.
251
365
  if (ABSL_PREDICT_TRUE(probe_index(new_i) == probe_index(i))) {
252
- SetCtrl(common, i, H2(hash), slot_size);
366
+ SetCtrlInLargeTable(common, i, h2, slot_size);
253
367
  continue;
254
368
  }
255
369
 
@@ -258,14 +372,14 @@ void DropDeletesWithoutResize(CommonFields& common,
258
372
  // Transfer element to the empty spot.
259
373
  // SetCtrl poisons/unpoisons the slots so we have to call it at the
260
374
  // right time.
261
- SetCtrl(common, new_i, H2(hash), slot_size);
262
- (*transfer)(set, new_slot_ptr, slot_ptr);
263
- SetCtrl(common, i, ctrl_t::kEmpty, slot_size);
375
+ SetCtrlInLargeTable(common, new_i, h2, slot_size);
376
+ (*transfer_n)(set, new_slot_ptr, slot_ptr, 1);
377
+ SetCtrlInLargeTable(common, i, ctrl_t::kEmpty, slot_size);
264
378
  // Initialize or change empty space id.
265
379
  tmp_space_id = i;
266
380
  } else {
267
- assert(IsDeleted(ctrl[new_i]));
268
- SetCtrl(common, new_i, H2(hash), slot_size);
381
+ ABSL_SWISSTABLE_ASSERT(IsDeleted(ctrl[new_i]));
382
+ SetCtrlInLargeTable(common, new_i, h2, slot_size);
269
383
  // Until we are done rehashing, DELETED marks previously FULL slots.
270
384
 
271
385
  if (tmp_space_id == kUnknownId) {
@@ -275,9 +389,9 @@ void DropDeletesWithoutResize(CommonFields& common,
275
389
  SanitizerUnpoisonMemoryRegion(tmp_space, slot_size);
276
390
 
277
391
  // Swap i and new_i elements.
278
- (*transfer)(set, tmp_space, new_slot_ptr);
279
- (*transfer)(set, new_slot_ptr, slot_ptr);
280
- (*transfer)(set, slot_ptr, tmp_space);
392
+ (*transfer_n)(set, tmp_space, new_slot_ptr, 1);
393
+ (*transfer_n)(set, new_slot_ptr, slot_ptr, 1);
394
+ (*transfer_n)(set, slot_ptr, tmp_space, 1);
281
395
 
282
396
  SanitizerPoisonMemoryRegion(tmp_space, slot_size);
283
397
 
@@ -286,8 +400,14 @@ void DropDeletesWithoutResize(CommonFields& common,
286
400
  slot_ptr = PrevSlot(slot_ptr, slot_size);
287
401
  }
288
402
  }
403
+ // Prepare insert for the new element.
404
+ PrepareInsertCommon(common);
289
405
  ResetGrowthLeft(common);
406
+ FindInfo find_info = find_first_non_full(common, new_hash);
407
+ SetCtrlInLargeTable(common, find_info.offset, H2(new_hash), slot_size);
408
+ common.infoz().RecordInsert(new_hash, find_info.probe_length);
290
409
  common.infoz().RecordRehash(total_probe_length);
410
+ return find_info.offset;
291
411
  }
292
412
 
293
413
  static bool WasNeverFull(CommonFields& c, size_t index) {
@@ -307,10 +427,126 @@ static bool WasNeverFull(CommonFields& c, size_t index) {
307
427
  Group::kWidth;
308
428
  }
309
429
 
430
+ // Updates the control bytes to indicate a completely empty table such that all
431
+ // control bytes are kEmpty except for the kSentinel byte.
432
+ void ResetCtrl(CommonFields& common, size_t slot_size) {
433
+ const size_t capacity = common.capacity();
434
+ ctrl_t* ctrl = common.control();
435
+ static constexpr size_t kTwoGroupCapacity = 2 * Group::kWidth - 1;
436
+ if (ABSL_PREDICT_TRUE(capacity <= kTwoGroupCapacity)) {
437
+ std::memset(ctrl, static_cast<int8_t>(ctrl_t::kEmpty), Group::kWidth);
438
+ std::memset(ctrl + capacity, static_cast<int8_t>(ctrl_t::kEmpty),
439
+ Group::kWidth);
440
+ if (capacity == kTwoGroupCapacity) {
441
+ std::memset(ctrl + Group::kWidth, static_cast<int8_t>(ctrl_t::kEmpty),
442
+ Group::kWidth);
443
+ }
444
+ } else {
445
+ std::memset(ctrl, static_cast<int8_t>(ctrl_t::kEmpty),
446
+ capacity + 1 + NumClonedBytes());
447
+ }
448
+ ctrl[capacity] = ctrl_t::kSentinel;
449
+ SanitizerPoisonMemoryRegion(common.slot_array(), slot_size * capacity);
450
+ }
451
+
452
+ // Initializes control bytes for single element table.
453
+ // Capacity of the table must be 1.
454
+ ABSL_ATTRIBUTE_ALWAYS_INLINE inline void InitializeSingleElementControlBytes(
455
+ uint64_t h2, ctrl_t* new_ctrl) {
456
+ static constexpr uint64_t kEmptyXorSentinel =
457
+ static_cast<uint8_t>(ctrl_t::kEmpty) ^
458
+ static_cast<uint8_t>(ctrl_t::kSentinel);
459
+ static constexpr uint64_t kEmpty64 = static_cast<uint8_t>(ctrl_t::kEmpty);
460
+ // The first 8 bytes, where present slot positions are replaced with 0.
461
+ static constexpr uint64_t kFirstCtrlBytesWithZeroes =
462
+ k8EmptyBytes ^ kEmpty64 ^ (kEmptyXorSentinel << 8) ^ (kEmpty64 << 16);
463
+
464
+ // Fill the original 0th and mirrored 2nd bytes with the hash.
465
+ // Result will look like:
466
+ // HSHEEEEE
467
+ // Where H = h2, E = kEmpty, S = kSentinel.
468
+ const uint64_t first_ctrl_bytes =
469
+ (h2 | kFirstCtrlBytesWithZeroes) | (h2 << 16);
470
+ // Fill last bytes with kEmpty.
471
+ std::memset(new_ctrl + 1, static_cast<int8_t>(ctrl_t::kEmpty), Group::kWidth);
472
+ // Overwrite the first 3 bytes with HSH. Other bytes will not be changed.
473
+ absl::little_endian::Store64(new_ctrl, first_ctrl_bytes);
474
+ }
475
+
476
+ // Initializes control bytes for growing after SOO to the next capacity.
477
+ // `soo_ctrl` is placed in the position `SooSlotIndex()`.
478
+ // `new_hash` is placed in the position `new_offset`.
479
+ // The table must be non-empty SOO.
480
+ ABSL_ATTRIBUTE_ALWAYS_INLINE inline void
481
+ InitializeThreeElementsControlBytesAfterSoo(ctrl_t soo_ctrl, size_t new_hash,
482
+ size_t new_offset,
483
+ ctrl_t* new_ctrl) {
484
+ static constexpr size_t kNewCapacity = NextCapacity(SooCapacity());
485
+ static_assert(kNewCapacity == 3);
486
+ static_assert(is_single_group(kNewCapacity));
487
+ static_assert(SooSlotIndex() == 1);
488
+ ABSL_SWISSTABLE_ASSERT(new_offset == 0 || new_offset == 2);
489
+
490
+ static constexpr uint64_t kEmptyXorSentinel =
491
+ static_cast<uint8_t>(ctrl_t::kEmpty) ^
492
+ static_cast<uint8_t>(ctrl_t::kSentinel);
493
+ static constexpr uint64_t kEmpty64 = static_cast<uint8_t>(ctrl_t::kEmpty);
494
+ static constexpr size_t kMirroredSooSlotIndex =
495
+ SooSlotIndex() + kNewCapacity + 1;
496
+ // The first 8 bytes, where SOO slot original and mirrored positions are
497
+ // replaced with 0.
498
+ // Result will look like: E0ESE0EE
499
+ static constexpr uint64_t kFirstCtrlBytesWithZeroes =
500
+ k8EmptyBytes ^ (kEmpty64 << (8 * SooSlotIndex())) ^
501
+ (kEmptyXorSentinel << (8 * kNewCapacity)) ^
502
+ (kEmpty64 << (8 * kMirroredSooSlotIndex));
503
+
504
+ const uint64_t soo_h2 = static_cast<uint64_t>(soo_ctrl);
505
+ const uint64_t new_h2_xor_empty = static_cast<uint64_t>(
506
+ H2(new_hash) ^ static_cast<uint8_t>(ctrl_t::kEmpty));
507
+ // Fill the original and mirrored bytes for SOO slot.
508
+ // Result will look like:
509
+ // EHESEHEE
510
+ // Where H = soo_h2, E = kEmpty, S = kSentinel.
511
+ uint64_t first_ctrl_bytes =
512
+ ((soo_h2 << (8 * SooSlotIndex())) | kFirstCtrlBytesWithZeroes) |
513
+ (soo_h2 << (8 * kMirroredSooSlotIndex));
514
+ // Replace original and mirrored empty bytes for the new position.
515
+ // Result for new_offset 0 will look like:
516
+ // NHESNHEE
517
+ // Where H = soo_h2, N = H2(new_hash), E = kEmpty, S = kSentinel.
518
+ // Result for new_offset 2 will look like:
519
+ // EHNSEHNE
520
+ first_ctrl_bytes ^= (new_h2_xor_empty << (8 * new_offset));
521
+ size_t new_mirrored_offset = new_offset + kNewCapacity + 1;
522
+ first_ctrl_bytes ^= (new_h2_xor_empty << (8 * new_mirrored_offset));
523
+
524
+ // Fill last bytes with kEmpty.
525
+ std::memset(new_ctrl + kNewCapacity, static_cast<int8_t>(ctrl_t::kEmpty),
526
+ Group::kWidth);
527
+ // Overwrite the first 8 bytes with first_ctrl_bytes.
528
+ absl::little_endian::Store64(new_ctrl, first_ctrl_bytes);
529
+
530
+ // Example for group size 16:
531
+ // new_ctrl after 1st memset = ???EEEEEEEEEEEEEEEE
532
+ // new_offset 0:
533
+ // new_ctrl after 2nd store = NHESNHEEEEEEEEEEEEE
534
+ // new_offset 2:
535
+ // new_ctrl after 2nd store = EHNSEHNEEEEEEEEEEEE
536
+
537
+ // Example for group size 8:
538
+ // new_ctrl after 1st memset = ???EEEEEEEE
539
+ // new_offset 0:
540
+ // new_ctrl after 2nd store = NHESNHEEEEE
541
+ // new_offset 2:
542
+ // new_ctrl after 2nd store = EHNSEHNEEEE
543
+ }
544
+
310
545
  } // namespace
311
546
 
312
547
  void EraseMetaOnly(CommonFields& c, size_t index, size_t slot_size) {
313
- assert(IsFull(c.control()[index]) && "erasing a dangling iterator");
548
+ ABSL_SWISSTABLE_ASSERT(IsFull(c.control()[index]) &&
549
+ "erasing a dangling iterator");
314
550
  c.decrement_size();
315
551
  c.infoz().RecordErase();
316
552
 
@@ -321,14 +557,15 @@ void EraseMetaOnly(CommonFields& c, size_t index, size_t slot_size) {
321
557
  }
322
558
 
323
559
  c.growth_info().OverwriteFullAsDeleted();
324
- SetCtrl(c, index, ctrl_t::kDeleted, slot_size);
560
+ SetCtrlInLargeTable(c, index, ctrl_t::kDeleted, slot_size);
325
561
  }
326
562
 
327
- void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy,
563
+ void ClearBackingArray(CommonFields& c,
564
+ const PolicyFunctions& __restrict policy, void* alloc,
328
565
  bool reuse, bool soo_enabled) {
329
- c.set_size(0);
330
566
  if (reuse) {
331
- assert(!soo_enabled || c.capacity() > SooCapacity());
567
+ c.set_size_to_zero();
568
+ ABSL_SWISSTABLE_ASSERT(!soo_enabled || c.capacity() > SooCapacity());
332
569
  ResetCtrl(c, policy.slot_size);
333
570
  ResetGrowthLeft(c);
334
571
  c.infoz().RecordStorageChanged(0, c.capacity());
@@ -337,192 +574,763 @@ void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy,
337
574
  // infoz.
338
575
  c.infoz().RecordClearedReservation();
339
576
  c.infoz().RecordStorageChanged(0, soo_enabled ? SooCapacity() : 0);
340
- (*policy.dealloc)(c, policy);
341
- c = soo_enabled ? CommonFields{soo_tag_t{}} : CommonFields{};
577
+ c.infoz().Unregister();
578
+ (*policy.dealloc)(alloc, c.capacity(), c.control(), policy.slot_size,
579
+ policy.slot_align, c.has_infoz());
580
+ c = soo_enabled ? CommonFields{soo_tag_t{}} : CommonFields{non_soo_tag_t{}};
581
+ }
582
+ }
583
+
584
+ namespace {
585
+
586
+ enum class ResizeNonSooMode {
587
+ kGuaranteedEmpty,
588
+ kGuaranteedAllocated,
589
+ };
590
+
591
+ // Iterates over full slots in old table, finds new positions for them and
592
+ // transfers the slots.
593
+ // This function is used for reserving or rehashing non-empty tables.
594
+ // This use case is rare so the function is type erased.
595
+ // Returns the total probe length.
596
+ size_t FindNewPositionsAndTransferSlots(
597
+ CommonFields& common, const PolicyFunctions& __restrict policy,
598
+ ctrl_t* old_ctrl, void* old_slots, size_t old_capacity) {
599
+ void* new_slots = common.slot_array();
600
+ const void* hash_fn = policy.hash_fn(common);
601
+ const size_t slot_size = policy.slot_size;
602
+
603
+ const auto insert_slot = [&](void* slot) {
604
+ size_t hash = policy.hash_slot(hash_fn, slot);
605
+ auto target = find_first_non_full(common, hash);
606
+ SetCtrl(common, target.offset, H2(hash), slot_size);
607
+ policy.transfer_n(&common, SlotAddress(new_slots, target.offset, slot_size),
608
+ slot, 1);
609
+ return target.probe_length;
610
+ };
611
+ size_t total_probe_length = 0;
612
+ for (size_t i = 0; i < old_capacity; ++i) {
613
+ if (IsFull(old_ctrl[i])) {
614
+ total_probe_length += insert_slot(old_slots);
615
+ }
616
+ old_slots = NextSlot(old_slots, slot_size);
617
+ }
618
+ return total_probe_length;
619
+ }
620
+
621
+ template <ResizeNonSooMode kMode>
622
+ void ResizeNonSooImpl(CommonFields& common,
623
+ const PolicyFunctions& __restrict policy,
624
+ size_t new_capacity, HashtablezInfoHandle infoz) {
625
+ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(new_capacity));
626
+ ABSL_SWISSTABLE_ASSERT(new_capacity > policy.soo_capacity());
627
+
628
+ const size_t old_capacity = common.capacity();
629
+ [[maybe_unused]] ctrl_t* old_ctrl = common.control();
630
+ [[maybe_unused]] void* old_slots = common.slot_array();
631
+
632
+ const size_t slot_size = policy.slot_size;
633
+ const size_t slot_align = policy.slot_align;
634
+ const bool has_infoz = infoz.IsSampled();
635
+
636
+ common.set_capacity(new_capacity);
637
+ RawHashSetLayout layout(new_capacity, slot_size, slot_align, has_infoz);
638
+ void* alloc = policy.get_char_alloc(common);
639
+ char* mem = static_cast<char*>(policy.alloc(alloc, layout.alloc_size()));
640
+ const GenerationType old_generation = common.generation();
641
+ common.set_generation_ptr(
642
+ reinterpret_cast<GenerationType*>(mem + layout.generation_offset()));
643
+ common.set_generation(NextGeneration(old_generation));
644
+
645
+ ctrl_t* new_ctrl = reinterpret_cast<ctrl_t*>(mem + layout.control_offset());
646
+ common.set_control</*kGenerateSeed=*/true>(new_ctrl);
647
+ common.set_slots(mem + layout.slot_offset());
648
+
649
+ size_t total_probe_length = 0;
650
+ ResetCtrl(common, slot_size);
651
+ ABSL_SWISSTABLE_ASSERT(kMode != ResizeNonSooMode::kGuaranteedEmpty ||
652
+ old_capacity == policy.soo_capacity());
653
+ ABSL_SWISSTABLE_ASSERT(kMode != ResizeNonSooMode::kGuaranteedAllocated ||
654
+ old_capacity > 0);
655
+ if constexpr (kMode == ResizeNonSooMode::kGuaranteedAllocated) {
656
+ total_probe_length = FindNewPositionsAndTransferSlots(
657
+ common, policy, old_ctrl, old_slots, old_capacity);
658
+ (*policy.dealloc)(alloc, old_capacity, old_ctrl, slot_size, slot_align,
659
+ has_infoz);
660
+ ResetGrowthLeft(GetGrowthInfoFromControl(new_ctrl), new_capacity,
661
+ common.size());
662
+ } else {
663
+ GetGrowthInfoFromControl(new_ctrl).InitGrowthLeftNoDeleted(
664
+ CapacityToGrowth(new_capacity));
665
+ }
666
+
667
+ if (has_infoz) {
668
+ common.set_has_infoz();
669
+ infoz.RecordStorageChanged(common.size(), new_capacity);
670
+ infoz.RecordRehash(total_probe_length);
671
+ common.set_infoz(infoz);
342
672
  }
343
673
  }
344
674
 
345
- void HashSetResizeHelper::GrowIntoSingleGroupShuffleControlBytes(
346
- ctrl_t* __restrict new_ctrl, size_t new_capacity) const {
347
- assert(is_single_group(new_capacity));
675
+ void ResizeEmptyNonAllocatedTableImpl(CommonFields& common,
676
+ const PolicyFunctions& __restrict policy,
677
+ size_t new_capacity, bool force_infoz) {
678
+ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(new_capacity));
679
+ ABSL_SWISSTABLE_ASSERT(new_capacity > policy.soo_capacity());
680
+ ABSL_SWISSTABLE_ASSERT(!force_infoz || policy.soo_enabled);
681
+ ABSL_SWISSTABLE_ASSERT(common.capacity() <= policy.soo_capacity());
682
+ ABSL_SWISSTABLE_ASSERT(common.empty());
683
+ const size_t slot_size = policy.slot_size;
684
+ HashtablezInfoHandle infoz;
685
+ const bool should_sample =
686
+ policy.is_hashtablez_eligible && (force_infoz || ShouldSampleNextTable());
687
+ if (ABSL_PREDICT_FALSE(should_sample)) {
688
+ infoz = ForcedTrySample(slot_size, policy.key_size, policy.value_size,
689
+ policy.soo_capacity());
690
+ }
691
+ ResizeNonSooImpl<ResizeNonSooMode::kGuaranteedEmpty>(common, policy,
692
+ new_capacity, infoz);
693
+ }
694
+
695
+ // If the table was SOO, initializes new control bytes and transfers slot.
696
+ // After transferring the slot, sets control and slots in CommonFields.
697
+ // It is rare to resize an SOO table with one element to a large size.
698
+ // Requires: `c` contains SOO data.
699
+ void InsertOldSooSlotAndInitializeControlBytes(
700
+ CommonFields& c, const PolicyFunctions& __restrict policy, size_t hash,
701
+ ctrl_t* new_ctrl, void* new_slots) {
702
+ ABSL_SWISSTABLE_ASSERT(c.size() == policy.soo_capacity());
703
+ ABSL_SWISSTABLE_ASSERT(policy.soo_enabled);
704
+ size_t new_capacity = c.capacity();
705
+
706
+ c.generate_new_seed();
707
+ size_t offset = probe(c.seed(), new_capacity, hash).offset();
708
+ offset = offset == new_capacity ? 0 : offset;
709
+ SanitizerPoisonMemoryRegion(new_slots, policy.slot_size * new_capacity);
710
+ void* target_slot = SlotAddress(new_slots, offset, policy.slot_size);
711
+ SanitizerUnpoisonMemoryRegion(target_slot, policy.slot_size);
712
+ policy.transfer_n(&c, target_slot, c.soo_data(), 1);
713
+ c.set_control</*kGenerateSeed=*/false>(new_ctrl);
714
+ c.set_slots(new_slots);
715
+ ResetCtrl(c, policy.slot_size);
716
+ SetCtrl(c, offset, H2(hash), policy.slot_size);
717
+ }
718
+
719
+ enum class ResizeFullSooTableSamplingMode {
720
+ kNoSampling,
721
+ // Force sampling. If the table was still not sampled, do not resize.
722
+ kForceSampleNoResizeIfUnsampled,
723
+ };
724
+
725
+ void AssertSoo([[maybe_unused]] CommonFields& common,
726
+ [[maybe_unused]] const PolicyFunctions& policy) {
727
+ ABSL_SWISSTABLE_ASSERT(policy.soo_enabled);
728
+ ABSL_SWISSTABLE_ASSERT(common.capacity() == policy.soo_capacity());
729
+ }
730
+ void AssertFullSoo([[maybe_unused]] CommonFields& common,
731
+ [[maybe_unused]] const PolicyFunctions& policy) {
732
+ AssertSoo(common, policy);
733
+ ABSL_SWISSTABLE_ASSERT(common.size() == policy.soo_capacity());
734
+ }
735
+
736
+ void ResizeFullSooTable(CommonFields& common,
737
+ const PolicyFunctions& __restrict policy,
738
+ size_t new_capacity,
739
+ ResizeFullSooTableSamplingMode sampling_mode) {
740
+ AssertFullSoo(common, policy);
741
+ const size_t slot_size = policy.slot_size;
742
+ const size_t slot_align = policy.slot_align;
743
+
744
+ HashtablezInfoHandle infoz;
745
+ if (sampling_mode ==
746
+ ResizeFullSooTableSamplingMode::kForceSampleNoResizeIfUnsampled) {
747
+ if (ABSL_PREDICT_FALSE(policy.is_hashtablez_eligible)) {
748
+ infoz = ForcedTrySample(slot_size, policy.key_size, policy.value_size,
749
+ policy.soo_capacity());
750
+ }
751
+
752
+ if (!infoz.IsSampled()) {
753
+ return;
754
+ }
755
+ }
756
+
757
+ const bool has_infoz = infoz.IsSampled();
758
+
759
+ common.set_capacity(new_capacity);
760
+
761
+ RawHashSetLayout layout(new_capacity, slot_size, slot_align, has_infoz);
762
+ void* alloc = policy.get_char_alloc(common);
763
+ char* mem = static_cast<char*>(policy.alloc(alloc, layout.alloc_size()));
764
+ const GenerationType old_generation = common.generation();
765
+ common.set_generation_ptr(
766
+ reinterpret_cast<GenerationType*>(mem + layout.generation_offset()));
767
+ common.set_generation(NextGeneration(old_generation));
768
+
769
+ // We do not set control and slots in CommonFields yet to avoid overriding
770
+ // SOO data.
771
+ ctrl_t* new_ctrl = reinterpret_cast<ctrl_t*>(mem + layout.control_offset());
772
+ void* new_slots = mem + layout.slot_offset();
773
+
774
+ const size_t soo_slot_hash =
775
+ policy.hash_slot(policy.hash_fn(common), common.soo_data());
776
+
777
+ InsertOldSooSlotAndInitializeControlBytes(common, policy, soo_slot_hash,
778
+ new_ctrl, new_slots);
779
+ ResetGrowthLeft(common);
780
+ if (has_infoz) {
781
+ common.set_has_infoz();
782
+ common.set_infoz(infoz);
783
+ infoz.RecordStorageChanged(common.size(), new_capacity);
784
+ }
785
+ }
786
+
787
+ void GrowIntoSingleGroupShuffleControlBytes(ctrl_t* __restrict old_ctrl,
788
+ size_t old_capacity,
789
+ ctrl_t* __restrict new_ctrl,
790
+ size_t new_capacity) {
791
+ ABSL_SWISSTABLE_ASSERT(is_single_group(new_capacity));
348
792
  constexpr size_t kHalfWidth = Group::kWidth / 2;
349
- constexpr size_t kQuarterWidth = Group::kWidth / 4;
350
- assert(old_capacity_ < kHalfWidth);
351
- static_assert(sizeof(uint64_t) >= kHalfWidth,
352
- "Group size is too large. The ctrl bytes for half a group must "
353
- "fit into a uint64_t for this implementation.");
354
- static_assert(sizeof(uint64_t) <= Group::kWidth,
355
- "Group size is too small. The ctrl bytes for a group must "
356
- "cover a uint64_t for this implementation.");
357
-
358
- const size_t half_old_capacity = old_capacity_ / 2;
359
-
360
- // NOTE: operations are done with compile time known size = kHalfWidth.
793
+ ABSL_ASSUME(old_capacity < kHalfWidth);
794
+ ABSL_ASSUME(old_capacity > 0);
795
+ static_assert(Group::kWidth == 8 || Group::kWidth == 16,
796
+ "Group size is not supported.");
797
+
798
+ // NOTE: operations are done with compile time known size = 8.
361
799
  // Compiler optimizes that into single ASM operation.
362
800
 
363
- // Load the bytes from half_old_capacity + 1. This contains the last half of
364
- // old_ctrl bytes, followed by the sentinel byte, and then the first half of
365
- // the cloned bytes. This effectively shuffles the control bytes.
366
- uint64_t copied_bytes = 0;
367
- copied_bytes =
368
- absl::little_endian::Load64(old_ctrl() + half_old_capacity + 1);
801
+ // Load the bytes from old_capacity. This contains
802
+ // - the sentinel byte
803
+ // - all the old control bytes
804
+ // - the rest is filled with kEmpty bytes
805
+ // Example:
806
+ // old_ctrl = 012S012EEEEEEEEE...
807
+ // copied_bytes = S012EEEE
808
+ uint64_t copied_bytes = absl::little_endian::Load64(old_ctrl + old_capacity);
369
809
 
370
810
  // We change the sentinel byte to kEmpty before storing to both the start of
371
811
  // the new_ctrl, and past the end of the new_ctrl later for the new cloned
372
812
  // bytes. Note that this is faster than setting the sentinel byte to kEmpty
373
813
  // after the copy directly in new_ctrl because we are limited on store
374
814
  // bandwidth.
375
- constexpr uint64_t kEmptyXorSentinel =
815
+ static constexpr uint64_t kEmptyXorSentinel =
376
816
  static_cast<uint8_t>(ctrl_t::kEmpty) ^
377
817
  static_cast<uint8_t>(ctrl_t::kSentinel);
378
- const uint64_t mask_convert_old_sentinel_to_empty =
379
- kEmptyXorSentinel << (half_old_capacity * 8);
380
- copied_bytes ^= mask_convert_old_sentinel_to_empty;
381
-
382
- // Copy second half of bytes to the beginning. This correctly sets the bytes
383
- // [0, old_capacity]. We potentially copy more bytes in order to have compile
384
- // time known size. Mirrored bytes from the old_ctrl() will also be copied. In
385
- // case of old_capacity_ == 3, we will copy 1st element twice.
386
- // Examples:
387
- // (old capacity = 1)
388
- // old_ctrl = 0S0EEEEEEE...
389
- // new_ctrl = E0EEEEEE??...
390
- //
391
- // (old capacity = 3)
392
- // old_ctrl = 012S012EEEEE...
393
- // new_ctrl = 12E012EE????...
394
- //
395
- // (old capacity = 7)
396
- // old_ctrl = 0123456S0123456EE...
397
- // new_ctrl = 456E0123?????????...
398
- absl::little_endian::Store64(new_ctrl, copied_bytes);
399
818
 
400
- // Set the space [old_capacity + 1, new_capacity] to empty as these bytes will
401
- // not be written again. This is safe because
402
- // NumControlBytes = new_capacity + kWidth and new_capacity >=
403
- // old_capacity+1.
404
- // Examples:
405
- // (old_capacity = 3, new_capacity = 15)
406
- // new_ctrl = 12E012EE?????????????...??
407
- // *new_ctrl = 12E0EEEEEEEEEEEEEEEE?...??
408
- // position / S
409
- //
410
- // (old_capacity = 7, new_capacity = 15)
411
- // new_ctrl = 456E0123?????????????????...??
412
- // *new_ctrl = 456E0123EEEEEEEEEEEEEEEE?...??
413
- // position / S
414
- std::memset(new_ctrl + old_capacity_ + 1, static_cast<int8_t>(ctrl_t::kEmpty),
415
- Group::kWidth);
819
+ // Replace the first byte kSentinel with kEmpty.
820
+ // Resulting bytes will be shifted by one byte old control blocks.
821
+ // Example:
822
+ // old_ctrl = 012S012EEEEEEEEE...
823
+ // before = S012EEEE
824
+ // after = E012EEEE
825
+ copied_bytes ^= kEmptyXorSentinel;
826
+
827
+ if (Group::kWidth == 8) {
828
+ // With group size 8, we can grow with two write operations.
829
+ ABSL_SWISSTABLE_ASSERT(old_capacity < 8 &&
830
+ "old_capacity is too large for group size 8");
831
+ absl::little_endian::Store64(new_ctrl, copied_bytes);
832
+
833
+ static constexpr uint64_t kSentinal64 =
834
+ static_cast<uint8_t>(ctrl_t::kSentinel);
835
+
836
+ // Prepend kSentinel byte to the beginning of copied_bytes.
837
+ // We have maximum 3 non-empty bytes at the beginning of copied_bytes for
838
+ // group size 8.
839
+ // Example:
840
+ // old_ctrl = 012S012EEEE
841
+ // before = E012EEEE
842
+ // after = SE012EEE
843
+ copied_bytes = (copied_bytes << 8) ^ kSentinal64;
844
+ absl::little_endian::Store64(new_ctrl + new_capacity, copied_bytes);
845
+ // Example for capacity 3:
846
+ // old_ctrl = 012S012EEEE
847
+ // After the first store:
848
+ // >!
849
+ // new_ctrl = E012EEEE???????
850
+ // After the second store:
851
+ // >!
852
+ // new_ctrl = E012EEESE012EEE
853
+ return;
854
+ }
416
855
 
417
- // Set the last kHalfWidth bytes to empty, to ensure the bytes all the way to
418
- // the end are initialized.
419
- // Examples:
420
- // new_ctrl = 12E0EEEEEEEEEEEEEEEE?...???????
421
- // *new_ctrl = 12E0EEEEEEEEEEEEEEEE???EEEEEEEE
422
- // position S /
423
- //
424
- // new_ctrl = 456E0123EEEEEEEEEEEEEEEE???????
425
- // *new_ctrl = 456E0123EEEEEEEEEEEEEEEEEEEEEEE
426
- // position S /
427
- std::memset(new_ctrl + NumControlBytes(new_capacity) - kHalfWidth,
428
- static_cast<int8_t>(ctrl_t::kEmpty), kHalfWidth);
856
+ ABSL_SWISSTABLE_ASSERT(Group::kWidth == 16);
429
857
 
430
- // Copy the first bytes to the end (starting at new_capacity +1) to set the
431
- // cloned bytes. Note that we use the already copied bytes from old_ctrl here
432
- // rather than copying from new_ctrl to avoid a Read-after-Write hazard, since
433
- // new_ctrl was just written to. The first old_capacity-1 bytes are set
434
- // correctly. Then there may be up to old_capacity bytes that need to be
435
- // overwritten, and any remaining bytes will be correctly set to empty. This
436
- // sets [new_capacity + 1, new_capacity +1 + old_capacity] correctly.
437
- // Examples:
438
- // new_ctrl = 12E0EEEEEEEEEEEEEEEE?...???????
439
- // *new_ctrl = 12E0EEEEEEEEEEEE12E012EEEEEEEEE
440
- // position S/
441
- //
442
- // new_ctrl = 456E0123EEEEEEEE?...???EEEEEEEE
443
- // *new_ctrl = 456E0123EEEEEEEE456E0123EEEEEEE
444
- // position S/
858
+ // Fill the second half of the main control bytes with kEmpty.
859
+ // For small capacity that may write into mirrored control bytes.
860
+ // It is fine as we will overwrite all the bytes later.
861
+ std::memset(new_ctrl + kHalfWidth, static_cast<int8_t>(ctrl_t::kEmpty),
862
+ kHalfWidth);
863
+ // Fill the second half of the mirrored control bytes with kEmpty.
864
+ std::memset(new_ctrl + new_capacity + kHalfWidth,
865
+ static_cast<int8_t>(ctrl_t::kEmpty), kHalfWidth);
866
+ // Copy the first half of the non-mirrored control bytes.
867
+ absl::little_endian::Store64(new_ctrl, copied_bytes);
868
+ new_ctrl[new_capacity] = ctrl_t::kSentinel;
869
+ // Copy the first half of the mirrored control bytes.
445
870
  absl::little_endian::Store64(new_ctrl + new_capacity + 1, copied_bytes);
446
871
 
447
- // Set The remaining bytes at the end past the cloned bytes to empty. The
448
- // incorrectly set bytes are [new_capacity + old_capacity + 2,
449
- // min(new_capacity + 1 + kHalfWidth, new_capacity + old_capacity + 2 +
450
- // half_old_capacity)]. Taking the difference, we need to set min(kHalfWidth -
451
- // (old_capacity + 1), half_old_capacity)]. Since old_capacity < kHalfWidth,
452
- // half_old_capacity < kQuarterWidth, so we set kQuarterWidth beginning at
453
- // new_capacity + old_capacity + 2 to kEmpty.
454
- // Examples:
455
- // new_ctrl = 12E0EEEEEEEEEEEE12E012EEEEEEEEE
456
- // *new_ctrl = 12E0EEEEEEEEEEEE12E0EEEEEEEEEEE
457
- // position S /
458
- //
459
- // new_ctrl = 456E0123EEEEEEEE456E0123EEEEEEE
460
- // *new_ctrl = 456E0123EEEEEEEE456E0123EEEEEEE (no change)
461
- // position S /
462
- std::memset(new_ctrl + new_capacity + old_capacity_ + 2,
463
- static_cast<int8_t>(ctrl_t::kEmpty), kQuarterWidth);
872
+ // Example for growth capacity 1->3:
873
+ // old_ctrl = 0S0EEEEEEEEEEEEEE
874
+ // new_ctrl at the end = E0ESE0EEEEEEEEEEEEE
875
+ // >!
876
+ // new_ctrl after 1st memset = ????????EEEEEEEE???
877
+ // >!
878
+ // new_ctrl after 2nd memset = ????????EEEEEEEEEEE
879
+ // >!
880
+ // new_ctrl after 1st store = E0EEEEEEEEEEEEEEEEE
881
+ // new_ctrl after kSentinel = E0ESEEEEEEEEEEEEEEE
882
+ // >!
883
+ // new_ctrl after 2nd store = E0ESE0EEEEEEEEEEEEE
884
+
885
+ // Example for growth capacity 3->7:
886
+ // old_ctrl = 012S012EEEEEEEEEEEE
887
+ // new_ctrl at the end = E012EEESE012EEEEEEEEEEE
888
+ // >!
889
+ // new_ctrl after 1st memset = ????????EEEEEEEE???????
890
+ // >!
891
+ // new_ctrl after 2nd memset = ????????EEEEEEEEEEEEEEE
892
+ // >!
893
+ // new_ctrl after 1st store = E012EEEEEEEEEEEEEEEEEEE
894
+ // new_ctrl after kSentinel = E012EEESEEEEEEEEEEEEEEE
895
+ // >!
896
+ // new_ctrl after 2nd store = E012EEESE012EEEEEEEEEEE
897
+
898
+ // Example for growth capacity 7->15:
899
+ // old_ctrl = 0123456S0123456EEEEEEEE
900
+ // new_ctrl at the end = E0123456EEEEEEESE0123456EEEEEEE
901
+ // >!
902
+ // new_ctrl after 1st memset = ????????EEEEEEEE???????????????
903
+ // >!
904
+ // new_ctrl after 2nd memset = ????????EEEEEEEE???????EEEEEEEE
905
+ // >!
906
+ // new_ctrl after 1st store = E0123456EEEEEEEE???????EEEEEEEE
907
+ // new_ctrl after kSentinel = E0123456EEEEEEES???????EEEEEEEE
908
+ // >!
909
+ // new_ctrl after 2nd store = E0123456EEEEEEESE0123456EEEEEEE
910
+ }
464
911
 
465
- // Finally, we set the new sentinel byte.
466
- new_ctrl[new_capacity] = ctrl_t::kSentinel;
912
+ // Size of the buffer we allocate on stack for storing probed elements in
913
+ // GrowToNextCapacity algorithm.
914
+ constexpr size_t kProbedElementsBufferSize = 512;
915
+
916
+ // Decodes information about probed elements from contiguous memory.
917
+ // Finds new position for each element and transfers it to the new slots.
918
+ // Returns the total probe length.
919
+ template <typename ProbedItem>
920
+ ABSL_ATTRIBUTE_NOINLINE size_t DecodeAndInsertImpl(
921
+ CommonFields& c, const PolicyFunctions& __restrict policy,
922
+ const ProbedItem* start, const ProbedItem* end, void* old_slots) {
923
+ const size_t new_capacity = c.capacity();
924
+
925
+ void* new_slots = c.slot_array();
926
+ ctrl_t* new_ctrl = c.control();
927
+ size_t total_probe_length = 0;
928
+
929
+ const size_t slot_size = policy.slot_size;
930
+ auto transfer_n = policy.transfer_n;
931
+
932
+ for (; start < end; ++start) {
933
+ const FindInfo target = find_first_non_full_from_h1(
934
+ new_ctrl, static_cast<size_t>(start->h1), new_capacity);
935
+ total_probe_length += target.probe_length;
936
+ const size_t old_index = static_cast<size_t>(start->source_offset);
937
+ const size_t new_i = target.offset;
938
+ ABSL_SWISSTABLE_ASSERT(old_index < new_capacity / 2);
939
+ ABSL_SWISSTABLE_ASSERT(new_i < new_capacity);
940
+ ABSL_SWISSTABLE_ASSERT(IsEmpty(new_ctrl[new_i]));
941
+ void* src_slot = SlotAddress(old_slots, old_index, slot_size);
942
+ void* dst_slot = SlotAddress(new_slots, new_i, slot_size);
943
+ SanitizerUnpoisonMemoryRegion(dst_slot, slot_size);
944
+ transfer_n(&c, dst_slot, src_slot, 1);
945
+ SetCtrlInLargeTable(c, new_i, static_cast<h2_t>(start->h2), slot_size);
946
+ }
947
+ return total_probe_length;
467
948
  }
468
949
 
469
- void HashSetResizeHelper::InitControlBytesAfterSoo(ctrl_t* new_ctrl, ctrl_t h2,
470
- size_t new_capacity) {
471
- assert(is_single_group(new_capacity));
472
- std::memset(new_ctrl, static_cast<int8_t>(ctrl_t::kEmpty),
473
- NumControlBytes(new_capacity));
474
- assert(HashSetResizeHelper::SooSlotIndex() == 1);
475
- // This allows us to avoid branching on had_soo_slot_.
476
- assert(had_soo_slot_ || h2 == ctrl_t::kEmpty);
477
- new_ctrl[1] = new_ctrl[new_capacity + 2] = h2;
950
+ // Sentinel value for the start of marked elements.
951
+ // Signals that there are no marked elements.
952
+ constexpr size_t kNoMarkedElementsSentinel = ~size_t{};
953
+
954
+ // Process probed elements that did not fit into available buffers.
955
+ // We marked them in control bytes as kSentinel.
956
+ // Hash recomputation and full probing is done here.
957
+ // This use case should be extremely rare.
958
+ ABSL_ATTRIBUTE_NOINLINE size_t ProcessProbedMarkedElements(
959
+ CommonFields& c, const PolicyFunctions& __restrict policy, ctrl_t* old_ctrl,
960
+ void* old_slots, size_t start) {
961
+ size_t old_capacity = PreviousCapacity(c.capacity());
962
+ const size_t slot_size = policy.slot_size;
963
+ void* new_slots = c.slot_array();
964
+ size_t total_probe_length = 0;
965
+ const void* hash_fn = policy.hash_fn(c);
966
+ auto hash_slot = policy.hash_slot;
967
+ auto transfer_n = policy.transfer_n;
968
+ for (size_t old_index = start; old_index < old_capacity; ++old_index) {
969
+ if (old_ctrl[old_index] != ctrl_t::kSentinel) {
970
+ continue;
971
+ }
972
+ void* src_slot = SlotAddress(old_slots, old_index, slot_size);
973
+ const size_t hash = hash_slot(hash_fn, src_slot);
974
+ const FindInfo target = find_first_non_full(c, hash);
975
+ total_probe_length += target.probe_length;
976
+ const size_t new_i = target.offset;
977
+ void* dst_slot = SlotAddress(new_slots, new_i, slot_size);
978
+ SetCtrlInLargeTable(c, new_i, H2(hash), slot_size);
979
+ transfer_n(&c, dst_slot, src_slot, 1);
980
+ }
981
+ return total_probe_length;
982
+ }
983
+
984
+ // The largest old capacity for which it is guaranteed that all probed elements
985
+ // fit in ProbedItemEncoder's local buffer.
986
+ // For such tables, `encode_probed_element` is trivial.
987
+ constexpr size_t kMaxLocalBufferOldCapacity =
988
+ kProbedElementsBufferSize / sizeof(ProbedItem4Bytes) - 1;
989
+ static_assert(IsValidCapacity(kMaxLocalBufferOldCapacity));
990
+ constexpr size_t kMaxLocalBufferNewCapacity =
991
+ NextCapacity(kMaxLocalBufferOldCapacity);
992
+ static_assert(kMaxLocalBufferNewCapacity <= ProbedItem4Bytes::kMaxNewCapacity);
993
+ static_assert(NextCapacity(kMaxLocalBufferNewCapacity) <=
994
+ ProbedItem4Bytes::kMaxNewCapacity);
995
+
996
+ // Initializes mirrored control bytes after
997
+ // transfer_unprobed_elements_to_next_capacity.
998
+ void InitializeMirroredControlBytes(ctrl_t* new_ctrl, size_t new_capacity) {
999
+ std::memcpy(new_ctrl + new_capacity,
1000
+ // We own GrowthInfo just before control bytes. So it is ok
1001
+ // to read one byte from it.
1002
+ new_ctrl - 1, Group::kWidth);
478
1003
  new_ctrl[new_capacity] = ctrl_t::kSentinel;
479
1004
  }
480
1005
 
481
- void HashSetResizeHelper::GrowIntoSingleGroupShuffleTransferableSlots(
482
- void* new_slots, size_t slot_size) const {
483
- assert(old_capacity_ > 0);
484
- const size_t half_old_capacity = old_capacity_ / 2;
1006
+ // Encodes probed elements into available memory.
1007
+ // At first, a local (on stack) buffer is used. The size of the buffer is
1008
+ // kProbedElementsBufferSize bytes.
1009
+ // When the local buffer is full, we switch to `control_` buffer. We are allowed
1010
+ // to overwrite `control_` buffer till the `source_offset` byte. In case we have
1011
+ // no space in `control_` buffer, we fallback to a naive algorithm for all the
1012
+ // rest of the probed elements. We mark elements as kSentinel in control bytes
1013
+ // and later process them fully. See ProcessMarkedElements for details. It
1014
+ // should be extremely rare.
1015
+ template <typename ProbedItemType,
1016
+ // If true, we only use the local buffer and never switch to the
1017
+ // control buffer.
1018
+ bool kGuaranteedFitToBuffer = false>
1019
+ class ProbedItemEncoder {
1020
+ public:
1021
+ using ProbedItem = ProbedItemType;
1022
+ explicit ProbedItemEncoder(ctrl_t* control) : control_(control) {}
1023
+
1024
+ // Encode item into the best available location.
1025
+ void EncodeItem(ProbedItem item) {
1026
+ if (ABSL_PREDICT_FALSE(!kGuaranteedFitToBuffer && pos_ >= end_)) {
1027
+ return ProcessEncodeWithOverflow(item);
1028
+ }
1029
+ ABSL_SWISSTABLE_ASSERT(pos_ < end_);
1030
+ *pos_ = item;
1031
+ ++pos_;
1032
+ }
1033
+
1034
+ // Decodes information about probed elements from all available sources.
1035
+ // Finds new position for each element and transfers it to the new slots.
1036
+ // Returns the total probe length.
1037
+ size_t DecodeAndInsertToTable(CommonFields& common,
1038
+ const PolicyFunctions& __restrict policy,
1039
+ void* old_slots) const {
1040
+ if (pos_ == buffer_) {
1041
+ return 0;
1042
+ }
1043
+ if constexpr (kGuaranteedFitToBuffer) {
1044
+ return DecodeAndInsertImpl(common, policy, buffer_, pos_, old_slots);
1045
+ }
1046
+ size_t total_probe_length = DecodeAndInsertImpl(
1047
+ common, policy, buffer_,
1048
+ local_buffer_full_ ? buffer_ + kBufferSize : pos_, old_slots);
1049
+ if (!local_buffer_full_) {
1050
+ return total_probe_length;
1051
+ }
1052
+ total_probe_length +=
1053
+ DecodeAndInsertToTableOverflow(common, policy, old_slots);
1054
+ return total_probe_length;
1055
+ }
1056
+
1057
+ private:
1058
+ static ProbedItem* AlignToNextItem(void* ptr) {
1059
+ return reinterpret_cast<ProbedItem*>(AlignUpTo(
1060
+ reinterpret_cast<uintptr_t>(ptr), alignof(ProbedItem)));
1061
+ }
1062
+
1063
+ ProbedItem* OverflowBufferStart() const {
1064
+ // We reuse GrowthInfo memory as well.
1065
+ return AlignToNextItem(control_ - ControlOffset(/*has_infoz=*/false));
1066
+ }
1067
+
1068
+ // Encodes item when previously allocated buffer is full.
1069
+ // At first that happens when local buffer is full.
1070
+ // We switch from the local buffer to the control buffer.
1071
+ // Every time this function is called, the available buffer is extended till
1072
+ // `item.source_offset` byte in the control buffer.
1073
+ // After the buffer is extended, this function wouldn't be called till the
1074
+ // buffer is exhausted.
1075
+ //
1076
+ // If there's no space in the control buffer, we fallback to naive algorithm
1077
+ // and mark probed elements as kSentinel in the control buffer. In this case,
1078
+ // we will call this function for every subsequent probed element.
1079
+ ABSL_ATTRIBUTE_NOINLINE void ProcessEncodeWithOverflow(ProbedItem item) {
1080
+ if (!local_buffer_full_) {
1081
+ local_buffer_full_ = true;
1082
+ pos_ = OverflowBufferStart();
1083
+ }
1084
+ const size_t source_offset = static_cast<size_t>(item.source_offset);
1085
+ // We are in fallback mode so we can't reuse control buffer anymore.
1086
+ // Probed elements are marked as kSentinel in the control buffer.
1087
+ if (ABSL_PREDICT_FALSE(marked_elements_starting_position_ !=
1088
+ kNoMarkedElementsSentinel)) {
1089
+ control_[source_offset] = ctrl_t::kSentinel;
1090
+ return;
1091
+ }
1092
+ // Refresh the end pointer to the new available position.
1093
+ // Invariant: if pos < end, then we have at least sizeof(ProbedItem) bytes
1094
+ // to write.
1095
+ end_ = control_ + source_offset + 1 - sizeof(ProbedItem);
1096
+ if (ABSL_PREDICT_TRUE(pos_ < end_)) {
1097
+ *pos_ = item;
1098
+ ++pos_;
1099
+ return;
1100
+ }
1101
+ control_[source_offset] = ctrl_t::kSentinel;
1102
+ marked_elements_starting_position_ = source_offset;
1103
+ // Now we will always fall down to `ProcessEncodeWithOverflow`.
1104
+ ABSL_SWISSTABLE_ASSERT(pos_ >= end_);
1105
+ }
1106
+
1107
+ // Decodes information about probed elements from control buffer and processes
1108
+ // marked elements.
1109
+ // Finds new position for each element and transfers it to the new slots.
1110
+ // Returns the total probe length.
1111
+ ABSL_ATTRIBUTE_NOINLINE size_t DecodeAndInsertToTableOverflow(
1112
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1113
+ void* old_slots) const {
1114
+ ABSL_SWISSTABLE_ASSERT(local_buffer_full_ &&
1115
+ "must not be called when local buffer is not full");
1116
+ size_t total_probe_length = DecodeAndInsertImpl(
1117
+ common, policy, OverflowBufferStart(), pos_, old_slots);
1118
+ if (ABSL_PREDICT_TRUE(marked_elements_starting_position_ ==
1119
+ kNoMarkedElementsSentinel)) {
1120
+ return total_probe_length;
1121
+ }
1122
+ total_probe_length +=
1123
+ ProcessProbedMarkedElements(common, policy, control_, old_slots,
1124
+ marked_elements_starting_position_);
1125
+ return total_probe_length;
1126
+ }
485
1127
 
486
- SanitizerUnpoisonMemoryRegion(old_slots(), slot_size * old_capacity_);
487
- std::memcpy(new_slots,
488
- SlotAddress(old_slots(), half_old_capacity + 1, slot_size),
489
- slot_size * half_old_capacity);
490
- std::memcpy(SlotAddress(new_slots, half_old_capacity + 1, slot_size),
491
- old_slots(), slot_size * (half_old_capacity + 1));
1128
+ static constexpr size_t kBufferSize =
1129
+ kProbedElementsBufferSize / sizeof(ProbedItem);
1130
+ ProbedItem buffer_[kBufferSize];
1131
+ // If local_buffer_full_ is false, then pos_/end_ are in the local buffer,
1132
+ // otherwise, they're in the overflow buffer.
1133
+ ProbedItem* pos_ = buffer_;
1134
+ const void* end_ = buffer_ + kBufferSize;
1135
+ ctrl_t* const control_;
1136
+ size_t marked_elements_starting_position_ = kNoMarkedElementsSentinel;
1137
+ bool local_buffer_full_ = false;
1138
+ };
1139
+
1140
+ // Grows to next capacity with specified encoder type.
1141
+ // Encoder is used to store probed elements that are processed later.
1142
+ // Different encoder is used depending on the capacity of the table.
1143
+ // Returns total probe length.
1144
+ template <typename Encoder>
1145
+ size_t GrowToNextCapacity(CommonFields& common,
1146
+ const PolicyFunctions& __restrict policy,
1147
+ ctrl_t* old_ctrl, void* old_slots) {
1148
+ using ProbedItem = typename Encoder::ProbedItem;
1149
+ ABSL_SWISSTABLE_ASSERT(common.capacity() <= ProbedItem::kMaxNewCapacity);
1150
+ Encoder encoder(old_ctrl);
1151
+ policy.transfer_unprobed_elements_to_next_capacity(
1152
+ common, old_ctrl, old_slots, &encoder,
1153
+ [](void* probed_storage, h2_t h2, size_t source_offset, size_t h1) {
1154
+ auto encoder_ptr = static_cast<Encoder*>(probed_storage);
1155
+ encoder_ptr->EncodeItem(ProbedItem(h2, source_offset, h1));
1156
+ });
1157
+ InitializeMirroredControlBytes(common.control(), common.capacity());
1158
+ return encoder.DecodeAndInsertToTable(common, policy, old_slots);
492
1159
  }
493
1160
 
494
- void HashSetResizeHelper::GrowSizeIntoSingleGroupTransferable(
495
- CommonFields& c, size_t slot_size) {
496
- assert(old_capacity_ < Group::kWidth / 2);
497
- assert(is_single_group(c.capacity()));
498
- assert(IsGrowingIntoSingleGroupApplicable(old_capacity_, c.capacity()));
1161
+ // Grows to next capacity for relatively small tables so that even if all
1162
+ // elements are probed, we don't need to overflow the local buffer.
1163
+ // Returns total probe length.
1164
+ size_t GrowToNextCapacityThatFitsInLocalBuffer(
1165
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1166
+ ctrl_t* old_ctrl, void* old_slots) {
1167
+ ABSL_SWISSTABLE_ASSERT(common.capacity() <= kMaxLocalBufferNewCapacity);
1168
+ return GrowToNextCapacity<
1169
+ ProbedItemEncoder<ProbedItem4Bytes, /*kGuaranteedFitToBuffer=*/true>>(
1170
+ common, policy, old_ctrl, old_slots);
1171
+ }
499
1172
 
500
- GrowIntoSingleGroupShuffleControlBytes(c.control(), c.capacity());
501
- GrowIntoSingleGroupShuffleTransferableSlots(c.slot_array(), slot_size);
1173
+ // Grows to next capacity with different encodings. Returns total probe length.
1174
+ // These functions are useful to simplify profile analysis.
1175
+ size_t GrowToNextCapacity4BytesEncoder(CommonFields& common,
1176
+ const PolicyFunctions& __restrict policy,
1177
+ ctrl_t* old_ctrl, void* old_slots) {
1178
+ return GrowToNextCapacity<ProbedItemEncoder<ProbedItem4Bytes>>(
1179
+ common, policy, old_ctrl, old_slots);
1180
+ }
1181
+ size_t GrowToNextCapacity8BytesEncoder(CommonFields& common,
1182
+ const PolicyFunctions& __restrict policy,
1183
+ ctrl_t* old_ctrl, void* old_slots) {
1184
+ return GrowToNextCapacity<ProbedItemEncoder<ProbedItem8Bytes>>(
1185
+ common, policy, old_ctrl, old_slots);
1186
+ }
1187
+ size_t GrowToNextCapacity16BytesEncoder(
1188
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1189
+ ctrl_t* old_ctrl, void* old_slots) {
1190
+ return GrowToNextCapacity<ProbedItemEncoder<ProbedItem16Bytes>>(
1191
+ common, policy, old_ctrl, old_slots);
1192
+ }
502
1193
 
503
- // We poison since GrowIntoSingleGroupShuffleTransferableSlots
504
- // may leave empty slots unpoisoned.
505
- PoisonSingleGroupEmptySlots(c, slot_size);
1194
+ // Grows to next capacity for tables with relatively large capacity so that we
1195
+ // can't guarantee that all probed elements fit in the local buffer. Returns
1196
+ // total probe length.
1197
+ size_t GrowToNextCapacityOverflowLocalBuffer(
1198
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1199
+ ctrl_t* old_ctrl, void* old_slots) {
1200
+ const size_t new_capacity = common.capacity();
1201
+ if (ABSL_PREDICT_TRUE(new_capacity <= ProbedItem4Bytes::kMaxNewCapacity)) {
1202
+ return GrowToNextCapacity4BytesEncoder(common, policy, old_ctrl, old_slots);
1203
+ }
1204
+ if (ABSL_PREDICT_TRUE(new_capacity <= ProbedItem8Bytes::kMaxNewCapacity)) {
1205
+ return GrowToNextCapacity8BytesEncoder(common, policy, old_ctrl, old_slots);
1206
+ }
1207
+ // 16 bytes encoding supports the maximum swisstable capacity.
1208
+ return GrowToNextCapacity16BytesEncoder(common, policy, old_ctrl, old_slots);
506
1209
  }
507
1210
 
508
- void HashSetResizeHelper::TransferSlotAfterSoo(CommonFields& c,
509
- size_t slot_size) {
510
- assert(was_soo_);
511
- assert(had_soo_slot_);
512
- assert(is_single_group(c.capacity()));
513
- std::memcpy(SlotAddress(c.slot_array(), SooSlotIndex(), slot_size),
514
- old_soo_data(), slot_size);
515
- PoisonSingleGroupEmptySlots(c, slot_size);
1211
+ // Dispatches to the appropriate `GrowToNextCapacity*` function based on the
1212
+ // capacity of the table. Returns total probe length.
1213
+ ABSL_ATTRIBUTE_NOINLINE
1214
+ size_t GrowToNextCapacityDispatch(CommonFields& common,
1215
+ const PolicyFunctions& __restrict policy,
1216
+ ctrl_t* old_ctrl, void* old_slots) {
1217
+ const size_t new_capacity = common.capacity();
1218
+ if (ABSL_PREDICT_TRUE(new_capacity <= kMaxLocalBufferNewCapacity)) {
1219
+ return GrowToNextCapacityThatFitsInLocalBuffer(common, policy, old_ctrl,
1220
+ old_slots);
1221
+ } else {
1222
+ return GrowToNextCapacityOverflowLocalBuffer(common, policy, old_ctrl,
1223
+ old_slots);
1224
+ }
516
1225
  }
517
1226
 
518
- namespace {
1227
+ // Grows to next capacity and prepares insert for the given new_hash.
1228
+ // Returns the offset of the new element.
1229
+ size_t GrowToNextCapacityAndPrepareInsert(
1230
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1231
+ size_t new_hash) {
1232
+ ABSL_SWISSTABLE_ASSERT(common.growth_left() == 0);
1233
+ const size_t old_capacity = common.capacity();
1234
+ ABSL_SWISSTABLE_ASSERT(old_capacity == 0 ||
1235
+ old_capacity > policy.soo_capacity());
1236
+
1237
+ const size_t new_capacity = NextCapacity(old_capacity);
1238
+ ABSL_SWISSTABLE_ASSERT(IsValidCapacity(new_capacity));
1239
+ ABSL_SWISSTABLE_ASSERT(new_capacity > policy.soo_capacity());
1240
+
1241
+ ctrl_t* old_ctrl = common.control();
1242
+ void* old_slots = common.slot_array();
1243
+
1244
+ common.set_capacity(new_capacity);
1245
+ const size_t slot_size = policy.slot_size;
1246
+ const size_t slot_align = policy.slot_align;
1247
+ HashtablezInfoHandle infoz;
1248
+ if (old_capacity > 0) {
1249
+ infoz = common.infoz();
1250
+ } else {
1251
+ const bool should_sample =
1252
+ policy.is_hashtablez_eligible && ShouldSampleNextTable();
1253
+ if (ABSL_PREDICT_FALSE(should_sample)) {
1254
+ infoz = ForcedTrySample(slot_size, policy.key_size, policy.value_size,
1255
+ policy.soo_capacity());
1256
+ }
1257
+ }
1258
+ const bool has_infoz = infoz.IsSampled();
1259
+
1260
+ RawHashSetLayout layout(new_capacity, slot_size, slot_align, has_infoz);
1261
+ void* alloc = policy.get_char_alloc(common);
1262
+ char* mem = static_cast<char*>(policy.alloc(alloc, layout.alloc_size()));
1263
+ const GenerationType old_generation = common.generation();
1264
+ common.set_generation_ptr(
1265
+ reinterpret_cast<GenerationType*>(mem + layout.generation_offset()));
1266
+ common.set_generation(NextGeneration(old_generation));
1267
+
1268
+ ctrl_t* new_ctrl = reinterpret_cast<ctrl_t*>(mem + layout.control_offset());
1269
+ void* new_slots = mem + layout.slot_offset();
1270
+ common.set_control</*kGenerateSeed=*/false>(new_ctrl);
1271
+ common.set_slots(new_slots);
1272
+ SanitizerPoisonMemoryRegion(new_slots, new_capacity * slot_size);
1273
+
1274
+ h2_t new_h2 = H2(new_hash);
1275
+ size_t total_probe_length = 0;
1276
+ FindInfo find_info;
1277
+ if (old_capacity == 0) {
1278
+ static_assert(NextCapacity(0) == 1);
1279
+ InitializeSingleElementControlBytes(new_h2, new_ctrl);
1280
+ common.generate_new_seed();
1281
+ find_info = FindInfo{0, 0};
1282
+ SanitizerUnpoisonMemoryRegion(new_slots, slot_size);
1283
+ } else {
1284
+ if (ABSL_PREDICT_TRUE(is_single_group(new_capacity))) {
1285
+ GrowIntoSingleGroupShuffleControlBytes(old_ctrl, old_capacity, new_ctrl,
1286
+ new_capacity);
1287
+ // Single group tables have all slots full on resize. So we can transfer
1288
+ // all slots without checking the control bytes.
1289
+ ABSL_SWISSTABLE_ASSERT(common.size() == old_capacity);
1290
+ auto* target = NextSlot(new_slots, slot_size);
1291
+ SanitizerUnpoisonMemoryRegion(target, old_capacity * slot_size);
1292
+ policy.transfer_n(&common, target, old_slots, old_capacity);
1293
+ // We put the new element either at the beginning or at the end of the
1294
+ // table with approximately equal probability.
1295
+ size_t offset = SingleGroupTableH1(new_hash, common.seed()) & 1
1296
+ ? 0
1297
+ : new_capacity - 1;
1298
+
1299
+ ABSL_SWISSTABLE_ASSERT(IsEmpty(new_ctrl[offset]));
1300
+ SetCtrlInSingleGroupTable(common, offset, new_h2, policy.slot_size);
1301
+ find_info = FindInfo{offset, 0};
1302
+ } else {
1303
+ total_probe_length =
1304
+ GrowToNextCapacityDispatch(common, policy, old_ctrl, old_slots);
1305
+ find_info = find_first_non_full(common, new_hash);
1306
+ SetCtrlInLargeTable(common, find_info.offset, new_h2, policy.slot_size);
1307
+ }
1308
+ ABSL_SWISSTABLE_ASSERT(old_capacity > policy.soo_capacity());
1309
+ (*policy.dealloc)(alloc, old_capacity, old_ctrl, slot_size, slot_align,
1310
+ has_infoz);
1311
+ }
1312
+ PrepareInsertCommon(common);
1313
+ ResetGrowthLeft(GetGrowthInfoFromControl(new_ctrl), new_capacity,
1314
+ common.size());
1315
+
1316
+ if (ABSL_PREDICT_FALSE(has_infoz)) {
1317
+ common.set_has_infoz();
1318
+ infoz.RecordStorageChanged(common.size() - 1, new_capacity);
1319
+ infoz.RecordRehash(total_probe_length);
1320
+ infoz.RecordInsert(new_hash, find_info.probe_length);
1321
+ common.set_infoz(infoz);
1322
+ }
1323
+ return find_info.offset;
1324
+ }
519
1325
 
520
1326
  // Called whenever the table needs to vacate empty slots either by removing
521
- // tombstones via rehash or growth.
1327
+ // tombstones via rehash or growth to next capacity.
522
1328
  ABSL_ATTRIBUTE_NOINLINE
523
- FindInfo FindInsertPositionWithGrowthOrRehash(CommonFields& common, size_t hash,
524
- const PolicyFunctions& policy) {
1329
+ size_t RehashOrGrowToNextCapacityAndPrepareInsert(
1330
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1331
+ size_t new_hash) {
525
1332
  const size_t cap = common.capacity();
1333
+ ABSL_ASSUME(cap > 0);
526
1334
  if (cap > Group::kWidth &&
527
1335
  // Do these calculations in 64-bit to avoid overflow.
528
1336
  common.size() * uint64_t{32} <= cap * uint64_t{25}) {
@@ -567,77 +1375,468 @@ FindInfo FindInsertPositionWithGrowthOrRehash(CommonFields& common, size_t hash,
567
1375
  // 762 | 149836 0.37 13 | 148559 0.74 190
568
1376
  // 807 | 149736 0.39 14 | 151107 0.39 14
569
1377
  // 852 | 150204 0.42 15 | 151019 0.42 15
570
- DropDeletesWithoutResize(common, policy);
1378
+ return DropDeletesWithoutResizeAndPrepareInsert(common, policy, new_hash);
571
1379
  } else {
572
1380
  // Otherwise grow the container.
573
- policy.resize(common, NextCapacity(cap), HashtablezInfoHandle{});
1381
+ return GrowToNextCapacityAndPrepareInsert(common, policy, new_hash);
574
1382
  }
575
- // This function is typically called with tables containing deleted slots.
576
- // The table will be big and `FindFirstNonFullAfterResize` will always
577
- // fallback to `find_first_non_full`. So using `find_first_non_full` directly.
578
- return find_first_non_full(common, hash);
1383
+ }
1384
+
1385
+ // Slow path for PrepareInsertNonSoo that is called when the table has deleted
1386
+ // slots or need to be resized or rehashed.
1387
+ size_t PrepareInsertNonSooSlow(CommonFields& common,
1388
+ const PolicyFunctions& __restrict policy,
1389
+ size_t hash) {
1390
+ const GrowthInfo growth_info = common.growth_info();
1391
+ ABSL_SWISSTABLE_ASSERT(!growth_info.HasNoDeletedAndGrowthLeft());
1392
+ if (ABSL_PREDICT_TRUE(growth_info.HasNoGrowthLeftAndNoDeleted())) {
1393
+ // Table without deleted slots (>95% cases) that needs to be resized.
1394
+ ABSL_SWISSTABLE_ASSERT(growth_info.HasNoDeleted() &&
1395
+ growth_info.GetGrowthLeft() == 0);
1396
+ return GrowToNextCapacityAndPrepareInsert(common, policy, hash);
1397
+ }
1398
+ if (ABSL_PREDICT_FALSE(growth_info.HasNoGrowthLeftAssumingMayHaveDeleted())) {
1399
+ // Table with deleted slots that needs to be rehashed or resized.
1400
+ return RehashOrGrowToNextCapacityAndPrepareInsert(common, policy, hash);
1401
+ }
1402
+ // Table with deleted slots that has space for the inserting element.
1403
+ FindInfo target = find_first_non_full(common, hash);
1404
+ PrepareInsertCommon(common);
1405
+ common.growth_info().OverwriteControlAsFull(common.control()[target.offset]);
1406
+ SetCtrlInLargeTable(common, target.offset, H2(hash), policy.slot_size);
1407
+ common.infoz().RecordInsert(hash, target.probe_length);
1408
+ return target.offset;
1409
+ }
1410
+
1411
+ // Resizes empty non-allocated SOO table to NextCapacity(SooCapacity()),
1412
+ // forces the table to be sampled and prepares the insert.
1413
+ // SOO tables need to switch from SOO to heap in order to store the infoz.
1414
+ // Requires:
1415
+ // 1. `c.capacity() == SooCapacity()`.
1416
+ // 2. `c.empty()`.
1417
+ ABSL_ATTRIBUTE_NOINLINE size_t
1418
+ GrowEmptySooTableToNextCapacityForceSamplingAndPrepareInsert(
1419
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1420
+ size_t new_hash) {
1421
+ ResizeEmptyNonAllocatedTableImpl(common, policy, NextCapacity(SooCapacity()),
1422
+ /*force_infoz=*/true);
1423
+ PrepareInsertCommon(common);
1424
+ common.growth_info().OverwriteEmptyAsFull();
1425
+ SetCtrlInSingleGroupTable(common, SooSlotIndex(), H2(new_hash),
1426
+ policy.slot_size);
1427
+ common.infoz().RecordInsert(new_hash, /*distance_from_desired=*/0);
1428
+ return SooSlotIndex();
1429
+ }
1430
+
1431
+ // Resizes empty non-allocated table to the capacity to fit new_size elements.
1432
+ // Requires:
1433
+ // 1. `c.capacity() == policy.soo_capacity()`.
1434
+ // 2. `c.empty()`.
1435
+ // 3. `new_size > policy.soo_capacity()`.
1436
+ // The table will be attempted to be sampled.
1437
+ void ReserveEmptyNonAllocatedTableToFitNewSize(
1438
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1439
+ size_t new_size) {
1440
+ ValidateMaxSize(new_size, policy.slot_size);
1441
+ ABSL_ASSUME(new_size > 0);
1442
+ ResizeEmptyNonAllocatedTableImpl(common, policy, SizeToCapacity(new_size),
1443
+ /*force_infoz=*/false);
1444
+ // This is after resize, to ensure that we have completed the allocation
1445
+ // and have potentially sampled the hashtable.
1446
+ common.infoz().RecordReservation(new_size);
1447
+ }
1448
+
1449
+ // Type erased version of raw_hash_set::reserve for tables that have an
1450
+ // allocated backing array.
1451
+ //
1452
+ // Requires:
1453
+ // 1. `c.capacity() > policy.soo_capacity()` OR `!c.empty()`.
1454
+ // Reserving already allocated tables is considered to be a rare case.
1455
+ ABSL_ATTRIBUTE_NOINLINE void ReserveAllocatedTable(
1456
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1457
+ size_t new_size) {
1458
+ const size_t cap = common.capacity();
1459
+ ValidateMaxSize(new_size, policy.slot_size);
1460
+ ABSL_ASSUME(new_size > 0);
1461
+ const size_t new_capacity = SizeToCapacity(new_size);
1462
+ if (cap == policy.soo_capacity()) {
1463
+ ABSL_SWISSTABLE_ASSERT(!common.empty());
1464
+ ResizeFullSooTable(common, policy, new_capacity,
1465
+ ResizeFullSooTableSamplingMode::kNoSampling);
1466
+ } else {
1467
+ ABSL_SWISSTABLE_ASSERT(cap > policy.soo_capacity());
1468
+ // TODO(b/382423690): consider using GrowToNextCapacity, when applicable.
1469
+ ResizeAllocatedTableWithSeedChange(common, policy, new_capacity);
1470
+ }
1471
+ common.infoz().RecordReservation(new_size);
579
1472
  }
580
1473
 
581
1474
  } // namespace
582
1475
 
583
- const void* GetHashRefForEmptyHasher(const CommonFields& common) {
1476
+ void* GetRefForEmptyClass(CommonFields& common) {
584
1477
  // Empty base optimization typically make the empty base class address to be
585
1478
  // the same as the first address of the derived class object.
586
- // But we generally assume that for empty hasher we can return any valid
1479
+ // But we generally assume that for empty classes we can return any valid
587
1480
  // pointer.
588
1481
  return &common;
589
1482
  }
590
1483
 
591
- size_t PrepareInsertNonSoo(CommonFields& common, size_t hash, FindInfo target,
592
- const PolicyFunctions& policy) {
593
- // When there are no deleted slots in the table
594
- // and growth_left is positive, we can insert at the first
595
- // empty slot in the probe sequence (target).
596
- const bool use_target_hint =
597
- // Optimization is disabled when generations are enabled.
598
- // We have to rehash even sparse tables randomly in such mode.
599
- !SwisstableGenerationsEnabled() &&
600
- common.growth_info().HasNoDeletedAndGrowthLeft();
601
- if (ABSL_PREDICT_FALSE(!use_target_hint)) {
602
- // Notes about optimized mode when generations are disabled:
603
- // We do not enter this branch if table has no deleted slots
604
- // and growth_left is positive.
605
- // We enter this branch in the following cases listed in decreasing
606
- // frequency:
607
- // 1. Table without deleted slots (>95% cases) that needs to be resized.
608
- // 2. Table with deleted slots that has space for the inserting element.
609
- // 3. Table with deleted slots that needs to be rehashed or resized.
610
- if (ABSL_PREDICT_TRUE(common.growth_info().HasNoGrowthLeftAndNoDeleted())) {
611
- const size_t old_capacity = common.capacity();
612
- policy.resize(common, NextCapacity(old_capacity), HashtablezInfoHandle{});
613
- target = HashSetResizeHelper::FindFirstNonFullAfterResize(
614
- common, old_capacity, hash);
615
- } else {
616
- // Note: the table may have no deleted slots here when generations
617
- // are enabled.
618
- const bool rehash_for_bug_detection =
619
- common.should_rehash_for_bug_detection_on_insert();
620
- if (rehash_for_bug_detection) {
621
- // Move to a different heap allocation in order to detect bugs.
622
- const size_t cap = common.capacity();
623
- policy.resize(common,
624
- common.growth_left() > 0 ? cap : NextCapacity(cap),
625
- HashtablezInfoHandle{});
1484
+ void ResizeAllocatedTableWithSeedChange(
1485
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1486
+ size_t new_capacity) {
1487
+ ResizeNonSooImpl<ResizeNonSooMode::kGuaranteedAllocated>(
1488
+ common, policy, new_capacity, common.infoz());
1489
+ }
1490
+
1491
+ void ReserveEmptyNonAllocatedTableToFitBucketCount(
1492
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1493
+ size_t bucket_count) {
1494
+ size_t new_capacity = NormalizeCapacity(bucket_count);
1495
+ ValidateMaxSize(CapacityToGrowth(new_capacity), policy.slot_size);
1496
+ ResizeEmptyNonAllocatedTableImpl(common, policy, new_capacity,
1497
+ /*force_infoz=*/false);
1498
+ }
1499
+
1500
+ // Resizes a full SOO table to the NextCapacity(SooCapacity()).
1501
+ template <size_t SooSlotMemcpySize, bool TransferUsesMemcpy>
1502
+ size_t GrowSooTableToNextCapacityAndPrepareInsert(
1503
+ CommonFields& common, const PolicyFunctions& __restrict policy,
1504
+ size_t new_hash, ctrl_t soo_slot_ctrl) {
1505
+ AssertSoo(common, policy);
1506
+ if (ABSL_PREDICT_FALSE(soo_slot_ctrl == ctrl_t::kEmpty)) {
1507
+ // The table is empty, it is only used for forced sampling of SOO tables.
1508
+ return GrowEmptySooTableToNextCapacityForceSamplingAndPrepareInsert(
1509
+ common, policy, new_hash);
1510
+ }
1511
+ ABSL_SWISSTABLE_ASSERT(common.size() == policy.soo_capacity());
1512
+ static constexpr size_t kNewCapacity = NextCapacity(SooCapacity());
1513
+ const size_t slot_size = policy.slot_size;
1514
+ const size_t slot_align = policy.slot_align;
1515
+ common.set_capacity(kNewCapacity);
1516
+
1517
+ // Since the table is not empty, it will not be sampled.
1518
+ // The decision to sample was already made during the first insertion.
1519
+ RawHashSetLayout layout(kNewCapacity, slot_size, slot_align,
1520
+ /*has_infoz=*/false);
1521
+ void* alloc = policy.get_char_alloc(common);
1522
+ char* mem = static_cast<char*>(policy.alloc(alloc, layout.alloc_size()));
1523
+ const GenerationType old_generation = common.generation();
1524
+ common.set_generation_ptr(
1525
+ reinterpret_cast<GenerationType*>(mem + layout.generation_offset()));
1526
+ common.set_generation(NextGeneration(old_generation));
1527
+
1528
+ // We do not set control and slots in CommonFields yet to avoid overriding
1529
+ // SOO data.
1530
+ ctrl_t* new_ctrl = reinterpret_cast<ctrl_t*>(mem + layout.control_offset());
1531
+ void* new_slots = mem + layout.slot_offset();
1532
+
1533
+ PrepareInsertCommon(common);
1534
+ ABSL_SWISSTABLE_ASSERT(common.size() == 2);
1535
+ GetGrowthInfoFromControl(new_ctrl).InitGrowthLeftNoDeleted(kNewCapacity - 2);
1536
+ common.generate_new_seed();
1537
+
1538
+ // After resize from capacity 1 to 3, we always have exactly the slot with
1539
+ // index 1 occupied, so we need to insert either at index 0 or index 2.
1540
+ static_assert(SooSlotIndex() == 1);
1541
+ const size_t offset = SingleGroupTableH1(new_hash, common.seed()) & 2;
1542
+ InitializeThreeElementsControlBytesAfterSoo(soo_slot_ctrl, new_hash, offset,
1543
+ new_ctrl);
1544
+
1545
+ SanitizerPoisonMemoryRegion(new_slots, slot_size * kNewCapacity);
1546
+ void* target_slot = SlotAddress(new_slots, SooSlotIndex(), slot_size);
1547
+ SanitizerUnpoisonMemoryRegion(target_slot, slot_size);
1548
+ if constexpr (TransferUsesMemcpy) {
1549
+ // Target slot is placed at index 1, but capacity is at
1550
+ // minimum 3. So we are allowed to copy at least twice as much
1551
+ // memory.
1552
+ static_assert(SooSlotIndex() == 1);
1553
+ static_assert(SooSlotMemcpySize > 0);
1554
+ static_assert(SooSlotMemcpySize <= MaxSooSlotSize());
1555
+ ABSL_SWISSTABLE_ASSERT(SooSlotMemcpySize <= 2 * slot_size);
1556
+ ABSL_SWISSTABLE_ASSERT(SooSlotMemcpySize >= slot_size);
1557
+ void* next_slot = SlotAddress(target_slot, 1, slot_size);
1558
+ SanitizerUnpoisonMemoryRegion(next_slot, SooSlotMemcpySize - slot_size);
1559
+ std::memcpy(target_slot, common.soo_data(), SooSlotMemcpySize);
1560
+ SanitizerPoisonMemoryRegion(next_slot, SooSlotMemcpySize - slot_size);
1561
+ } else {
1562
+ static_assert(SooSlotMemcpySize == 0);
1563
+ policy.transfer_n(&common, target_slot, common.soo_data(), 1);
1564
+ }
1565
+ // Seed was already generated above.
1566
+ common.set_control</*kGenerateSeed=*/false>(new_ctrl);
1567
+ common.set_slots(new_slots);
1568
+
1569
+ common.infoz().RecordInsert(new_hash, /*distance_from_desired=*/0);
1570
+ SanitizerUnpoisonMemoryRegion(SlotAddress(new_slots, offset, slot_size),
1571
+ slot_size);
1572
+ return offset;
1573
+ }
1574
+
1575
+ void GrowFullSooTableToNextCapacityForceSampling(
1576
+ CommonFields& common, const PolicyFunctions& __restrict policy) {
1577
+ AssertFullSoo(common, policy);
1578
+ ResizeFullSooTable(
1579
+ common, policy, NextCapacity(SooCapacity()),
1580
+ ResizeFullSooTableSamplingMode::kForceSampleNoResizeIfUnsampled);
1581
+ }
1582
+
1583
+ void Rehash(CommonFields& common, const PolicyFunctions& __restrict policy,
1584
+ size_t n) {
1585
+ const size_t cap = common.capacity();
1586
+
1587
+ auto clear_backing_array = [&]() {
1588
+ ClearBackingArray(common, policy, policy.get_char_alloc(common),
1589
+ /*reuse=*/false, policy.soo_enabled);
1590
+ };
1591
+
1592
+ const size_t slot_size = policy.slot_size;
1593
+
1594
+ if (n == 0) {
1595
+ if (cap <= policy.soo_capacity()) return;
1596
+ if (common.empty()) {
1597
+ clear_backing_array();
1598
+ return;
1599
+ }
1600
+ if (common.size() <= policy.soo_capacity()) {
1601
+ // When the table is already sampled, we keep it sampled.
1602
+ if (common.infoz().IsSampled()) {
1603
+ static constexpr size_t kInitialSampledCapacity =
1604
+ NextCapacity(SooCapacity());
1605
+ if (cap > kInitialSampledCapacity) {
1606
+ ResizeAllocatedTableWithSeedChange(common, policy,
1607
+ kInitialSampledCapacity);
1608
+ }
1609
+ // This asserts that we didn't lose sampling coverage in `resize`.
1610
+ ABSL_SWISSTABLE_ASSERT(common.infoz().IsSampled());
1611
+ return;
626
1612
  }
627
- if (ABSL_PREDICT_TRUE(common.growth_left() > 0)) {
628
- target = find_first_non_full(common, hash);
1613
+ ABSL_SWISSTABLE_ASSERT(slot_size <= sizeof(HeapOrSoo));
1614
+ ABSL_SWISSTABLE_ASSERT(policy.slot_align <= alignof(HeapOrSoo));
1615
+ HeapOrSoo tmp_slot(uninitialized_tag_t{});
1616
+ size_t begin_offset = FindFirstFullSlot(0, cap, common.control());
1617
+ policy.transfer_n(
1618
+ &common, &tmp_slot,
1619
+ SlotAddress(common.slot_array(), begin_offset, slot_size), 1);
1620
+ clear_backing_array();
1621
+ policy.transfer_n(&common, common.soo_data(), &tmp_slot, 1);
1622
+ common.set_full_soo();
1623
+ return;
1624
+ }
1625
+ }
1626
+
1627
+ ValidateMaxSize(n, policy.slot_size);
1628
+ // bitor is a faster way of doing `max` here. We will round up to the next
1629
+ // power-of-2-minus-1, so bitor is good enough.
1630
+ const size_t new_capacity =
1631
+ NormalizeCapacity(n | SizeToCapacity(common.size()));
1632
+ // n == 0 unconditionally rehashes as per the standard.
1633
+ if (n == 0 || new_capacity > cap) {
1634
+ if (cap == policy.soo_capacity()) {
1635
+ if (common.empty()) {
1636
+ ResizeEmptyNonAllocatedTableImpl(common, policy, new_capacity,
1637
+ /*force_infoz=*/false);
629
1638
  } else {
630
- target = FindInsertPositionWithGrowthOrRehash(common, hash, policy);
1639
+ ResizeFullSooTable(common, policy, new_capacity,
1640
+ ResizeFullSooTableSamplingMode::kNoSampling);
631
1641
  }
1642
+ } else {
1643
+ ResizeAllocatedTableWithSeedChange(common, policy, new_capacity);
1644
+ }
1645
+ // This is after resize, to ensure that we have completed the allocation
1646
+ // and have potentially sampled the hashtable.
1647
+ common.infoz().RecordReservation(n);
1648
+ }
1649
+ }
1650
+
1651
+ void Copy(CommonFields& common, const PolicyFunctions& __restrict policy,
1652
+ const CommonFields& other,
1653
+ absl::FunctionRef<void(void*, const void*)> copy_fn) {
1654
+ const size_t size = other.size();
1655
+ ABSL_SWISSTABLE_ASSERT(size > 0);
1656
+ const size_t soo_capacity = policy.soo_capacity();
1657
+ const size_t slot_size = policy.slot_size;
1658
+ if (size <= soo_capacity) {
1659
+ ABSL_SWISSTABLE_ASSERT(size == 1);
1660
+ common.set_full_soo();
1661
+ const void* other_slot =
1662
+ other.capacity() <= soo_capacity
1663
+ ? other.soo_data()
1664
+ : SlotAddress(
1665
+ other.slot_array(),
1666
+ FindFirstFullSlot(0, other.capacity(), other.control()),
1667
+ slot_size);
1668
+ copy_fn(common.soo_data(), other_slot);
1669
+
1670
+ if (policy.is_hashtablez_eligible && ShouldSampleNextTable()) {
1671
+ GrowFullSooTableToNextCapacityForceSampling(common, policy);
632
1672
  }
1673
+ return;
1674
+ }
1675
+
1676
+ ReserveTableToFitNewSize(common, policy, size);
1677
+ auto infoz = common.infoz();
1678
+ ABSL_SWISSTABLE_ASSERT(other.capacity() > soo_capacity);
1679
+ const size_t cap = common.capacity();
1680
+ ABSL_SWISSTABLE_ASSERT(cap > soo_capacity);
1681
+ // Note about single group tables:
1682
+ // 1. It is correct to have any order of elements.
1683
+ // 2. Order has to be non deterministic.
1684
+ // 3. We are assigning elements with arbitrary `shift` starting from
1685
+ // `capacity + shift` position.
1686
+ // 4. `shift` must be coprime with `capacity + 1` in order to be able to use
1687
+ // modular arithmetic to traverse all positions, instead of cycling
1688
+ // through a subset of positions. Odd numbers are coprime with any
1689
+ // `capacity + 1` (2^N).
1690
+ size_t offset = cap;
1691
+ const size_t shift = is_single_group(cap) ? (common.seed().seed() | 1) : 0;
1692
+ const void* hash_fn = policy.hash_fn(common);
1693
+ auto hasher = policy.hash_slot;
1694
+ IterateOverFullSlotsImpl(
1695
+ other, slot_size, [&](const ctrl_t* that_ctrl, void* that_slot) {
1696
+ if (shift == 0) {
1697
+ // Big tables case. Position must be searched via probing.
1698
+ // The table is guaranteed to be empty, so we can do faster than
1699
+ // a full `insert`.
1700
+ const size_t hash = (*hasher)(hash_fn, that_slot);
1701
+ FindInfo target = find_first_non_full(common, hash);
1702
+ infoz.RecordInsert(hash, target.probe_length);
1703
+ offset = target.offset;
1704
+ } else {
1705
+ // Small tables case. Next position is computed via shift.
1706
+ offset = (offset + shift) & cap;
1707
+ }
1708
+ const h2_t h2 = static_cast<h2_t>(*that_ctrl);
1709
+ // We rely on the hash not changing for small tables.
1710
+ ABSL_SWISSTABLE_ASSERT(
1711
+ H2((*hasher)(hash_fn, that_slot)) == h2 &&
1712
+ "hash function value changed unexpectedly during the copy");
1713
+ SetCtrl(common, offset, h2, slot_size);
1714
+ copy_fn(SlotAddress(common.slot_array(), offset, slot_size), that_slot);
1715
+ common.maybe_increment_generation_on_insert();
1716
+ });
1717
+ if (shift != 0) {
1718
+ // On small table copy we do not record individual inserts.
1719
+ // RecordInsert requires hash, but it is unknown for small tables.
1720
+ infoz.RecordStorageChanged(size, cap);
1721
+ }
1722
+ common.increment_size(size);
1723
+ common.growth_info().OverwriteManyEmptyAsFull(size);
1724
+ }
1725
+
1726
+ void ReserveTableToFitNewSize(CommonFields& common,
1727
+ const PolicyFunctions& __restrict policy,
1728
+ size_t new_size) {
1729
+ common.reset_reserved_growth(new_size);
1730
+ common.set_reservation_size(new_size);
1731
+ ABSL_SWISSTABLE_ASSERT(new_size > policy.soo_capacity());
1732
+ const size_t cap = common.capacity();
1733
+ if (ABSL_PREDICT_TRUE(common.empty() && cap <= policy.soo_capacity())) {
1734
+ return ReserveEmptyNonAllocatedTableToFitNewSize(common, policy, new_size);
1735
+ }
1736
+
1737
+ ABSL_SWISSTABLE_ASSERT(!common.empty() || cap > policy.soo_capacity());
1738
+ ABSL_SWISSTABLE_ASSERT(cap > 0);
1739
+ const size_t max_size_before_growth =
1740
+ cap <= policy.soo_capacity() ? policy.soo_capacity()
1741
+ : common.size() + common.growth_left();
1742
+ if (new_size <= max_size_before_growth) {
1743
+ return;
1744
+ }
1745
+ ReserveAllocatedTable(common, policy, new_size);
1746
+ }
1747
+
1748
+ size_t PrepareInsertNonSoo(CommonFields& common,
1749
+ const PolicyFunctions& __restrict policy,
1750
+ size_t hash, FindInfo target) {
1751
+ const bool rehash_for_bug_detection =
1752
+ common.should_rehash_for_bug_detection_on_insert() &&
1753
+ // Required to allow use of ResizeAllocatedTable.
1754
+ common.capacity() > 0;
1755
+ if (rehash_for_bug_detection) {
1756
+ // Move to a different heap allocation in order to detect bugs.
1757
+ const size_t cap = common.capacity();
1758
+ ResizeAllocatedTableWithSeedChange(
1759
+ common, policy, common.growth_left() > 0 ? cap : NextCapacity(cap));
1760
+ target = find_first_non_full(common, hash);
1761
+ }
1762
+
1763
+ const GrowthInfo growth_info = common.growth_info();
1764
+ // When there are no deleted slots in the table
1765
+ // and growth_left is positive, we can insert at the first
1766
+ // empty slot in the probe sequence (target).
1767
+ if (ABSL_PREDICT_FALSE(!growth_info.HasNoDeletedAndGrowthLeft())) {
1768
+ return PrepareInsertNonSooSlow(common, policy, hash);
633
1769
  }
634
1770
  PrepareInsertCommon(common);
635
- common.growth_info().OverwriteControlAsFull(common.control()[target.offset]);
1771
+ common.growth_info().OverwriteEmptyAsFull();
636
1772
  SetCtrl(common, target.offset, H2(hash), policy.slot_size);
637
1773
  common.infoz().RecordInsert(hash, target.probe_length);
638
1774
  return target.offset;
639
1775
  }
640
1776
 
1777
+ namespace {
1778
+ // Returns true if the following is true
1779
+ // 1. OptimalMemcpySizeForSooSlotTransfer(left) >
1780
+ // OptimalMemcpySizeForSooSlotTransfer(left - 1)
1781
+ // 2. OptimalMemcpySizeForSooSlotTransfer(left) are equal for all i in [left,
1782
+ // right].
1783
+ // This function is used to verify that we have all the possible template
1784
+ // instantiations for GrowFullSooTableToNextCapacity.
1785
+ // With this verification the problem may be detected at compile time instead of
1786
+ // link time.
1787
+ constexpr bool VerifyOptimalMemcpySizeForSooSlotTransferRange(size_t left,
1788
+ size_t right) {
1789
+ size_t optimal_size_for_range = OptimalMemcpySizeForSooSlotTransfer(left);
1790
+ if (optimal_size_for_range <= OptimalMemcpySizeForSooSlotTransfer(left - 1)) {
1791
+ return false;
1792
+ }
1793
+ for (size_t i = left + 1; i <= right; ++i) {
1794
+ if (OptimalMemcpySizeForSooSlotTransfer(i) != optimal_size_for_range) {
1795
+ return false;
1796
+ }
1797
+ }
1798
+ return true;
1799
+ }
1800
+ } // namespace
1801
+
1802
+ // Extern template instantiation for inline function.
1803
+ template size_t TryFindNewIndexWithoutProbing(size_t h1, size_t old_index,
1804
+ size_t old_capacity,
1805
+ ctrl_t* new_ctrl,
1806
+ size_t new_capacity);
1807
+
1808
+ // We need to instantiate ALL possible template combinations because we define
1809
+ // the function in the cc file.
1810
+ template size_t GrowSooTableToNextCapacityAndPrepareInsert<0, false>(
1811
+ CommonFields&, const PolicyFunctions&, size_t, ctrl_t);
1812
+ template size_t GrowSooTableToNextCapacityAndPrepareInsert<
1813
+ OptimalMemcpySizeForSooSlotTransfer(1), true>(CommonFields&,
1814
+ const PolicyFunctions&,
1815
+ size_t, ctrl_t);
1816
+
1817
+ static_assert(VerifyOptimalMemcpySizeForSooSlotTransferRange(2, 3));
1818
+ template size_t GrowSooTableToNextCapacityAndPrepareInsert<
1819
+ OptimalMemcpySizeForSooSlotTransfer(3), true>(CommonFields&,
1820
+ const PolicyFunctions&,
1821
+ size_t, ctrl_t);
1822
+
1823
+ static_assert(VerifyOptimalMemcpySizeForSooSlotTransferRange(4, 8));
1824
+ template size_t GrowSooTableToNextCapacityAndPrepareInsert<
1825
+ OptimalMemcpySizeForSooSlotTransfer(8), true>(CommonFields&,
1826
+ const PolicyFunctions&,
1827
+ size_t, ctrl_t);
1828
+
1829
+ #if UINTPTR_MAX == UINT32_MAX
1830
+ static_assert(MaxSooSlotSize() == 8);
1831
+ #else
1832
+ static_assert(VerifyOptimalMemcpySizeForSooSlotTransferRange(9, 16));
1833
+ template size_t GrowSooTableToNextCapacityAndPrepareInsert<
1834
+ OptimalMemcpySizeForSooSlotTransfer(16), true>(CommonFields&,
1835
+ const PolicyFunctions&,
1836
+ size_t, ctrl_t);
1837
+ static_assert(MaxSooSlotSize() == 16);
1838
+ #endif
1839
+
641
1840
  } // namespace container_internal
642
1841
  ABSL_NAMESPACE_END
643
1842
  } // namespace absl