grpc 1.52.2 → 1.53.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +50 -5
- data/include/grpc/event_engine/event_engine.h +24 -2
- data/include/grpc/event_engine/slice_buffer.h +13 -1
- data/include/grpc/impl/grpc_types.h +3 -0
- data/include/grpc/support/time.h +6 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +3 -3
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.h +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +29 -33
- data/src/core/ext/filters/client_channel/client_channel.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_service_config.h +3 -3
- data/src/core/ext/filters/client_channel/config_selector.h +3 -3
- data/src/core/ext/filters/client_channel/connector.h +8 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +1 -78
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +275 -107
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +10 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +5 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/retry_filter.cc +10 -13
- data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
- data/src/core/ext/filters/client_channel/retry_service_config.h +3 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -3
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +4 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -1
- data/src/core/ext/filters/client_channel/subchannel.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +40 -48
- data/src/core/ext/filters/deadline/deadline_filter.h +6 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +3 -3
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -21
- data/src/core/ext/filters/http/client/http_client_filter.h +3 -3
- data/src/core/ext/filters/http/client_authority_filter.h +3 -3
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +109 -117
- data/src/core/ext/filters/http/message_compress/compression_filter.h +17 -10
- data/src/core/ext/filters/http/server/http_server_filter.cc +25 -24
- data/src/core/ext/filters/http/server/http_server_filter.h +3 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +4 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +27 -37
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +5 -5
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.h +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +195 -111
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +3 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +17 -406
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -3
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/http_trace.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +3 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +28 -23
- data/src/core/ext/transport/chttp2/transport/parsing.cc +111 -31
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -8
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +38 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +185 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +44 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +16 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +48 -74
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +30 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +137 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +83 -51
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +61 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +37 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +50 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +254 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +21 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +10 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +42 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +31 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +34 -13
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +195 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -224
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +94 -93
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +189 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +137 -133
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -133
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +81 -70
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +771 -741
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +14 -13
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +363 -356
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +16 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +14 -14
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +1 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/ext/xds/upb_utils.h +3 -3
- data/src/core/ext/xds/xds_api.h +3 -3
- data/src/core/ext/xds/xds_bootstrap.h +3 -3
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +1 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +3 -3
- data/src/core/ext/xds/xds_certificate_provider.h +3 -3
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.h +3 -3
- data/src/core/ext/xds/xds_client.cc +8 -3
- data/src/core/ext/xds/xds_client.h +3 -3
- data/src/core/ext/xds/xds_client_grpc.cc +0 -1
- data/src/core/ext/xds/xds_client_grpc.h +3 -3
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +11 -7
- data/src/core/ext/xds/xds_cluster.h +6 -6
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +3 -3
- data/src/core/ext/xds/xds_common_types.cc +1 -0
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +1 -1
- data/src/core/ext/xds/xds_endpoint.h +3 -3
- data/src/core/ext/xds/xds_health_status.h +30 -3
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +1 -1
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +95 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +3 -3
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_listener.h +3 -3
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +3 -3
- data/src/core/ext/xds/xds_route_config.cc +6 -0
- data/src/core/ext/xds/xds_route_config.h +3 -3
- data/src/core/ext/xds/xds_routing.h +3 -3
- data/src/core/ext/xds/xds_transport.h +3 -3
- data/src/core/ext/xds/xds_transport_grpc.h +3 -3
- data/src/core/lib/address_utils/parse_address.h +3 -3
- data/src/core/lib/address_utils/sockaddr_utils.cc +1 -0
- data/src/core/lib/address_utils/sockaddr_utils.h +3 -3
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/call_finalization.h +3 -3
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.cc +1 -0
- data/src/core/lib/channel/channel_args.h +11 -5
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -3
- data/src/core/lib/channel/channel_fwd.h +3 -3
- data/src/core/lib/channel/channel_stack.cc +1 -2
- data/src/core/lib/channel/channel_stack.h +4 -4
- data/src/core/lib/channel/channel_stack_builder.h +3 -3
- data/src/core/lib/channel/channel_stack_builder_impl.cc +14 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -3
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.h +3 -3
- data/src/core/lib/channel/channelz_registry.h +3 -3
- data/src/core/lib/channel/connected_channel.cc +883 -354
- data/src/core/lib/channel/connected_channel.h +3 -3
- data/src/core/lib/channel/context.h +7 -3
- data/src/core/lib/channel/promise_based_filter.cc +509 -259
- data/src/core/lib/channel/promise_based_filter.h +118 -43
- data/src/core/lib/channel/status_util.h +3 -3
- data/src/core/lib/compression/compression_internal.h +3 -3
- data/src/core/lib/compression/message_compress.h +3 -3
- data/src/core/lib/config/core_configuration.h +3 -3
- data/src/core/lib/debug/event_log.h +3 -3
- data/src/core/lib/debug/histogram_view.h +3 -3
- data/src/core/lib/debug/stats.h +3 -3
- data/src/core/lib/debug/stats_data.cc +66 -65
- data/src/core/lib/debug/stats_data.h +42 -33
- data/src/core/lib/debug/trace.h +4 -26
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -3
- data/src/core/lib/event_engine/common_closures.h +3 -3
- data/src/core/lib/event_engine/default_event_engine.cc +9 -4
- data/src/core/lib/event_engine/default_event_engine.h +30 -6
- data/src/core/lib/event_engine/default_event_engine_factory.h +3 -3
- data/src/core/lib/event_engine/event_engine.cc +25 -0
- data/src/core/lib/event_engine/executor/executor.h +3 -3
- data/src/core/lib/event_engine/forkable.cc +11 -6
- data/src/core/lib/event_engine/forkable.h +3 -3
- data/src/core/lib/event_engine/handle_containers.h +10 -3
- data/src/core/lib/event_engine/poller.h +3 -3
- data/src/core/lib/event_engine/posix.h +158 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +44 -16
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +14 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +6 -7
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -3
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -3
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +52 -55
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +46 -13
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +82 -12
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +23 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +60 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +65 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -6
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +19 -0
- data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
- data/src/core/lib/event_engine/shim.cc +56 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- data/src/core/lib/event_engine/slice.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -2
- data/src/core/lib/event_engine/tcp_socket_utils.h +8 -3
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool.cc +41 -65
- data/src/core/lib/event_engine/thread_pool.h +21 -17
- data/src/core/lib/event_engine/time_util.h +3 -3
- data/src/core/lib/event_engine/trace.cc +6 -0
- data/src/core/lib/event_engine/trace.h +16 -3
- data/src/core/lib/event_engine/utils.cc +2 -2
- data/src/core/lib/event_engine/utils.h +12 -4
- data/src/core/lib/event_engine/windows/iocp.cc +24 -40
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +56 -33
- data/src/core/lib/event_engine/windows/win_socket.h +34 -25
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +243 -20
- data/src/core/lib/event_engine/windows/windows_engine.h +62 -23
- data/src/core/lib/experiments/config.cc +16 -1
- data/src/core/lib/experiments/config.h +13 -3
- data/src/core/lib/experiments/experiments.cc +14 -8
- data/src/core/lib/experiments/experiments.h +80 -21
- data/src/core/lib/gpr/alloc.h +3 -3
- data/src/core/lib/gpr/spinlock.h +3 -3
- data/src/core/lib/gpr/string.h +3 -3
- data/src/core/lib/gpr/sync_abseil.cc +15 -7
- data/src/core/lib/gpr/time_precise.h +3 -3
- data/src/core/lib/gpr/tmpfile.h +3 -3
- data/src/core/lib/gpr/useful.h +3 -3
- data/src/core/lib/gprpp/atomic_utils.h +3 -3
- data/src/core/lib/gprpp/bitset.h +3 -3
- data/src/core/lib/gprpp/chunked_vector.h +3 -3
- data/src/core/lib/gprpp/construct_destruct.h +3 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
- data/src/core/lib/gprpp/crash.h +3 -3
- data/src/core/lib/gprpp/debug_location.h +3 -6
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/env.h +3 -3
- data/src/core/lib/gprpp/examine_stack.h +3 -3
- data/src/core/lib/gprpp/fork.cc +21 -4
- data/src/core/lib/gprpp/fork.h +7 -5
- data/src/core/lib/gprpp/global_config.h +3 -3
- data/src/core/lib/gprpp/global_config_custom.h +3 -3
- data/src/core/lib/gprpp/global_config_env.cc +1 -0
- data/src/core/lib/gprpp/global_config_env.h +3 -3
- data/src/core/lib/gprpp/global_config_generic.h +3 -3
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/host_port.h +3 -3
- data/src/core/lib/gprpp/load_file.h +3 -3
- data/src/core/lib/gprpp/manual_constructor.h +3 -3
- data/src/core/lib/gprpp/match.h +3 -3
- data/src/core/lib/gprpp/memory.h +3 -3
- data/src/core/lib/gprpp/mpscq.h +3 -3
- data/src/core/lib/gprpp/no_destruct.h +3 -3
- data/src/core/lib/gprpp/notification.h +3 -3
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/overload.h +3 -3
- data/src/core/lib/gprpp/packed_table.h +3 -3
- data/src/core/lib/gprpp/per_cpu.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +3 -3
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- data/src/core/lib/gprpp/sorted_pack.h +3 -3
- data/src/core/lib/gprpp/stat.h +3 -3
- data/src/core/lib/gprpp/status_helper.h +3 -3
- data/src/core/lib/gprpp/strerror.cc +2 -0
- data/src/core/lib/gprpp/strerror.h +3 -3
- data/src/core/lib/gprpp/sync.h +3 -3
- data/src/core/lib/gprpp/table.h +3 -3
- data/src/core/lib/gprpp/tchar.h +3 -3
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +3 -3
- data/src/core/lib/gprpp/time_averaged_stats.h +3 -3
- data/src/core/lib/gprpp/time_util.h +3 -3
- data/src/core/lib/gprpp/unique_type_name.h +3 -3
- data/src/core/lib/gprpp/validation_errors.h +3 -3
- data/src/core/lib/gprpp/work_serializer.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper_registry.h +3 -3
- data/src/core/lib/http/format_request.cc +1 -0
- data/src/core/lib/http/format_request.h +3 -3
- data/src/core/lib/http/httpcli.cc +1 -0
- data/src/core/lib/http/httpcli.h +3 -3
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
- data/src/core/lib/http/parser.h +3 -3
- data/src/core/lib/iomgr/block_annotate.h +3 -3
- data/src/core/lib/iomgr/buffer_list.h +3 -3
- data/src/core/lib/iomgr/call_combiner.cc +4 -4
- data/src/core/lib/iomgr/call_combiner.h +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +3 -3
- data/src/core/lib/iomgr/closure.cc +27 -0
- data/src/core/lib/iomgr/closure.h +5 -3
- data/src/core/lib/iomgr/combiner.h +3 -3
- data/src/core/lib/iomgr/dynamic_annotations.h +3 -3
- data/src/core/lib/iomgr/endpoint.h +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.h +3 -3
- data/src/core/lib/iomgr/endpoint_pair.h +3 -3
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +10 -2
- data/src/core/lib/iomgr/error.h +3 -3
- data/src/core/lib/iomgr/error_cfstream.h +3 -3
- data/src/core/lib/iomgr/ev_apple.h +3 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.h +3 -3
- data/src/core/lib/iomgr/ev_poll_posix.h +3 -3
- data/src/core/lib/iomgr/ev_posix.h +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
- data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.h +3 -3
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/fork_posix.cc +5 -4
- data/src/core/lib/iomgr/gethostname.h +3 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +3 -3
- data/src/core/lib/iomgr/internal_errqueue.h +3 -3
- data/src/core/lib/iomgr/iocp_windows.h +3 -3
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_fwd.h +3 -3
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/load_file.h +3 -3
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/nameser.h +3 -3
- data/src/core/lib/iomgr/polling_entity.h +3 -3
- data/src/core/lib/iomgr/pollset.h +3 -3
- data/src/core/lib/iomgr/pollset_set.h +3 -3
- data/src/core/lib/iomgr/pollset_set_windows.h +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/pollset_windows.h +3 -3
- data/src/core/lib/iomgr/port.h +3 -3
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -3
- data/src/core/lib/iomgr/resolve_address_impl.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.h +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.h +3 -3
- data/src/core/lib/iomgr/resolved_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr.h +3 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +3 -3
- data/src/core/lib/iomgr/sockaddr_windows.h +3 -3
- data/src/core/lib/iomgr/socket_factory_posix.h +3 -3
- data/src/core/lib/iomgr/socket_mutator.h +3 -3
- data/src/core/lib/iomgr/socket_utils.h +3 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -3
- data/src/core/lib/iomgr/socket_windows.h +3 -3
- data/src/core/lib/iomgr/systemd_utils.cc +19 -19
- data/src/core/lib/iomgr/systemd_utils.h +24 -24
- data/src/core/lib/iomgr/tcp_client.h +3 -3
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -0
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -1
- data/src/core/lib/iomgr/tcp_posix.cc +49 -65
- data/src/core/lib/iomgr/tcp_posix.h +3 -3
- data/src/core/lib/iomgr/tcp_server.h +3 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +219 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_windows.h +3 -3
- data/src/core/lib/iomgr/timer.h +3 -3
- data/src/core/lib/iomgr/timer_generic.h +3 -3
- data/src/core/lib/iomgr/timer_heap.h +3 -3
- data/src/core/lib/iomgr/timer_manager.h +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -3
- data/src/core/lib/json/json.h +3 -3
- data/src/core/lib/json/json_args.h +3 -3
- data/src/core/lib/json/json_channel_args.h +3 -3
- data/src/core/lib/json/json_object_loader.h +3 -3
- data/src/core/lib/json/json_reader.cc +1 -0
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/load_balancing/lb_policy.cc +9 -0
- data/src/core/lib/load_balancing/lb_policy.h +9 -5
- data/src/core/lib/load_balancing/lb_policy_factory.h +3 -3
- data/src/core/lib/load_balancing/lb_policy_registry.cc +1 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +3 -3
- data/src/core/lib/load_balancing/subchannel_interface.h +8 -6
- data/src/core/lib/matchers/matchers.cc +1 -0
- data/src/core/lib/matchers/matchers.h +3 -3
- data/src/core/lib/promise/activity.cc +8 -6
- data/src/core/lib/promise/activity.h +52 -66
- data/src/core/lib/promise/arena_promise.h +3 -3
- data/src/core/lib/promise/context.h +3 -3
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +10 -16
- data/src/core/lib/promise/detail/promise_factory.h +3 -3
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +3 -3
- data/src/core/lib/promise/detail/switch.h +3 -3
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -3
- data/src/core/lib/promise/if.h +195 -0
- data/src/core/lib/promise/interceptor_list.h +308 -0
- data/src/core/lib/promise/intra_activity_waiter.h +9 -3
- data/src/core/lib/promise/latch.h +99 -5
- data/src/core/lib/promise/loop.h +4 -4
- data/src/core/lib/promise/map.h +4 -6
- data/src/core/lib/promise/pipe.h +296 -193
- data/src/core/lib/promise/poll.h +113 -14
- data/src/core/lib/promise/promise.h +4 -5
- data/src/core/lib/promise/race.h +6 -9
- data/src/core/lib/promise/seq.h +3 -3
- data/src/core/lib/promise/sleep.h +3 -3
- data/src/core/lib/promise/{pipe.cc → trace.cc} +3 -2
- data/src/core/lib/promise/trace.h +24 -0
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +3 -3
- data/src/core/lib/resolver/resolver.h +3 -3
- data/src/core/lib/resolver/resolver_factory.h +4 -4
- data/src/core/lib/resolver/resolver_registry.cc +15 -0
- data/src/core/lib/resolver/resolver_registry.h +3 -3
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +3 -3
- data/src/core/lib/resource_quota/api.h +3 -3
- data/src/core/lib/resource_quota/arena.cc +36 -9
- data/src/core/lib/resource_quota/arena.h +84 -22
- data/src/core/lib/resource_quota/memory_quota.h +3 -3
- data/src/core/lib/resource_quota/periodic_update.h +3 -3
- data/src/core/lib/resource_quota/resource_quota.h +3 -3
- data/src/core/lib/resource_quota/thread_quota.h +3 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -3
- data/src/core/lib/security/authorization/evaluate_args.h +3 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +3 -3
- data/src/core/lib/security/authorization/matchers.h +3 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +1 -0
- data/src/core/lib/security/authorization/rbac_policy.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +3 -3
- data/src/core/lib/security/context/security_context.h +3 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +3 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -3
- data/src/core/lib/security/credentials/jwt/json_token.h +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +3 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl_utils.h +3 -3
- data/src/core/lib/security/security_connector/ssl_utils_config.h +3 -3
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
- data/src/core/lib/security/transport/auth_filters.h +27 -5
- data/src/core/lib/security/transport/secure_endpoint.h +3 -3
- data/src/core/lib/security/transport/security_handshaker.cc +9 -0
- data/src/core/lib/security/transport/security_handshaker.h +3 -3
- data/src/core/lib/security/transport/server_auth_filter.cc +120 -251
- data/src/core/lib/security/transport/tsi_error.h +3 -3
- data/src/core/lib/security/util/json_util.h +3 -3
- data/src/core/lib/service_config/service_config.h +3 -3
- data/src/core/lib/service_config/service_config_call_data.h +3 -3
- data/src/core/lib/service_config/service_config_impl.h +3 -3
- data/src/core/lib/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/b64.h +3 -3
- data/src/core/lib/slice/percent_encoding.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -3
- data/src/core/lib/slice/slice.h +14 -21
- data/src/core/lib/slice/slice_buffer.h +10 -4
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_refcount.cc +20 -0
- data/src/core/lib/slice/slice_refcount.h +26 -6
- data/src/core/lib/slice/slice_string_helpers.h +3 -3
- data/src/core/lib/surface/api_trace.h +3 -3
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/call.cc +866 -252
- data/src/core/lib/surface/call.h +31 -3
- data/src/core/lib/surface/call_log_batch.cc +1 -0
- data/src/core/lib/surface/call_test_only.h +3 -3
- data/src/core/lib/surface/call_trace.cc +21 -11
- data/src/core/lib/surface/call_trace.h +3 -3
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/channel_init.h +3 -3
- data/src/core/lib/surface/channel_stack_type.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -0
- data/src/core/lib/surface/completion_queue.h +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +3 -3
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/event_string.h +3 -3
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/init.h +3 -3
- data/src/core/lib/surface/init_internally.h +3 -3
- data/src/core/lib/surface/lame_client.cc +3 -1
- data/src/core/lib/surface/lame_client.h +3 -3
- data/src/core/lib/surface/server.cc +273 -27
- data/src/core/lib/surface/server.h +6 -3
- data/src/core/lib/surface/validate_metadata.h +3 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +11 -0
- data/src/core/lib/transport/handshaker.h +4 -4
- data/src/core/lib/transport/handshaker_factory.h +3 -3
- data/src/core/lib/transport/handshaker_registry.h +3 -3
- data/src/core/lib/transport/http2_errors.h +3 -3
- data/src/core/lib/transport/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.h +3 -3
- data/src/core/lib/transport/parsed_metadata.h +3 -3
- data/src/core/lib/transport/pid_controller.h +3 -3
- data/src/core/lib/transport/status_conversion.h +3 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/transport/timeout_encoding.h +3 -3
- data/src/core/lib/transport/transport.cc +3 -8
- data/src/core/lib/transport/transport.h +16 -8
- data/src/core/lib/transport/transport_fwd.h +3 -3
- data/src/core/lib/transport/transport_impl.h +3 -3
- data/src/core/lib/transport/transport_op_string.cc +1 -0
- data/src/core/lib/uri/uri_parser.cc +1 -1
- data/src/core/lib/uri/uri_parser.h +3 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -0
- data/src/core/tsi/alts/crypt/gsec.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +3 -3
- data/src/core/tsi/alts/frame_protector/frame_handler.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +3 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +3 -3
- data/src/core/tsi/fake_transport_security.h +3 -3
- data/src/core/tsi/local_transport_security.h +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -3
- data/src/core/tsi/ssl_transport_security.cc +113 -24
- data/src/core/tsi/ssl_transport_security.h +5 -3
- data/src/core/tsi/ssl_transport_security_utils.h +3 -3
- data/src/core/tsi/ssl_types.h +3 -3
- data/src/core/tsi/transport_security.h +3 -3
- data/src/core/tsi/transport_security_grpc.h +3 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +0 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
- data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
- data/third_party/abseil-cpp/absl/base/config.h +44 -3
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
- data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +5 -2
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +47 -26
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
- data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
- data/third_party/abseil-cpp/absl/status/status.cc +19 -12
- data/third_party/abseil-cpp/absl/status/status.h +2 -2
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
- data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +326 -70
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +253 -158
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/span.h +29 -7
- metadata +75 -10
- data/src/core/lib/event_engine/socket_notifier.h +0 -55
- data/src/core/lib/promise/for_each.h +0 -155
- data/src/core/lib/promise/map_pipe.h +0 -88
- data/src/core/lib/promise/try_concurrently.h +0 -342
@@ -18,6 +18,7 @@
|
|
18
18
|
#include <cassert>
|
19
19
|
#include <cmath>
|
20
20
|
#include <cstring>
|
21
|
+
#include <limits>
|
21
22
|
|
22
23
|
#include "absl/base/casts.h"
|
23
24
|
#include "absl/numeric/bits.h"
|
@@ -65,6 +66,14 @@ struct FloatTraits;
|
|
65
66
|
|
66
67
|
template <>
|
67
68
|
struct FloatTraits<double> {
|
69
|
+
using mantissa_t = uint64_t;
|
70
|
+
|
71
|
+
// The number of bits in the given float type.
|
72
|
+
static constexpr int kTargetBits = 64;
|
73
|
+
|
74
|
+
// The number of exponent bits in the given float type.
|
75
|
+
static constexpr int kTargetExponentBits = 11;
|
76
|
+
|
68
77
|
// The number of mantissa bits in the given float type. This includes the
|
69
78
|
// implied high bit.
|
70
79
|
static constexpr int kTargetMantissaBits = 53;
|
@@ -83,6 +92,31 @@ struct FloatTraits<double> {
|
|
83
92
|
// m * 2**kMinNormalExponent is exactly equal to DBL_MIN.
|
84
93
|
static constexpr int kMinNormalExponent = -1074;
|
85
94
|
|
95
|
+
// The IEEE exponent bias. It equals ((1 << (kTargetExponentBits - 1)) - 1).
|
96
|
+
static constexpr int kExponentBias = 1023;
|
97
|
+
|
98
|
+
// The Eisel-Lemire "Shifting to 54/25 Bits" adjustment. It equals (63 - 1 -
|
99
|
+
// kTargetMantissaBits).
|
100
|
+
static constexpr int kEiselLemireShift = 9;
|
101
|
+
|
102
|
+
// The Eisel-Lemire high64_mask. It equals ((1 << kEiselLemireShift) - 1).
|
103
|
+
static constexpr uint64_t kEiselLemireMask = uint64_t{0x1FF};
|
104
|
+
|
105
|
+
// The smallest negative integer N (smallest negative means furthest from
|
106
|
+
// zero) such that parsing 9999999999999999999eN, with 19 nines, is still
|
107
|
+
// positive. Parsing a smaller (more negative) N will produce zero.
|
108
|
+
//
|
109
|
+
// Adjusting the decimal point and exponent, without adjusting the value,
|
110
|
+
// 9999999999999999999eN equals 9.999999999999999999eM where M = N + 18.
|
111
|
+
//
|
112
|
+
// 9999999999999999999, with 19 nines but no decimal point, is the largest
|
113
|
+
// "repeated nines" integer that fits in a uint64_t.
|
114
|
+
static constexpr int kEiselLemireMinInclusiveExp10 = -324 - 18;
|
115
|
+
|
116
|
+
// The smallest positive integer N such that parsing 1eN produces infinity.
|
117
|
+
// Parsing a smaller N will produce something finite.
|
118
|
+
static constexpr int kEiselLemireMaxExclusiveExp10 = 309;
|
119
|
+
|
86
120
|
static double MakeNan(const char* tagp) {
|
87
121
|
// Support nan no matter which namespace it's in. Some platforms
|
88
122
|
// incorrectly don't put it in namespace std.
|
@@ -103,7 +137,7 @@ struct FloatTraits<double> {
|
|
103
137
|
// a normal value is made, or it must be less narrow than that, in which case
|
104
138
|
// `exponent` must be exactly kMinNormalExponent, and a subnormal value is
|
105
139
|
// made.
|
106
|
-
static double Make(
|
140
|
+
static double Make(mantissa_t mantissa, int exponent, bool sign) {
|
107
141
|
#ifndef ABSL_BIT_PACK_FLOATS
|
108
142
|
// Support ldexp no matter which namespace it's in. Some platforms
|
109
143
|
// incorrectly don't put it in namespace std.
|
@@ -116,8 +150,10 @@ struct FloatTraits<double> {
|
|
116
150
|
if (mantissa > kMantissaMask) {
|
117
151
|
// Normal value.
|
118
152
|
// Adjust by 1023 for the exponent representation bias, and an additional
|
119
|
-
// 52 due to the implied decimal point in the IEEE mantissa
|
120
|
-
|
153
|
+
// 52 due to the implied decimal point in the IEEE mantissa
|
154
|
+
// representation.
|
155
|
+
dbl += static_cast<uint64_t>(exponent + 1023 + kTargetMantissaBits - 1)
|
156
|
+
<< 52;
|
121
157
|
mantissa &= kMantissaMask;
|
122
158
|
} else {
|
123
159
|
// subnormal value
|
@@ -134,16 +170,27 @@ struct FloatTraits<double> {
|
|
134
170
|
// members and methods.
|
135
171
|
template <>
|
136
172
|
struct FloatTraits<float> {
|
173
|
+
using mantissa_t = uint32_t;
|
174
|
+
|
175
|
+
static constexpr int kTargetBits = 32;
|
176
|
+
static constexpr int kTargetExponentBits = 8;
|
137
177
|
static constexpr int kTargetMantissaBits = 24;
|
138
178
|
static constexpr int kMaxExponent = 104;
|
139
179
|
static constexpr int kMinNormalExponent = -149;
|
180
|
+
static constexpr int kExponentBias = 127;
|
181
|
+
static constexpr int kEiselLemireShift = 38;
|
182
|
+
static constexpr uint64_t kEiselLemireMask = uint64_t{0x3FFFFFFFFF};
|
183
|
+
static constexpr int kEiselLemireMinInclusiveExp10 = -46 - 18;
|
184
|
+
static constexpr int kEiselLemireMaxExclusiveExp10 = 39;
|
185
|
+
|
140
186
|
static float MakeNan(const char* tagp) {
|
141
187
|
// Support nanf no matter which namespace it's in. Some platforms
|
142
188
|
// incorrectly don't put it in namespace std.
|
143
189
|
using namespace std; // NOLINT
|
144
190
|
return nanf(tagp);
|
145
191
|
}
|
146
|
-
|
192
|
+
|
193
|
+
static float Make(mantissa_t mantissa, int exponent, bool sign) {
|
147
194
|
#ifndef ABSL_BIT_PACK_FLOATS
|
148
195
|
// Support ldexpf no matter which namespace it's in. Some platforms
|
149
196
|
// incorrectly don't put it in namespace std.
|
@@ -157,7 +204,8 @@ struct FloatTraits<float> {
|
|
157
204
|
// Normal value.
|
158
205
|
// Adjust by 127 for the exponent representation bias, and an additional
|
159
206
|
// 23 due to the implied decimal point in the IEEE mantissa represenation.
|
160
|
-
flt += uint32_t
|
207
|
+
flt += static_cast<uint32_t>(exponent + 127 + kTargetMantissaBits - 1)
|
208
|
+
<< 23;
|
161
209
|
mantissa &= kMantissaMask;
|
162
210
|
} else {
|
163
211
|
// subnormal value
|
@@ -181,39 +229,45 @@ struct FloatTraits<float> {
|
|
181
229
|
//
|
182
230
|
// 2**63 <= Power10Mantissa(n) < 2**64.
|
183
231
|
//
|
232
|
+
// See the "Table of powers of 10" comment below for a "1e60" example.
|
233
|
+
//
|
184
234
|
// Lookups into the power-of-10 table must first check the Power10Overflow() and
|
185
235
|
// Power10Underflow() functions, to avoid out-of-bounds table access.
|
186
236
|
//
|
187
|
-
// Indexes into these tables are biased by -
|
188
|
-
//
|
189
|
-
extern const uint64_t
|
190
|
-
extern const
|
237
|
+
// Indexes into these tables are biased by -kPower10TableMinInclusive. Valid
|
238
|
+
// indexes range from kPower10TableMinInclusive to kPower10TableMaxExclusive.
|
239
|
+
extern const uint64_t kPower10MantissaHighTable[]; // High 64 of 128 bits.
|
240
|
+
extern const uint64_t kPower10MantissaLowTable[]; // Low 64 of 128 bits.
|
191
241
|
|
192
|
-
// The smallest allowed value for use with the Power10Mantissa()
|
193
|
-
// Power10Exponent() functions below. (If a smaller exponent is needed in
|
242
|
+
// The smallest (inclusive) allowed value for use with the Power10Mantissa()
|
243
|
+
// and Power10Exponent() functions below. (If a smaller exponent is needed in
|
194
244
|
// calculations, the end result is guaranteed to underflow.)
|
195
|
-
constexpr int
|
245
|
+
constexpr int kPower10TableMinInclusive = -342;
|
196
246
|
|
197
|
-
// The largest allowed value for use with the Power10Mantissa() and
|
198
|
-
// Power10Exponent() functions below. (If a
|
199
|
-
// calculations, the end result is guaranteed to overflow.)
|
200
|
-
constexpr int
|
247
|
+
// The largest (exclusive) allowed value for use with the Power10Mantissa() and
|
248
|
+
// Power10Exponent() functions below. (If a larger-or-equal exponent is needed
|
249
|
+
// in calculations, the end result is guaranteed to overflow.)
|
250
|
+
constexpr int kPower10TableMaxExclusive = 309;
|
201
251
|
|
202
252
|
uint64_t Power10Mantissa(int n) {
|
203
|
-
return
|
253
|
+
return kPower10MantissaHighTable[n - kPower10TableMinInclusive];
|
204
254
|
}
|
205
255
|
|
206
256
|
int Power10Exponent(int n) {
|
207
|
-
|
257
|
+
// The 217706 etc magic numbers encode the results as a formula instead of a
|
258
|
+
// table. Their equivalence (over the kPower10TableMinInclusive ..
|
259
|
+
// kPower10TableMaxExclusive range) is confirmed by
|
260
|
+
// https://github.com/google/wuffs/blob/315b2e52625ebd7b02d8fac13e3cd85ea374fb80/script/print-mpb-powers-of-10.go
|
261
|
+
return (217706 * n >> 16) - 63;
|
208
262
|
}
|
209
263
|
|
210
264
|
// Returns true if n is large enough that 10**n always results in an IEEE
|
211
265
|
// overflow.
|
212
|
-
bool Power10Overflow(int n) { return n
|
266
|
+
bool Power10Overflow(int n) { return n >= kPower10TableMaxExclusive; }
|
213
267
|
|
214
268
|
// Returns true if n is small enough that 10**n times a ParsedFloat mantissa
|
215
269
|
// always results in an IEEE underflow.
|
216
|
-
bool Power10Underflow(int n) { return n <
|
270
|
+
bool Power10Underflow(int n) { return n < kPower10TableMinInclusive; }
|
217
271
|
|
218
272
|
// Returns true if Power10Mantissa(n) * 2**Power10Exponent(n) is exactly equal
|
219
273
|
// to 10**n numerically. Put another way, this returns true if there is no
|
@@ -242,9 +296,11 @@ struct CalculatedFloat {
|
|
242
296
|
|
243
297
|
// Returns the bit width of the given uint128. (Equivalently, returns 128
|
244
298
|
// minus the number of leading zero bits.)
|
245
|
-
|
299
|
+
int BitWidth(uint128 value) {
|
246
300
|
if (Uint128High64(value) == 0) {
|
247
|
-
|
301
|
+
// This static_cast is only needed when using a std::bit_width()
|
302
|
+
// implementation that does not have the fix for LWG 3656 applied.
|
303
|
+
return static_cast<int>(bit_width(Uint128Low64(value)));
|
248
304
|
}
|
249
305
|
return 128 - countl_zero(Uint128High64(value));
|
250
306
|
}
|
@@ -285,14 +341,19 @@ template <typename FloatType>
|
|
285
341
|
bool HandleEdgeCase(const strings_internal::ParsedFloat& input, bool negative,
|
286
342
|
FloatType* value) {
|
287
343
|
if (input.type == strings_internal::FloatType::kNan) {
|
288
|
-
// A bug in both clang and gcc would cause the compiler to optimize
|
289
|
-
// buffer we are building below. Declaring the buffer volatile
|
290
|
-
// issue, and has no measurable performance impact in
|
344
|
+
// A bug in both clang < 7 and gcc would cause the compiler to optimize
|
345
|
+
// away the buffer we are building below. Declaring the buffer volatile
|
346
|
+
// avoids the issue, and has no measurable performance impact in
|
347
|
+
// microbenchmarks.
|
291
348
|
//
|
292
349
|
// https://bugs.llvm.org/show_bug.cgi?id=37778
|
293
350
|
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86113
|
294
351
|
constexpr ptrdiff_t kNanBufferSize = 128;
|
352
|
+
#if defined(__GNUC__) || (defined(__clang__) && __clang_major__ < 7)
|
295
353
|
volatile char n_char_sequence[kNanBufferSize];
|
354
|
+
#else
|
355
|
+
char n_char_sequence[kNanBufferSize];
|
356
|
+
#endif
|
296
357
|
if (input.subrange_begin == nullptr) {
|
297
358
|
n_char_sequence[0] = '\0';
|
298
359
|
} else {
|
@@ -337,8 +398,10 @@ void EncodeResult(const CalculatedFloat& calculated, bool negative,
|
|
337
398
|
*value = negative ? -0.0 : 0.0;
|
338
399
|
return;
|
339
400
|
}
|
340
|
-
*value = FloatTraits<FloatType>::Make(
|
341
|
-
|
401
|
+
*value = FloatTraits<FloatType>::Make(
|
402
|
+
static_cast<typename FloatTraits<FloatType>::mantissa_t>(
|
403
|
+
calculated.mantissa),
|
404
|
+
calculated.exponent, negative);
|
342
405
|
}
|
343
406
|
|
344
407
|
// Returns the given uint128 shifted to the right by `shift` bits, and rounds
|
@@ -519,7 +582,9 @@ CalculatedFloat CalculateFromParsedHexadecimal(
|
|
519
582
|
const strings_internal::ParsedFloat& parsed_hex) {
|
520
583
|
uint64_t mantissa = parsed_hex.mantissa;
|
521
584
|
int exponent = parsed_hex.exponent;
|
522
|
-
|
585
|
+
// This static_cast is only needed when using a std::bit_width()
|
586
|
+
// implementation that does not have the fix for LWG 3656 applied.
|
587
|
+
int mantissa_width = static_cast<int>(bit_width(mantissa));
|
523
588
|
const int shift = NormalizedShiftSize<FloatType>(mantissa_width, exponent);
|
524
589
|
bool result_exact;
|
525
590
|
exponent += shift;
|
@@ -595,6 +660,185 @@ CalculatedFloat CalculateFromParsedDecimal(
|
|
595
660
|
binary_exponent);
|
596
661
|
}
|
597
662
|
|
663
|
+
// As discussed in https://nigeltao.github.io/blog/2020/eisel-lemire.html the
|
664
|
+
// primary goal of the Eisel-Lemire algorithm is speed, for 99+% of the cases,
|
665
|
+
// not 100% coverage. As long as Eisel-Lemire doesn’t claim false positives,
|
666
|
+
// the combined approach (falling back to an alternative implementation when
|
667
|
+
// this function returns false) is both fast and correct.
|
668
|
+
template <typename FloatType>
|
669
|
+
bool EiselLemire(const strings_internal::ParsedFloat& input, bool negative,
|
670
|
+
FloatType* value, std::errc* ec) {
|
671
|
+
uint64_t man = input.mantissa;
|
672
|
+
int exp10 = input.exponent;
|
673
|
+
if (exp10 < FloatTraits<FloatType>::kEiselLemireMinInclusiveExp10) {
|
674
|
+
*value = negative ? -0.0 : 0.0;
|
675
|
+
*ec = std::errc::result_out_of_range;
|
676
|
+
return true;
|
677
|
+
} else if (exp10 >= FloatTraits<FloatType>::kEiselLemireMaxExclusiveExp10) {
|
678
|
+
// Return max (a finite value) consistent with from_chars and DR 3081. For
|
679
|
+
// SimpleAtod and SimpleAtof, post-processing will return infinity.
|
680
|
+
*value = negative ? -std::numeric_limits<FloatType>::max()
|
681
|
+
: std::numeric_limits<FloatType>::max();
|
682
|
+
*ec = std::errc::result_out_of_range;
|
683
|
+
return true;
|
684
|
+
}
|
685
|
+
|
686
|
+
// Assert kPower10TableMinInclusive <= exp10 < kPower10TableMaxExclusive.
|
687
|
+
// Equivalently, !Power10Underflow(exp10) and !Power10Overflow(exp10).
|
688
|
+
static_assert(
|
689
|
+
FloatTraits<FloatType>::kEiselLemireMinInclusiveExp10 >=
|
690
|
+
kPower10TableMinInclusive,
|
691
|
+
"(exp10-kPower10TableMinInclusive) in kPower10MantissaHighTable bounds");
|
692
|
+
static_assert(
|
693
|
+
FloatTraits<FloatType>::kEiselLemireMaxExclusiveExp10 <=
|
694
|
+
kPower10TableMaxExclusive,
|
695
|
+
"(exp10-kPower10TableMinInclusive) in kPower10MantissaHighTable bounds");
|
696
|
+
|
697
|
+
// The terse (+) comments in this function body refer to sections of the
|
698
|
+
// https://nigeltao.github.io/blog/2020/eisel-lemire.html blog post.
|
699
|
+
//
|
700
|
+
// That blog post discusses double precision (11 exponent bits with a -1023
|
701
|
+
// bias, 52 mantissa bits), but the same approach applies to single precision
|
702
|
+
// (8 exponent bits with a -127 bias, 23 mantissa bits). Either way, the
|
703
|
+
// computation here happens with 64-bit values (e.g. man) or 128-bit values
|
704
|
+
// (e.g. x) before finally converting to 64- or 32-bit floating point.
|
705
|
+
//
|
706
|
+
// See also "Number Parsing at a Gigabyte per Second, Software: Practice and
|
707
|
+
// Experience 51 (8), 2021" (https://arxiv.org/abs/2101.11408) for detail.
|
708
|
+
|
709
|
+
// (+) Normalization.
|
710
|
+
int clz = countl_zero(man);
|
711
|
+
man <<= static_cast<unsigned int>(clz);
|
712
|
+
// The 217706 etc magic numbers are from the Power10Exponent function.
|
713
|
+
uint64_t ret_exp2 =
|
714
|
+
static_cast<uint64_t>((217706 * exp10 >> 16) + 64 +
|
715
|
+
FloatTraits<FloatType>::kExponentBias - clz);
|
716
|
+
|
717
|
+
// (+) Multiplication.
|
718
|
+
uint128 x = static_cast<uint128>(man) *
|
719
|
+
static_cast<uint128>(
|
720
|
+
kPower10MantissaHighTable[exp10 - kPower10TableMinInclusive]);
|
721
|
+
|
722
|
+
// (+) Wider Approximation.
|
723
|
+
static constexpr uint64_t high64_mask =
|
724
|
+
FloatTraits<FloatType>::kEiselLemireMask;
|
725
|
+
if (((Uint128High64(x) & high64_mask) == high64_mask) &&
|
726
|
+
(man > (std::numeric_limits<uint64_t>::max() - Uint128Low64(x)))) {
|
727
|
+
uint128 y =
|
728
|
+
static_cast<uint128>(man) *
|
729
|
+
static_cast<uint128>(
|
730
|
+
kPower10MantissaLowTable[exp10 - kPower10TableMinInclusive]);
|
731
|
+
x += Uint128High64(y);
|
732
|
+
// For example, parsing "4503599627370497.5" will take the if-true
|
733
|
+
// branch here (for double precision), since:
|
734
|
+
// - x = 0x8000000000000BFF_FFFFFFFFFFFFFFFF
|
735
|
+
// - y = 0x8000000000000BFF_7FFFFFFFFFFFF400
|
736
|
+
// - man = 0xA000000000000F00
|
737
|
+
// Likewise, when parsing "0.0625" for single precision:
|
738
|
+
// - x = 0x7FFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF
|
739
|
+
// - y = 0x813FFFFFFFFFFFFF_8A00000000000000
|
740
|
+
// - man = 0x9C40000000000000
|
741
|
+
if (((Uint128High64(x) & high64_mask) == high64_mask) &&
|
742
|
+
((Uint128Low64(x) + 1) == 0) &&
|
743
|
+
(man > (std::numeric_limits<uint64_t>::max() - Uint128Low64(y)))) {
|
744
|
+
return false;
|
745
|
+
}
|
746
|
+
}
|
747
|
+
|
748
|
+
// (+) Shifting to 54 Bits (or for single precision, to 25 bits).
|
749
|
+
uint64_t msb = Uint128High64(x) >> 63;
|
750
|
+
uint64_t ret_man =
|
751
|
+
Uint128High64(x) >> (msb + FloatTraits<FloatType>::kEiselLemireShift);
|
752
|
+
ret_exp2 -= 1 ^ msb;
|
753
|
+
|
754
|
+
// (+) Half-way Ambiguity.
|
755
|
+
//
|
756
|
+
// For example, parsing "1e+23" will take the if-true branch here (for double
|
757
|
+
// precision), since:
|
758
|
+
// - x = 0x54B40B1F852BDA00_0000000000000000
|
759
|
+
// - ret_man = 0x002A5A058FC295ED
|
760
|
+
// Likewise, when parsing "20040229.0" for single precision:
|
761
|
+
// - x = 0x4C72894000000000_0000000000000000
|
762
|
+
// - ret_man = 0x000000000131CA25
|
763
|
+
if ((Uint128Low64(x) == 0) && ((Uint128High64(x) & high64_mask) == 0) &&
|
764
|
+
((ret_man & 3) == 1)) {
|
765
|
+
return false;
|
766
|
+
}
|
767
|
+
|
768
|
+
// (+) From 54 to 53 Bits (or for single precision, from 25 to 24 bits).
|
769
|
+
ret_man += ret_man & 1; // Line From54a.
|
770
|
+
ret_man >>= 1; // Line From54b.
|
771
|
+
// Incrementing ret_man (at line From54a) may have overflowed 54 bits (53
|
772
|
+
// bits after the right shift by 1 at line From54b), so adjust for that.
|
773
|
+
//
|
774
|
+
// For example, parsing "9223372036854775807" will take the if-true branch
|
775
|
+
// here (for double precision), since:
|
776
|
+
// - ret_man = 0x0020000000000000 = (1 << 53)
|
777
|
+
// Likewise, when parsing "2147483647.0" for single precision:
|
778
|
+
// - ret_man = 0x0000000001000000 = (1 << 24)
|
779
|
+
if ((ret_man >> FloatTraits<FloatType>::kTargetMantissaBits) > 0) {
|
780
|
+
ret_exp2 += 1;
|
781
|
+
// Conceptually, we need a "ret_man >>= 1" in this if-block to balance
|
782
|
+
// incrementing ret_exp2 in the line immediately above. However, we only
|
783
|
+
// get here when line From54a overflowed (after adding a 1), so ret_man
|
784
|
+
// here is (1 << 53). Its low 53 bits are therefore all zeroes. The only
|
785
|
+
// remaining use of ret_man is to mask it with ((1 << 52) - 1), so only its
|
786
|
+
// low 52 bits matter. A "ret_man >>= 1" would have no effect in practice.
|
787
|
+
//
|
788
|
+
// We omit the "ret_man >>= 1", even if it is cheap (and this if-branch is
|
789
|
+
// rarely taken) and technically 'more correct', so that mutation tests
|
790
|
+
// that would otherwise modify or omit that "ret_man >>= 1" don't complain
|
791
|
+
// that such code mutations have no observable effect.
|
792
|
+
}
|
793
|
+
|
794
|
+
// ret_exp2 is a uint64_t. Zero or underflow means that we're in subnormal
|
795
|
+
// space. max_exp2 (0x7FF for double precision, 0xFF for single precision) or
|
796
|
+
// above means that we're in Inf/NaN space.
|
797
|
+
//
|
798
|
+
// The if block is equivalent to (but has fewer branches than):
|
799
|
+
// if ((ret_exp2 <= 0) || (ret_exp2 >= max_exp2)) { etc }
|
800
|
+
//
|
801
|
+
// For example, parsing "4.9406564584124654e-324" will take the if-true
|
802
|
+
// branch here, since ret_exp2 = -51.
|
803
|
+
static constexpr uint64_t max_exp2 =
|
804
|
+
(1 << FloatTraits<FloatType>::kTargetExponentBits) - 1;
|
805
|
+
if ((ret_exp2 - 1) >= (max_exp2 - 1)) {
|
806
|
+
return false;
|
807
|
+
}
|
808
|
+
|
809
|
+
#ifndef ABSL_BIT_PACK_FLOATS
|
810
|
+
if (FloatTraits<FloatType>::kTargetBits == 64) {
|
811
|
+
*value = FloatTraits<FloatType>::Make(
|
812
|
+
(ret_man & 0x000FFFFFFFFFFFFFu) | 0x0010000000000000u,
|
813
|
+
static_cast<int>(ret_exp2) - 1023 - 52, negative);
|
814
|
+
return true;
|
815
|
+
} else if (FloatTraits<FloatType>::kTargetBits == 32) {
|
816
|
+
*value = FloatTraits<FloatType>::Make(
|
817
|
+
(static_cast<uint32_t>(ret_man) & 0x007FFFFFu) | 0x00800000u,
|
818
|
+
static_cast<int>(ret_exp2) - 127 - 23, negative);
|
819
|
+
return true;
|
820
|
+
}
|
821
|
+
#else
|
822
|
+
if (FloatTraits<FloatType>::kTargetBits == 64) {
|
823
|
+
uint64_t ret_bits = (ret_exp2 << 52) | (ret_man & 0x000FFFFFFFFFFFFFu);
|
824
|
+
if (negative) {
|
825
|
+
ret_bits |= 0x8000000000000000u;
|
826
|
+
}
|
827
|
+
*value = absl::bit_cast<double>(ret_bits);
|
828
|
+
return true;
|
829
|
+
} else if (FloatTraits<FloatType>::kTargetBits == 32) {
|
830
|
+
uint32_t ret_bits = (static_cast<uint32_t>(ret_exp2) << 23) |
|
831
|
+
(static_cast<uint32_t>(ret_man) & 0x007FFFFFu);
|
832
|
+
if (negative) {
|
833
|
+
ret_bits |= 0x80000000u;
|
834
|
+
}
|
835
|
+
*value = absl::bit_cast<float>(ret_bits);
|
836
|
+
return true;
|
837
|
+
}
|
838
|
+
#endif // ABSL_BIT_PACK_FLOATS
|
839
|
+
return false;
|
840
|
+
}
|
841
|
+
|
598
842
|
template <typename FloatType>
|
599
843
|
from_chars_result FromCharsImpl(const char* first, const char* last,
|
600
844
|
FloatType& value, chars_format fmt_flags) {
|
@@ -668,6 +912,12 @@ from_chars_result FromCharsImpl(const char* first, const char* last,
|
|
668
912
|
if (HandleEdgeCase(decimal_parse, negative, &value)) {
|
669
913
|
return result;
|
670
914
|
}
|
915
|
+
// A nullptr subrange_begin means that the decimal_parse.mantissa is exact
|
916
|
+
// (not truncated), a precondition of the Eisel-Lemire algorithm.
|
917
|
+
if ((decimal_parse.subrange_begin == nullptr) &&
|
918
|
+
EiselLemire<FloatType>(decimal_parse, negative, &value, &result.ec)) {
|
919
|
+
return result;
|
920
|
+
}
|
671
921
|
CalculatedFloat calculated =
|
672
922
|
CalculateFromParsedDecimal<FloatType>(decimal_parse);
|
673
923
|
EncodeResult(calculated, negative, &result, &value);
|
@@ -688,15 +938,46 @@ from_chars_result from_chars(const char* first, const char* last, float& value,
|
|
688
938
|
|
689
939
|
namespace {
|
690
940
|
|
691
|
-
// Table of powers of 10, from
|
941
|
+
// Table of powers of 10, from kPower10TableMinInclusive to
|
942
|
+
// kPower10TableMaxExclusive.
|
943
|
+
//
|
944
|
+
// kPower10MantissaHighTable[i - kPower10TableMinInclusive] stores the 64-bit
|
945
|
+
// mantissa. The high bit is always on.
|
946
|
+
//
|
947
|
+
// kPower10MantissaLowTable extends that 64-bit mantissa to 128 bits.
|
948
|
+
//
|
949
|
+
// Power10Exponent(i) calculates the power-of-two exponent.
|
950
|
+
//
|
951
|
+
// For a number i, this gives the unique mantissaHigh and exponent such that
|
952
|
+
// (mantissaHigh * 2**exponent) <= 10**i < ((mantissaHigh + 1) * 2**exponent).
|
953
|
+
//
|
954
|
+
// For example, Python can confirm that the exact hexadecimal value of 1e60 is:
|
955
|
+
// >>> a = 1000000000000000000000000000000000000000000000000000000000000
|
956
|
+
// >>> hex(a)
|
957
|
+
// '0x9f4f2726179a224501d762422c946590d91000000000000000'
|
958
|
+
// Adding underscores at every 8th hex digit shows 50 hex digits:
|
959
|
+
// '0x9f4f2726_179a2245_01d76242_2c946590_d9100000_00000000_00'.
|
960
|
+
// In this case, the high bit of the first hex digit, 9, is coincidentally set,
|
961
|
+
// so we do not have to do further shifting to deduce the 128-bit mantissa:
|
962
|
+
// - kPower10MantissaHighTable[60 - kP10TMI] = 0x9f4f2726179a2245U
|
963
|
+
// - kPower10MantissaLowTable[ 60 - kP10TMI] = 0x01d762422c946590U
|
964
|
+
// where kP10TMI is kPower10TableMinInclusive. The low 18 of those 50 hex
|
965
|
+
// digits are truncated.
|
966
|
+
//
|
967
|
+
// 50 hex digits (with the high bit set) is 200 bits and mantissaHigh holds 64
|
968
|
+
// bits, so Power10Exponent(60) = 200 - 64 = 136. Again, Python can confirm:
|
969
|
+
// >>> b = 0x9f4f2726179a2245
|
970
|
+
// >>> ((b+0)<<136) <= a
|
971
|
+
// True
|
972
|
+
// >>> ((b+1)<<136) <= a
|
973
|
+
// False
|
692
974
|
//
|
693
|
-
//
|
694
|
-
//
|
695
|
-
//
|
696
|
-
//
|
697
|
-
// 2**exponent.
|
975
|
+
// The tables were generated by
|
976
|
+
// https://github.com/google/wuffs/blob/315b2e52625ebd7b02d8fac13e3cd85ea374fb80/script/print-mpb-powers-of-10.go
|
977
|
+
// after re-formatting its output into two arrays of N uint64_t values (instead
|
978
|
+
// of an N element array of uint64_t pairs).
|
698
979
|
|
699
|
-
const uint64_t
|
980
|
+
const uint64_t kPower10MantissaHighTable[] = {
|
700
981
|
0xeef453d6923bd65aU, 0x9558b4661b6565f8U, 0xbaaee17fa23ebf76U,
|
701
982
|
0xe95a99df8ace6f53U, 0x91d8a02bb6c10594U, 0xb64ec836a47146f9U,
|
702
983
|
0xe3e27a444d8d98b7U, 0x8e6d8c6ab0787f72U, 0xb208ef855c969f4fU,
|
@@ -916,67 +1197,224 @@ const uint64_t kPower10MantissaTable[] = {
|
|
916
1197
|
0xb6472e511c81471dU, 0xe3d8f9e563a198e5U, 0x8e679c2f5e44ff8fU,
|
917
1198
|
};
|
918
1199
|
|
919
|
-
const
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
1200
|
+
const uint64_t kPower10MantissaLowTable[] = {
|
1201
|
+
0x113faa2906a13b3fU, 0x4ac7ca59a424c507U, 0x5d79bcf00d2df649U,
|
1202
|
+
0xf4d82c2c107973dcU, 0x79071b9b8a4be869U, 0x9748e2826cdee284U,
|
1203
|
+
0xfd1b1b2308169b25U, 0xfe30f0f5e50e20f7U, 0xbdbd2d335e51a935U,
|
1204
|
+
0xad2c788035e61382U, 0x4c3bcb5021afcc31U, 0xdf4abe242a1bbf3dU,
|
1205
|
+
0xd71d6dad34a2af0dU, 0x8672648c40e5ad68U, 0x680efdaf511f18c2U,
|
1206
|
+
0x0212bd1b2566def2U, 0x014bb630f7604b57U, 0x419ea3bd35385e2dU,
|
1207
|
+
0x52064cac828675b9U, 0x7343efebd1940993U, 0x1014ebe6c5f90bf8U,
|
1208
|
+
0xd41a26e077774ef6U, 0x8920b098955522b4U, 0x55b46e5f5d5535b0U,
|
1209
|
+
0xeb2189f734aa831dU, 0xa5e9ec7501d523e4U, 0x47b233c92125366eU,
|
1210
|
+
0x999ec0bb696e840aU, 0xc00670ea43ca250dU, 0x380406926a5e5728U,
|
1211
|
+
0xc605083704f5ecf2U, 0xf7864a44c633682eU, 0x7ab3ee6afbe0211dU,
|
1212
|
+
0x5960ea05bad82964U, 0x6fb92487298e33bdU, 0xa5d3b6d479f8e056U,
|
1213
|
+
0x8f48a4899877186cU, 0x331acdabfe94de87U, 0x9ff0c08b7f1d0b14U,
|
1214
|
+
0x07ecf0ae5ee44dd9U, 0xc9e82cd9f69d6150U, 0xbe311c083a225cd2U,
|
1215
|
+
0x6dbd630a48aaf406U, 0x092cbbccdad5b108U, 0x25bbf56008c58ea5U,
|
1216
|
+
0xaf2af2b80af6f24eU, 0x1af5af660db4aee1U, 0x50d98d9fc890ed4dU,
|
1217
|
+
0xe50ff107bab528a0U, 0x1e53ed49a96272c8U, 0x25e8e89c13bb0f7aU,
|
1218
|
+
0x77b191618c54e9acU, 0xd59df5b9ef6a2417U, 0x4b0573286b44ad1dU,
|
1219
|
+
0x4ee367f9430aec32U, 0x229c41f793cda73fU, 0x6b43527578c1110fU,
|
1220
|
+
0x830a13896b78aaa9U, 0x23cc986bc656d553U, 0x2cbfbe86b7ec8aa8U,
|
1221
|
+
0x7bf7d71432f3d6a9U, 0xdaf5ccd93fb0cc53U, 0xd1b3400f8f9cff68U,
|
1222
|
+
0x23100809b9c21fa1U, 0xabd40a0c2832a78aU, 0x16c90c8f323f516cU,
|
1223
|
+
0xae3da7d97f6792e3U, 0x99cd11cfdf41779cU, 0x40405643d711d583U,
|
1224
|
+
0x482835ea666b2572U, 0xda3243650005eecfU, 0x90bed43e40076a82U,
|
1225
|
+
0x5a7744a6e804a291U, 0x711515d0a205cb36U, 0x0d5a5b44ca873e03U,
|
1226
|
+
0xe858790afe9486c2U, 0x626e974dbe39a872U, 0xfb0a3d212dc8128fU,
|
1227
|
+
0x7ce66634bc9d0b99U, 0x1c1fffc1ebc44e80U, 0xa327ffb266b56220U,
|
1228
|
+
0x4bf1ff9f0062baa8U, 0x6f773fc3603db4a9U, 0xcb550fb4384d21d3U,
|
1229
|
+
0x7e2a53a146606a48U, 0x2eda7444cbfc426dU, 0xfa911155fefb5308U,
|
1230
|
+
0x793555ab7eba27caU, 0x4bc1558b2f3458deU, 0x9eb1aaedfb016f16U,
|
1231
|
+
0x465e15a979c1cadcU, 0x0bfacd89ec191ec9U, 0xcef980ec671f667bU,
|
1232
|
+
0x82b7e12780e7401aU, 0xd1b2ecb8b0908810U, 0x861fa7e6dcb4aa15U,
|
1233
|
+
0x67a791e093e1d49aU, 0xe0c8bb2c5c6d24e0U, 0x58fae9f773886e18U,
|
1234
|
+
0xaf39a475506a899eU, 0x6d8406c952429603U, 0xc8e5087ba6d33b83U,
|
1235
|
+
0xfb1e4a9a90880a64U, 0x5cf2eea09a55067fU, 0xf42faa48c0ea481eU,
|
1236
|
+
0xf13b94daf124da26U, 0x76c53d08d6b70858U, 0x54768c4b0c64ca6eU,
|
1237
|
+
0xa9942f5dcf7dfd09U, 0xd3f93b35435d7c4cU, 0xc47bc5014a1a6dafU,
|
1238
|
+
0x359ab6419ca1091bU, 0xc30163d203c94b62U, 0x79e0de63425dcf1dU,
|
1239
|
+
0x985915fc12f542e4U, 0x3e6f5b7b17b2939dU, 0xa705992ceecf9c42U,
|
1240
|
+
0x50c6ff782a838353U, 0xa4f8bf5635246428U, 0x871b7795e136be99U,
|
1241
|
+
0x28e2557b59846e3fU, 0x331aeada2fe589cfU, 0x3ff0d2c85def7621U,
|
1242
|
+
0x0fed077a756b53a9U, 0xd3e8495912c62894U, 0x64712dd7abbbd95cU,
|
1243
|
+
0xbd8d794d96aacfb3U, 0xecf0d7a0fc5583a0U, 0xf41686c49db57244U,
|
1244
|
+
0x311c2875c522ced5U, 0x7d633293366b828bU, 0xae5dff9c02033197U,
|
1245
|
+
0xd9f57f830283fdfcU, 0xd072df63c324fd7bU, 0x4247cb9e59f71e6dU,
|
1246
|
+
0x52d9be85f074e608U, 0x67902e276c921f8bU, 0x00ba1cd8a3db53b6U,
|
1247
|
+
0x80e8a40eccd228a4U, 0x6122cd128006b2cdU, 0x796b805720085f81U,
|
1248
|
+
0xcbe3303674053bb0U, 0xbedbfc4411068a9cU, 0xee92fb5515482d44U,
|
1249
|
+
0x751bdd152d4d1c4aU, 0xd262d45a78a0635dU, 0x86fb897116c87c34U,
|
1250
|
+
0xd45d35e6ae3d4da0U, 0x8974836059cca109U, 0x2bd1a438703fc94bU,
|
1251
|
+
0x7b6306a34627ddcfU, 0x1a3bc84c17b1d542U, 0x20caba5f1d9e4a93U,
|
1252
|
+
0x547eb47b7282ee9cU, 0xe99e619a4f23aa43U, 0x6405fa00e2ec94d4U,
|
1253
|
+
0xde83bc408dd3dd04U, 0x9624ab50b148d445U, 0x3badd624dd9b0957U,
|
1254
|
+
0xe54ca5d70a80e5d6U, 0x5e9fcf4ccd211f4cU, 0x7647c3200069671fU,
|
1255
|
+
0x29ecd9f40041e073U, 0xf468107100525890U, 0x7182148d4066eeb4U,
|
1256
|
+
0xc6f14cd848405530U, 0xb8ada00e5a506a7cU, 0xa6d90811f0e4851cU,
|
1257
|
+
0x908f4a166d1da663U, 0x9a598e4e043287feU, 0x40eff1e1853f29fdU,
|
1258
|
+
0xd12bee59e68ef47cU, 0x82bb74f8301958ceU, 0xe36a52363c1faf01U,
|
1259
|
+
0xdc44e6c3cb279ac1U, 0x29ab103a5ef8c0b9U, 0x7415d448f6b6f0e7U,
|
1260
|
+
0x111b495b3464ad21U, 0xcab10dd900beec34U, 0x3d5d514f40eea742U,
|
1261
|
+
0x0cb4a5a3112a5112U, 0x47f0e785eaba72abU, 0x59ed216765690f56U,
|
1262
|
+
0x306869c13ec3532cU, 0x1e414218c73a13fbU, 0xe5d1929ef90898faU,
|
1263
|
+
0xdf45f746b74abf39U, 0x6b8bba8c328eb783U, 0x066ea92f3f326564U,
|
1264
|
+
0xc80a537b0efefebdU, 0xbd06742ce95f5f36U, 0x2c48113823b73704U,
|
1265
|
+
0xf75a15862ca504c5U, 0x9a984d73dbe722fbU, 0xc13e60d0d2e0ebbaU,
|
1266
|
+
0x318df905079926a8U, 0xfdf17746497f7052U, 0xfeb6ea8bedefa633U,
|
1267
|
+
0xfe64a52ee96b8fc0U, 0x3dfdce7aa3c673b0U, 0x06bea10ca65c084eU,
|
1268
|
+
0x486e494fcff30a62U, 0x5a89dba3c3efccfaU, 0xf89629465a75e01cU,
|
1269
|
+
0xf6bbb397f1135823U, 0x746aa07ded582e2cU, 0xa8c2a44eb4571cdcU,
|
1270
|
+
0x92f34d62616ce413U, 0x77b020baf9c81d17U, 0x0ace1474dc1d122eU,
|
1271
|
+
0x0d819992132456baU, 0x10e1fff697ed6c69U, 0xca8d3ffa1ef463c1U,
|
1272
|
+
0xbd308ff8a6b17cb2U, 0xac7cb3f6d05ddbdeU, 0x6bcdf07a423aa96bU,
|
1273
|
+
0x86c16c98d2c953c6U, 0xe871c7bf077ba8b7U, 0x11471cd764ad4972U,
|
1274
|
+
0xd598e40d3dd89bcfU, 0x4aff1d108d4ec2c3U, 0xcedf722a585139baU,
|
1275
|
+
0xc2974eb4ee658828U, 0x733d226229feea32U, 0x0806357d5a3f525fU,
|
1276
|
+
0xca07c2dcb0cf26f7U, 0xfc89b393dd02f0b5U, 0xbbac2078d443ace2U,
|
1277
|
+
0xd54b944b84aa4c0dU, 0x0a9e795e65d4df11U, 0x4d4617b5ff4a16d5U,
|
1278
|
+
0x504bced1bf8e4e45U, 0xe45ec2862f71e1d6U, 0x5d767327bb4e5a4cU,
|
1279
|
+
0x3a6a07f8d510f86fU, 0x890489f70a55368bU, 0x2b45ac74ccea842eU,
|
1280
|
+
0x3b0b8bc90012929dU, 0x09ce6ebb40173744U, 0xcc420a6a101d0515U,
|
1281
|
+
0x9fa946824a12232dU, 0x47939822dc96abf9U, 0x59787e2b93bc56f7U,
|
1282
|
+
0x57eb4edb3c55b65aU, 0xede622920b6b23f1U, 0xe95fab368e45ecedU,
|
1283
|
+
0x11dbcb0218ebb414U, 0xd652bdc29f26a119U, 0x4be76d3346f0495fU,
|
1284
|
+
0x6f70a4400c562ddbU, 0xcb4ccd500f6bb952U, 0x7e2000a41346a7a7U,
|
1285
|
+
0x8ed400668c0c28c8U, 0x728900802f0f32faU, 0x4f2b40a03ad2ffb9U,
|
1286
|
+
0xe2f610c84987bfa8U, 0x0dd9ca7d2df4d7c9U, 0x91503d1c79720dbbU,
|
1287
|
+
0x75a44c6397ce912aU, 0xc986afbe3ee11abaU, 0xfbe85badce996168U,
|
1288
|
+
0xfae27299423fb9c3U, 0xdccd879fc967d41aU, 0x5400e987bbc1c920U,
|
1289
|
+
0x290123e9aab23b68U, 0xf9a0b6720aaf6521U, 0xf808e40e8d5b3e69U,
|
1290
|
+
0xb60b1d1230b20e04U, 0xb1c6f22b5e6f48c2U, 0x1e38aeb6360b1af3U,
|
1291
|
+
0x25c6da63c38de1b0U, 0x579c487e5a38ad0eU, 0x2d835a9df0c6d851U,
|
1292
|
+
0xf8e431456cf88e65U, 0x1b8e9ecb641b58ffU, 0xe272467e3d222f3fU,
|
1293
|
+
0x5b0ed81dcc6abb0fU, 0x98e947129fc2b4e9U, 0x3f2398d747b36224U,
|
1294
|
+
0x8eec7f0d19a03aadU, 0x1953cf68300424acU, 0x5fa8c3423c052dd7U,
|
1295
|
+
0x3792f412cb06794dU, 0xe2bbd88bbee40bd0U, 0x5b6aceaeae9d0ec4U,
|
1296
|
+
0xf245825a5a445275U, 0xeed6e2f0f0d56712U, 0x55464dd69685606bU,
|
1297
|
+
0xaa97e14c3c26b886U, 0xd53dd99f4b3066a8U, 0xe546a8038efe4029U,
|
1298
|
+
0xde98520472bdd033U, 0x963e66858f6d4440U, 0xdde7001379a44aa8U,
|
1299
|
+
0x5560c018580d5d52U, 0xaab8f01e6e10b4a6U, 0xcab3961304ca70e8U,
|
1300
|
+
0x3d607b97c5fd0d22U, 0x8cb89a7db77c506aU, 0x77f3608e92adb242U,
|
1301
|
+
0x55f038b237591ed3U, 0x6b6c46dec52f6688U, 0x2323ac4b3b3da015U,
|
1302
|
+
0xabec975e0a0d081aU, 0x96e7bd358c904a21U, 0x7e50d64177da2e54U,
|
1303
|
+
0xdde50bd1d5d0b9e9U, 0x955e4ec64b44e864U, 0xbd5af13bef0b113eU,
|
1304
|
+
0xecb1ad8aeacdd58eU, 0x67de18eda5814af2U, 0x80eacf948770ced7U,
|
1305
|
+
0xa1258379a94d028dU, 0x096ee45813a04330U, 0x8bca9d6e188853fcU,
|
1306
|
+
0x775ea264cf55347dU, 0x95364afe032a819dU, 0x3a83ddbd83f52204U,
|
1307
|
+
0xc4926a9672793542U, 0x75b7053c0f178293U, 0x5324c68b12dd6338U,
|
1308
|
+
0xd3f6fc16ebca5e03U, 0x88f4bb1ca6bcf584U, 0x2b31e9e3d06c32e5U,
|
1309
|
+
0x3aff322e62439fcfU, 0x09befeb9fad487c2U, 0x4c2ebe687989a9b3U,
|
1310
|
+
0x0f9d37014bf60a10U, 0x538484c19ef38c94U, 0x2865a5f206b06fb9U,
|
1311
|
+
0xf93f87b7442e45d3U, 0xf78f69a51539d748U, 0xb573440e5a884d1bU,
|
1312
|
+
0x31680a88f8953030U, 0xfdc20d2b36ba7c3dU, 0x3d32907604691b4cU,
|
1313
|
+
0xa63f9a49c2c1b10fU, 0x0fcf80dc33721d53U, 0xd3c36113404ea4a8U,
|
1314
|
+
0x645a1cac083126e9U, 0x3d70a3d70a3d70a3U, 0xccccccccccccccccU,
|
1315
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1316
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1317
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1318
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1319
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1320
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1321
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1322
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1323
|
+
0x0000000000000000U, 0x0000000000000000U, 0x0000000000000000U,
|
1324
|
+
0x0000000000000000U, 0x4000000000000000U, 0x5000000000000000U,
|
1325
|
+
0xa400000000000000U, 0x4d00000000000000U, 0xf020000000000000U,
|
1326
|
+
0x6c28000000000000U, 0xc732000000000000U, 0x3c7f400000000000U,
|
1327
|
+
0x4b9f100000000000U, 0x1e86d40000000000U, 0x1314448000000000U,
|
1328
|
+
0x17d955a000000000U, 0x5dcfab0800000000U, 0x5aa1cae500000000U,
|
1329
|
+
0xf14a3d9e40000000U, 0x6d9ccd05d0000000U, 0xe4820023a2000000U,
|
1330
|
+
0xdda2802c8a800000U, 0xd50b2037ad200000U, 0x4526f422cc340000U,
|
1331
|
+
0x9670b12b7f410000U, 0x3c0cdd765f114000U, 0xa5880a69fb6ac800U,
|
1332
|
+
0x8eea0d047a457a00U, 0x72a4904598d6d880U, 0x47a6da2b7f864750U,
|
1333
|
+
0x999090b65f67d924U, 0xfff4b4e3f741cf6dU, 0xbff8f10e7a8921a4U,
|
1334
|
+
0xaff72d52192b6a0dU, 0x9bf4f8a69f764490U, 0x02f236d04753d5b4U,
|
1335
|
+
0x01d762422c946590U, 0x424d3ad2b7b97ef5U, 0xd2e0898765a7deb2U,
|
1336
|
+
0x63cc55f49f88eb2fU, 0x3cbf6b71c76b25fbU, 0x8bef464e3945ef7aU,
|
1337
|
+
0x97758bf0e3cbb5acU, 0x3d52eeed1cbea317U, 0x4ca7aaa863ee4bddU,
|
1338
|
+
0x8fe8caa93e74ef6aU, 0xb3e2fd538e122b44U, 0x60dbbca87196b616U,
|
1339
|
+
0xbc8955e946fe31cdU, 0x6babab6398bdbe41U, 0xc696963c7eed2dd1U,
|
1340
|
+
0xfc1e1de5cf543ca2U, 0x3b25a55f43294bcbU, 0x49ef0eb713f39ebeU,
|
1341
|
+
0x6e3569326c784337U, 0x49c2c37f07965404U, 0xdc33745ec97be906U,
|
1342
|
+
0x69a028bb3ded71a3U, 0xc40832ea0d68ce0cU, 0xf50a3fa490c30190U,
|
1343
|
+
0x792667c6da79e0faU, 0x577001b891185938U, 0xed4c0226b55e6f86U,
|
1344
|
+
0x544f8158315b05b4U, 0x696361ae3db1c721U, 0x03bc3a19cd1e38e9U,
|
1345
|
+
0x04ab48a04065c723U, 0x62eb0d64283f9c76U, 0x3ba5d0bd324f8394U,
|
1346
|
+
0xca8f44ec7ee36479U, 0x7e998b13cf4e1ecbU, 0x9e3fedd8c321a67eU,
|
1347
|
+
0xc5cfe94ef3ea101eU, 0xbba1f1d158724a12U, 0x2a8a6e45ae8edc97U,
|
1348
|
+
0xf52d09d71a3293bdU, 0x593c2626705f9c56U, 0x6f8b2fb00c77836cU,
|
1349
|
+
0x0b6dfb9c0f956447U, 0x4724bd4189bd5eacU, 0x58edec91ec2cb657U,
|
1350
|
+
0x2f2967b66737e3edU, 0xbd79e0d20082ee74U, 0xecd8590680a3aa11U,
|
1351
|
+
0xe80e6f4820cc9495U, 0x3109058d147fdcddU, 0xbd4b46f0599fd415U,
|
1352
|
+
0x6c9e18ac7007c91aU, 0x03e2cf6bc604ddb0U, 0x84db8346b786151cU,
|
1353
|
+
0xe612641865679a63U, 0x4fcb7e8f3f60c07eU, 0xe3be5e330f38f09dU,
|
1354
|
+
0x5cadf5bfd3072cc5U, 0x73d9732fc7c8f7f6U, 0x2867e7fddcdd9afaU,
|
1355
|
+
0xb281e1fd541501b8U, 0x1f225a7ca91a4226U, 0x3375788de9b06958U,
|
1356
|
+
0x0052d6b1641c83aeU, 0xc0678c5dbd23a49aU, 0xf840b7ba963646e0U,
|
1357
|
+
0xb650e5a93bc3d898U, 0xa3e51f138ab4cebeU, 0xc66f336c36b10137U,
|
1358
|
+
0xb80b0047445d4184U, 0xa60dc059157491e5U, 0x87c89837ad68db2fU,
|
1359
|
+
0x29babe4598c311fbU, 0xf4296dd6fef3d67aU, 0x1899e4a65f58660cU,
|
1360
|
+
0x5ec05dcff72e7f8fU, 0x76707543f4fa1f73U, 0x6a06494a791c53a8U,
|
1361
|
+
0x0487db9d17636892U, 0x45a9d2845d3c42b6U, 0x0b8a2392ba45a9b2U,
|
1362
|
+
0x8e6cac7768d7141eU, 0x3207d795430cd926U, 0x7f44e6bd49e807b8U,
|
1363
|
+
0x5f16206c9c6209a6U, 0x36dba887c37a8c0fU, 0xc2494954da2c9789U,
|
1364
|
+
0xf2db9baa10b7bd6cU, 0x6f92829494e5acc7U, 0xcb772339ba1f17f9U,
|
1365
|
+
0xff2a760414536efbU, 0xfef5138519684abaU, 0x7eb258665fc25d69U,
|
1366
|
+
0xef2f773ffbd97a61U, 0xaafb550ffacfd8faU, 0x95ba2a53f983cf38U,
|
1367
|
+
0xdd945a747bf26183U, 0x94f971119aeef9e4U, 0x7a37cd5601aab85dU,
|
1368
|
+
0xac62e055c10ab33aU, 0x577b986b314d6009U, 0xed5a7e85fda0b80bU,
|
1369
|
+
0x14588f13be847307U, 0x596eb2d8ae258fc8U, 0x6fca5f8ed9aef3bbU,
|
1370
|
+
0x25de7bb9480d5854U, 0xaf561aa79a10ae6aU, 0x1b2ba1518094da04U,
|
1371
|
+
0x90fb44d2f05d0842U, 0x353a1607ac744a53U, 0x42889b8997915ce8U,
|
1372
|
+
0x69956135febada11U, 0x43fab9837e699095U, 0x94f967e45e03f4bbU,
|
1373
|
+
0x1d1be0eebac278f5U, 0x6462d92a69731732U, 0x7d7b8f7503cfdcfeU,
|
1374
|
+
0x5cda735244c3d43eU, 0x3a0888136afa64a7U, 0x088aaa1845b8fdd0U,
|
1375
|
+
0x8aad549e57273d45U, 0x36ac54e2f678864bU, 0x84576a1bb416a7ddU,
|
1376
|
+
0x656d44a2a11c51d5U, 0x9f644ae5a4b1b325U, 0x873d5d9f0dde1feeU,
|
1377
|
+
0xa90cb506d155a7eaU, 0x09a7f12442d588f2U, 0x0c11ed6d538aeb2fU,
|
1378
|
+
0x8f1668c8a86da5faU, 0xf96e017d694487bcU, 0x37c981dcc395a9acU,
|
1379
|
+
0x85bbe253f47b1417U, 0x93956d7478ccec8eU, 0x387ac8d1970027b2U,
|
1380
|
+
0x06997b05fcc0319eU, 0x441fece3bdf81f03U, 0xd527e81cad7626c3U,
|
1381
|
+
0x8a71e223d8d3b074U, 0xf6872d5667844e49U, 0xb428f8ac016561dbU,
|
1382
|
+
0xe13336d701beba52U, 0xecc0024661173473U, 0x27f002d7f95d0190U,
|
1383
|
+
0x31ec038df7b441f4U, 0x7e67047175a15271U, 0x0f0062c6e984d386U,
|
1384
|
+
0x52c07b78a3e60868U, 0xa7709a56ccdf8a82U, 0x88a66076400bb691U,
|
1385
|
+
0x6acff893d00ea435U, 0x0583f6b8c4124d43U, 0xc3727a337a8b704aU,
|
1386
|
+
0x744f18c0592e4c5cU, 0x1162def06f79df73U, 0x8addcb5645ac2ba8U,
|
1387
|
+
0x6d953e2bd7173692U, 0xc8fa8db6ccdd0437U, 0x1d9c9892400a22a2U,
|
1388
|
+
0x2503beb6d00cab4bU, 0x2e44ae64840fd61dU, 0x5ceaecfed289e5d2U,
|
1389
|
+
0x7425a83e872c5f47U, 0xd12f124e28f77719U, 0x82bd6b70d99aaa6fU,
|
1390
|
+
0x636cc64d1001550bU, 0x3c47f7e05401aa4eU, 0x65acfaec34810a71U,
|
1391
|
+
0x7f1839a741a14d0dU, 0x1ede48111209a050U, 0x934aed0aab460432U,
|
1392
|
+
0xf81da84d5617853fU, 0x36251260ab9d668eU, 0xc1d72b7c6b426019U,
|
1393
|
+
0xb24cf65b8612f81fU, 0xdee033f26797b627U, 0x169840ef017da3b1U,
|
1394
|
+
0x8e1f289560ee864eU, 0xf1a6f2bab92a27e2U, 0xae10af696774b1dbU,
|
1395
|
+
0xacca6da1e0a8ef29U, 0x17fd090a58d32af3U, 0xddfc4b4cef07f5b0U,
|
1396
|
+
0x4abdaf101564f98eU, 0x9d6d1ad41abe37f1U, 0x84c86189216dc5edU,
|
1397
|
+
0x32fd3cf5b4e49bb4U, 0x3fbc8c33221dc2a1U, 0x0fabaf3feaa5334aU,
|
1398
|
+
0x29cb4d87f2a7400eU, 0x743e20e9ef511012U, 0x914da9246b255416U,
|
1399
|
+
0x1ad089b6c2f7548eU, 0xa184ac2473b529b1U, 0xc9e5d72d90a2741eU,
|
1400
|
+
0x7e2fa67c7a658892U, 0xddbb901b98feeab7U, 0x552a74227f3ea565U,
|
1401
|
+
0xd53a88958f87275fU, 0x8a892abaf368f137U, 0x2d2b7569b0432d85U,
|
1402
|
+
0x9c3b29620e29fc73U, 0x8349f3ba91b47b8fU, 0x241c70a936219a73U,
|
1403
|
+
0xed238cd383aa0110U, 0xf4363804324a40aaU, 0xb143c6053edcd0d5U,
|
1404
|
+
0xdd94b7868e94050aU, 0xca7cf2b4191c8326U, 0xfd1c2f611f63a3f0U,
|
1405
|
+
0xbc633b39673c8cecU, 0xd5be0503e085d813U, 0x4b2d8644d8a74e18U,
|
1406
|
+
0xddf8e7d60ed1219eU, 0xcabb90e5c942b503U, 0x3d6a751f3b936243U,
|
1407
|
+
0x0cc512670a783ad4U, 0x27fb2b80668b24c5U, 0xb1f9f660802dedf6U,
|
1408
|
+
0x5e7873f8a0396973U, 0xdb0b487b6423e1e8U, 0x91ce1a9a3d2cda62U,
|
1409
|
+
0x7641a140cc7810fbU, 0xa9e904c87fcb0a9dU, 0x546345fa9fbdcd44U,
|
1410
|
+
0xa97c177947ad4095U, 0x49ed8eabcccc485dU, 0x5c68f256bfff5a74U,
|
1411
|
+
0x73832eec6fff3111U, 0xc831fd53c5ff7eabU, 0xba3e7ca8b77f5e55U,
|
1412
|
+
0x28ce1bd2e55f35ebU, 0x7980d163cf5b81b3U, 0xd7e105bcc332621fU,
|
1413
|
+
0x8dd9472bf3fefaa7U, 0xb14f98f6f0feb951U, 0x6ed1bf9a569f33d3U,
|
1414
|
+
0x0a862f80ec4700c8U, 0xcd27bb612758c0faU, 0x8038d51cb897789cU,
|
1415
|
+
0xe0470a63e6bd56c3U, 0x1858ccfce06cac74U, 0x0f37801e0c43ebc8U,
|
1416
|
+
0xd30560258f54e6baU, 0x47c6b82ef32a2069U, 0x4cdc331d57fa5441U,
|
1417
|
+
0xe0133fe4adf8e952U, 0x58180fddd97723a6U, 0x570f09eaa7ea7648U,
|
980
1418
|
};
|
981
1419
|
|
982
1420
|
} // namespace
|