grpc 1.73.0 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +38 -17
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +11 -5
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +270 -181
- data/src/core/channelz/channelz.h +168 -55
- data/src/core/channelz/channelz_registry.cc +2 -1
- data/src/core/channelz/channelz_registry.h +24 -0
- data/src/core/channelz/property_list.cc +357 -0
- data/src/core/channelz/property_list.h +202 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +19 -29
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +43 -19
- data/src/core/client_channel/subchannel.h +8 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +1 -0
- data/src/core/config/core_configuration.h +11 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +0 -25
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
- data/src/core/handshaker/security/secure_endpoint.cc +70 -25
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.h +5 -5
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +48 -2
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +45 -93
- data/src/core/lib/experiments/experiments.h +21 -51
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/tcp_posix.cc +12 -6
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +1 -0
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +50 -1
- data/src/core/lib/promise/party.h +66 -1
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/filter_stack_call.cc +18 -9
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +83 -12
- data/src/core/server/server.h +21 -2
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/stats_data.cc +233 -207
- data/src/core/telemetry/stats_data.h +250 -153
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/latent_see.h +8 -5
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +2 -2
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +53 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +72 -568
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- metadata +72 -20
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -0,0 +1,80 @@
|
|
1
|
+
// Copyright 2025 The Abseil Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
//
|
15
|
+
// This is a private implementation detail of resize algorithm of
|
16
|
+
// raw_hash_set. It is exposed in a separate file for testing purposes.
|
17
|
+
|
18
|
+
#ifndef ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_RESIZE_IMPL_H_
|
19
|
+
#define ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_RESIZE_IMPL_H_
|
20
|
+
|
21
|
+
#include <cstddef>
|
22
|
+
#include <cstdint>
|
23
|
+
|
24
|
+
#include "absl/base/config.h"
|
25
|
+
|
26
|
+
namespace absl {
|
27
|
+
ABSL_NAMESPACE_BEGIN
|
28
|
+
namespace container_internal {
|
29
|
+
|
30
|
+
// Encoding for probed elements used for smaller tables.
|
31
|
+
// Data is encoded into single integer.
|
32
|
+
// Storage format for 4 bytes:
|
33
|
+
// - 7 bits for h2
|
34
|
+
// - 12 bits for source_offset
|
35
|
+
// - 13 bits for h1
|
36
|
+
// Storage format for 8 bytes:
|
37
|
+
// - 7 bits for h2
|
38
|
+
// - 28 bits for source_offset
|
39
|
+
// - 29 bits for h1
|
40
|
+
// Storage format for 16 bytes:
|
41
|
+
// - 7 bits for h2
|
42
|
+
// - 57 bits for source_offset
|
43
|
+
// - 58 bits for h1
|
44
|
+
template <typename IntType, size_t kTotalBits>
|
45
|
+
struct ProbedItemImpl {
|
46
|
+
static constexpr IntType kH2Bits = 7;
|
47
|
+
|
48
|
+
static constexpr IntType kMaxOldBits = (kTotalBits - kH2Bits) / 2;
|
49
|
+
static constexpr IntType kMaxOldCapacity = (IntType{1} << kMaxOldBits) - 1;
|
50
|
+
|
51
|
+
// We always have one bit more for h1.
|
52
|
+
static constexpr IntType kMaxNewBits = kMaxOldBits + 1;
|
53
|
+
static constexpr IntType kMaxNewCapacity = (IntType{1} << kMaxNewBits) - 1;
|
54
|
+
|
55
|
+
static constexpr IntType kH2Shift = (kTotalBits - kH2Bits);
|
56
|
+
static_assert(kMaxNewBits + kMaxOldBits + kH2Bits == kTotalBits);
|
57
|
+
|
58
|
+
ProbedItemImpl() = default;
|
59
|
+
ProbedItemImpl(uint8_t h2_arg, size_t source_offset_arg, size_t h1_arg)
|
60
|
+
: h2(h2_arg),
|
61
|
+
source_offset(static_cast<IntType>(source_offset_arg)),
|
62
|
+
h1(static_cast<IntType>(h1_arg)) {}
|
63
|
+
|
64
|
+
IntType h2 : kH2Bits;
|
65
|
+
IntType source_offset : kMaxOldBits;
|
66
|
+
IntType h1 : kMaxNewBits;
|
67
|
+
};
|
68
|
+
|
69
|
+
using ProbedItem4Bytes = ProbedItemImpl<uint32_t, 32>;
|
70
|
+
static_assert(sizeof(ProbedItem4Bytes) == 4);
|
71
|
+
using ProbedItem8Bytes = ProbedItemImpl<uint64_t, 64>;
|
72
|
+
static_assert(sizeof(ProbedItem8Bytes) == 8);
|
73
|
+
using ProbedItem16Bytes = ProbedItemImpl<uint64_t, 7 + 57 + 58>;
|
74
|
+
static_assert(sizeof(ProbedItem16Bytes) == 16);
|
75
|
+
|
76
|
+
} // namespace container_internal
|
77
|
+
ABSL_NAMESPACE_END
|
78
|
+
} // namespace absl
|
79
|
+
|
80
|
+
#endif // ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_RESIZE_IMPL_H_
|
@@ -54,10 +54,6 @@ crc32c_t ExtendCrc32cInternal(crc32c_t initial_crc,
|
|
54
54
|
|
55
55
|
} // namespace crc_internal
|
56
56
|
|
57
|
-
crc32c_t ComputeCrc32c(absl::string_view buf) {
|
58
|
-
return ExtendCrc32c(crc32c_t{0}, buf);
|
59
|
-
}
|
60
|
-
|
61
57
|
crc32c_t ExtendCrc32cByZeroes(crc32c_t initial_crc, size_t length) {
|
62
58
|
uint32_t crc = static_cast<uint32_t>(initial_crc) ^ kCRC32Xor;
|
63
59
|
CrcEngine()->ExtendByZeroes(&crc, length);
|
@@ -83,11 +83,6 @@ crc32c_t ExtendCrc32cInternal(crc32c_t initial_crc,
|
|
83
83
|
// CRC32C Computation Functions
|
84
84
|
// -----------------------------------------------------------------------------
|
85
85
|
|
86
|
-
// ComputeCrc32c()
|
87
|
-
//
|
88
|
-
// Returns the CRC32C value of the provided string.
|
89
|
-
crc32c_t ComputeCrc32c(absl::string_view buf);
|
90
|
-
|
91
86
|
// ExtendCrc32c()
|
92
87
|
//
|
93
88
|
// Computes a CRC32C value from an `initial_crc` CRC32C value including the
|
@@ -112,6 +107,13 @@ inline crc32c_t ExtendCrc32c(crc32c_t initial_crc,
|
|
112
107
|
return crc_internal::ExtendCrc32cInternal(initial_crc, buf_to_add);
|
113
108
|
}
|
114
109
|
|
110
|
+
// ComputeCrc32c()
|
111
|
+
//
|
112
|
+
// Returns the CRC32C value of the provided string.
|
113
|
+
inline crc32c_t ComputeCrc32c(absl::string_view buf) {
|
114
|
+
return ExtendCrc32c(crc32c_t{0}, buf);
|
115
|
+
}
|
116
|
+
|
115
117
|
// ExtendCrc32cByZeroes()
|
116
118
|
//
|
117
119
|
// Computes a CRC32C value for a buffer with an `initial_crc` CRC32C value,
|
@@ -99,19 +99,12 @@ V128 V128_PMul10(const V128 l, const V128 r);
|
|
99
99
|
// Produces a XOR operation of |l| and |r|.
|
100
100
|
V128 V128_Xor(const V128 l, const V128 r);
|
101
101
|
|
102
|
-
// Produces an AND operation of |l| and |r|.
|
103
|
-
V128 V128_And(const V128 l, const V128 r);
|
104
|
-
|
105
102
|
// Sets the lower half of a 128 bit register to the given 64-bit value and
|
106
103
|
// zeroes the upper half.
|
107
104
|
// dst[63:0] := |r|
|
108
105
|
// dst[127:64] := |0|
|
109
106
|
V128 V128_From64WithZeroFill(const uint64_t r);
|
110
107
|
|
111
|
-
// Shift |l| right by |imm| bytes while shifting in zeros.
|
112
|
-
template <int imm>
|
113
|
-
V128 V128_ShiftRight(const V128 l);
|
114
|
-
|
115
108
|
// Extracts a 32-bit integer from |l|, selected with |imm|.
|
116
109
|
template <int imm>
|
117
110
|
int V128_Extract32(const V128 l);
|
@@ -170,17 +163,10 @@ inline V128 V128_PMul10(const V128 l, const V128 r) {
|
|
170
163
|
|
171
164
|
inline V128 V128_Xor(const V128 l, const V128 r) { return _mm_xor_si128(l, r); }
|
172
165
|
|
173
|
-
inline V128 V128_And(const V128 l, const V128 r) { return _mm_and_si128(l, r); }
|
174
|
-
|
175
166
|
inline V128 V128_From64WithZeroFill(const uint64_t r) {
|
176
167
|
return _mm_set_epi64x(static_cast<int64_t>(0), static_cast<int64_t>(r));
|
177
168
|
}
|
178
169
|
|
179
|
-
template <int imm>
|
180
|
-
inline V128 V128_ShiftRight(const V128 l) {
|
181
|
-
return _mm_srli_si128(l, imm);
|
182
|
-
}
|
183
|
-
|
184
170
|
template <int imm>
|
185
171
|
inline int V128_Extract32(const V128 l) {
|
186
172
|
return _mm_extract_epi32(l, imm);
|
@@ -261,20 +247,12 @@ inline V128 V128_PMul10(const V128 l, const V128 r) {
|
|
261
247
|
|
262
248
|
inline V128 V128_Xor(const V128 l, const V128 r) { return veorq_u64(l, r); }
|
263
249
|
|
264
|
-
inline V128 V128_And(const V128 l, const V128 r) { return vandq_u64(l, r); }
|
265
|
-
|
266
250
|
inline V128 V128_From64WithZeroFill(const uint64_t r){
|
267
251
|
constexpr uint64x2_t kZero = {0, 0};
|
268
252
|
return vsetq_lane_u64(r, kZero, 0);
|
269
253
|
}
|
270
254
|
|
271
255
|
|
272
|
-
template <int imm>
|
273
|
-
inline V128 V128_ShiftRight(const V128 l) {
|
274
|
-
return vreinterpretq_u64_s8(
|
275
|
-
vextq_s8(vreinterpretq_s8_u64(l), vdupq_n_s8(0), imm));
|
276
|
-
}
|
277
|
-
|
278
256
|
template <int imm>
|
279
257
|
inline int V128_Extract32(const V128 l) {
|
280
258
|
return vgetq_lane_s32(vreinterpretq_s32_u64(l), imm);
|
@@ -64,27 +64,27 @@ class CRC32AcceleratedX86ARMCombined : public CRC32 {
|
|
64
64
|
constexpr size_t kSmallCutoff = 256;
|
65
65
|
constexpr size_t kMediumCutoff = 2048;
|
66
66
|
|
67
|
-
#define ABSL_INTERNAL_STEP1(crc)
|
67
|
+
#define ABSL_INTERNAL_STEP1(crc, p) \
|
68
68
|
do { \
|
69
69
|
crc = CRC32_u8(static_cast<uint32_t>(crc), *p++); \
|
70
70
|
} while (0)
|
71
|
-
#define ABSL_INTERNAL_STEP2(crc)
|
71
|
+
#define ABSL_INTERNAL_STEP2(crc, p) \
|
72
72
|
do { \
|
73
73
|
crc = \
|
74
74
|
CRC32_u16(static_cast<uint32_t>(crc), absl::little_endian::Load16(p)); \
|
75
75
|
p += 2; \
|
76
76
|
} while (0)
|
77
|
-
#define ABSL_INTERNAL_STEP4(crc)
|
77
|
+
#define ABSL_INTERNAL_STEP4(crc, p) \
|
78
78
|
do { \
|
79
79
|
crc = \
|
80
80
|
CRC32_u32(static_cast<uint32_t>(crc), absl::little_endian::Load32(p)); \
|
81
81
|
p += 4; \
|
82
82
|
} while (0)
|
83
|
-
#define ABSL_INTERNAL_STEP8(crc,
|
84
|
-
do {
|
85
|
-
crc =
|
86
|
-
|
87
|
-
|
83
|
+
#define ABSL_INTERNAL_STEP8(crc, p) \
|
84
|
+
do { \
|
85
|
+
crc = \
|
86
|
+
CRC32_u64(static_cast<uint32_t>(crc), absl::little_endian::Load64(p)); \
|
87
|
+
p += 8; \
|
88
88
|
} while (0)
|
89
89
|
#define ABSL_INTERNAL_STEP8BY2(crc0, crc1, p0, p1) \
|
90
90
|
do { \
|
@@ -221,7 +221,8 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreamsBase
|
|
221
221
|
// We are applying it to CRC32C polynomial.
|
222
222
|
ABSL_ATTRIBUTE_ALWAYS_INLINE void Process64BytesPclmul(
|
223
223
|
const uint8_t* p, V128* partialCRC) const {
|
224
|
-
V128 loopMultiplicands =
|
224
|
+
V128 loopMultiplicands =
|
225
|
+
V128_Load(reinterpret_cast<const V128*>(kFoldAcross512Bits));
|
225
226
|
|
226
227
|
V128 partialCRC1 = partialCRC[0];
|
227
228
|
V128 partialCRC2 = partialCRC[1];
|
@@ -265,53 +266,33 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreamsBase
|
|
265
266
|
|
266
267
|
// Combine 4 vectors of partial crc into a single vector.
|
267
268
|
V128 reductionMultiplicands =
|
268
|
-
V128_Load(reinterpret_cast<const V128*>(
|
269
|
+
V128_Load(reinterpret_cast<const V128*>(kFoldAcross256Bits));
|
269
270
|
|
270
271
|
V128 low = V128_PMulLow(reductionMultiplicands, partialCRC1);
|
271
272
|
V128 high = V128_PMulHi(reductionMultiplicands, partialCRC1);
|
272
273
|
|
273
274
|
partialCRC1 = V128_Xor(low, high);
|
274
|
-
partialCRC1 = V128_Xor(partialCRC1,
|
275
|
+
partialCRC1 = V128_Xor(partialCRC1, partialCRC3);
|
275
276
|
|
276
|
-
low = V128_PMulLow(reductionMultiplicands,
|
277
|
-
high = V128_PMulHi(reductionMultiplicands,
|
277
|
+
low = V128_PMulLow(reductionMultiplicands, partialCRC2);
|
278
|
+
high = V128_PMulHi(reductionMultiplicands, partialCRC2);
|
278
279
|
|
279
|
-
|
280
|
-
|
280
|
+
partialCRC2 = V128_Xor(low, high);
|
281
|
+
partialCRC2 = V128_Xor(partialCRC2, partialCRC4);
|
281
282
|
|
282
|
-
reductionMultiplicands =
|
283
|
+
reductionMultiplicands =
|
284
|
+
V128_Load(reinterpret_cast<const V128*>(kFoldAcross128Bits));
|
283
285
|
|
284
286
|
low = V128_PMulLow(reductionMultiplicands, partialCRC1);
|
285
287
|
high = V128_PMulHi(reductionMultiplicands, partialCRC1);
|
286
288
|
V128 fullCRC = V128_Xor(low, high);
|
287
|
-
fullCRC = V128_Xor(fullCRC,
|
289
|
+
fullCRC = V128_Xor(fullCRC, partialCRC2);
|
288
290
|
|
289
291
|
// Reduce fullCRC into scalar value.
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
V128 tmp = V128_PMul01(reductionMultiplicands, fullCRC);
|
295
|
-
fullCRC = V128_ShiftRight<8>(fullCRC);
|
296
|
-
fullCRC = V128_Xor(fullCRC, tmp);
|
297
|
-
|
298
|
-
reductionMultiplicands = V128_Load(reinterpret_cast<const V128*>(k7k0));
|
299
|
-
|
300
|
-
tmp = V128_ShiftRight<4>(fullCRC);
|
301
|
-
fullCRC = V128_And(fullCRC, mask);
|
302
|
-
fullCRC = V128_PMulLow(reductionMultiplicands, fullCRC);
|
303
|
-
fullCRC = V128_Xor(tmp, fullCRC);
|
304
|
-
|
305
|
-
reductionMultiplicands = V128_Load(reinterpret_cast<const V128*>(kPoly));
|
306
|
-
|
307
|
-
tmp = V128_And(fullCRC, mask);
|
308
|
-
tmp = V128_PMul01(reductionMultiplicands, tmp);
|
309
|
-
tmp = V128_And(tmp, mask);
|
310
|
-
tmp = V128_PMulLow(reductionMultiplicands, tmp);
|
311
|
-
|
312
|
-
fullCRC = V128_Xor(tmp, fullCRC);
|
313
|
-
|
314
|
-
return static_cast<uint64_t>(V128_Extract32<1>(fullCRC));
|
292
|
+
uint32_t crc = 0;
|
293
|
+
crc = CRC32_u64(crc, V128_Extract64<0>(fullCRC));
|
294
|
+
crc = CRC32_u64(crc, V128_Extract64<1>(fullCRC));
|
295
|
+
return crc;
|
315
296
|
}
|
316
297
|
|
317
298
|
// Update crc with 64 bytes of data from p.
|
@@ -325,15 +306,23 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreamsBase
|
|
325
306
|
return crc;
|
326
307
|
}
|
327
308
|
|
328
|
-
//
|
329
|
-
//
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
alignas(16) static constexpr uint64_t
|
336
|
-
|
309
|
+
// Constants generated by './scripts/gen-crc-consts.py x86_pclmul
|
310
|
+
// crc32_lsb_0x82f63b78' from the Linux kernel.
|
311
|
+
alignas(16) static constexpr uint64_t kFoldAcross512Bits[2] = {
|
312
|
+
// (x^543 mod G) * x^32
|
313
|
+
0x00000000740eef02,
|
314
|
+
// (x^479 mod G) * x^32
|
315
|
+
0x000000009e4addf8};
|
316
|
+
alignas(16) static constexpr uint64_t kFoldAcross256Bits[2] = {
|
317
|
+
// (x^287 mod G) * x^32
|
318
|
+
0x000000003da6d0cb,
|
319
|
+
// (x^223 mod G) * x^32
|
320
|
+
0x00000000ba4fc28e};
|
321
|
+
alignas(16) static constexpr uint64_t kFoldAcross128Bits[2] = {
|
322
|
+
// (x^159 mod G) * x^32
|
323
|
+
0x00000000f20c0dfe,
|
324
|
+
// (x^95 mod G) * x^32
|
325
|
+
0x00000000493c7d27};
|
337
326
|
|
338
327
|
// Medium runs of bytes are broken into groups of kGroupsSmall blocks of same
|
339
328
|
// size. Each group is CRCed in parallel then combined at the end of the
|
@@ -345,24 +334,6 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreamsBase
|
|
345
334
|
static constexpr size_t kMaxStreams = 3;
|
346
335
|
};
|
347
336
|
|
348
|
-
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
349
|
-
alignas(16) constexpr uint64_t
|
350
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k1k2[2];
|
351
|
-
alignas(16) constexpr uint64_t
|
352
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k3k4[2];
|
353
|
-
alignas(16) constexpr uint64_t
|
354
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k5k6[2];
|
355
|
-
alignas(16) constexpr uint64_t
|
356
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k7k0[2];
|
357
|
-
alignas(16) constexpr uint64_t
|
358
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kPoly[2];
|
359
|
-
alignas(16) constexpr uint32_t
|
360
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kMask[4];
|
361
|
-
constexpr size_t
|
362
|
-
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kGroupsSmall;
|
363
|
-
constexpr size_t CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kMaxStreams;
|
364
|
-
#endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
365
|
-
|
366
337
|
template <size_t num_crc_streams, size_t num_pclmul_streams,
|
367
338
|
CutoffStrategy strategy>
|
368
339
|
class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
@@ -384,15 +355,15 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
|
384
355
|
length &= ~size_t{8};
|
385
356
|
}
|
386
357
|
if (length & 4) {
|
387
|
-
ABSL_INTERNAL_STEP4(l);
|
358
|
+
ABSL_INTERNAL_STEP4(l, p);
|
388
359
|
length &= ~size_t{4};
|
389
360
|
}
|
390
361
|
if (length & 2) {
|
391
|
-
ABSL_INTERNAL_STEP2(l);
|
362
|
+
ABSL_INTERNAL_STEP2(l, p);
|
392
363
|
length &= ~size_t{2};
|
393
364
|
}
|
394
365
|
if (length & 1) {
|
395
|
-
ABSL_INTERNAL_STEP1(l);
|
366
|
+
ABSL_INTERNAL_STEP1(l, p);
|
396
367
|
length &= ~size_t{1};
|
397
368
|
}
|
398
369
|
if (length == 0) {
|
@@ -478,7 +449,7 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
|
478
449
|
const uint8_t* x = RoundUp<8>(p);
|
479
450
|
// Process bytes until p is 8-byte aligned, if that isn't past the end.
|
480
451
|
while (p != x) {
|
481
|
-
ABSL_INTERNAL_STEP1(l);
|
452
|
+
ABSL_INTERNAL_STEP1(l, p);
|
482
453
|
}
|
483
454
|
|
484
455
|
size_t bs = static_cast<size_t>(e - p) /
|
@@ -597,7 +568,7 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
|
597
568
|
}
|
598
569
|
// Process the last few bytes
|
599
570
|
while (p != e) {
|
600
|
-
ABSL_INTERNAL_STEP1(l);
|
571
|
+
ABSL_INTERNAL_STEP1(l, p);
|
601
572
|
}
|
602
573
|
|
603
574
|
#undef ABSL_INTERNAL_STEP8BY3
|
@@ -0,0 +1,57 @@
|
|
1
|
+
// Copyright 2025 The Abseil Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_DEBUGGING_INTERNAL_ADDRESSES_H_
|
16
|
+
#define ABSL_DEBUGGING_INTERNAL_ADDRESSES_H_
|
17
|
+
|
18
|
+
#include <stdint.h>
|
19
|
+
|
20
|
+
#include "absl/base/config.h"
|
21
|
+
|
22
|
+
namespace absl {
|
23
|
+
ABSL_NAMESPACE_BEGIN
|
24
|
+
namespace debugging_internal {
|
25
|
+
|
26
|
+
// Removes any metadata (tag bits) from the given pointer, converting it into a
|
27
|
+
// user-readable address.
|
28
|
+
inline uintptr_t StripPointerMetadata(uintptr_t ptr) {
|
29
|
+
#if defined(__aarch64__)
|
30
|
+
// When PAC-RET (-mbranch-protection=pac-ret) is enabled, return addresses
|
31
|
+
// stored on the stack will be signed, which means that pointer bits outside
|
32
|
+
// of the virtual address range are potentially set. Since the stacktrace code
|
33
|
+
// is expected to return normal code pointers, this function clears those
|
34
|
+
// bits.
|
35
|
+
register uintptr_t x30 __asm__("x30") = ptr;
|
36
|
+
// The normal instruction for clearing PAC bits is XPACI, but for
|
37
|
+
// compatibility with ARM platforms that do not support pointer
|
38
|
+
// authentication, we use the hint space instruction XPACLRI instead. Hint
|
39
|
+
// space instructions behave as NOPs on unsupported platforms.
|
40
|
+
#define ABSL_XPACLRI_HINT "hint #0x7;"
|
41
|
+
asm(ABSL_XPACLRI_HINT : "+r"(x30)); // asm("xpaclri" : "+r"(x30));
|
42
|
+
#undef ABSL_XPACLRI_HINT
|
43
|
+
return x30;
|
44
|
+
#else
|
45
|
+
return ptr;
|
46
|
+
#endif
|
47
|
+
}
|
48
|
+
|
49
|
+
inline uintptr_t StripPointerMetadata(void* ptr) {
|
50
|
+
return StripPointerMetadata(reinterpret_cast<uintptr_t>(ptr));
|
51
|
+
}
|
52
|
+
|
53
|
+
} // namespace debugging_internal
|
54
|
+
ABSL_NAMESPACE_END
|
55
|
+
} // namespace absl
|
56
|
+
|
57
|
+
#endif // ABSL_DEBUGGING_INTERNAL_ADDRESSES_H_
|
@@ -172,7 +172,7 @@ bool ScanNextDelta(const char*& punycode_begin, const char* const punycode_end,
|
|
172
172
|
|
173
173
|
} // namespace
|
174
174
|
|
175
|
-
|
175
|
+
char* absl_nullable DecodeRustPunycode(DecodeRustPunycodeOptions options) {
|
176
176
|
const char* punycode_begin = options.punycode_begin;
|
177
177
|
const char* const punycode_end = options.punycode_end;
|
178
178
|
char* const out_begin = options.out_begin;
|
@@ -23,10 +23,10 @@ ABSL_NAMESPACE_BEGIN
|
|
23
23
|
namespace debugging_internal {
|
24
24
|
|
25
25
|
struct DecodeRustPunycodeOptions {
|
26
|
-
const char* punycode_begin;
|
27
|
-
const char* punycode_end;
|
28
|
-
char* out_begin;
|
29
|
-
char* out_end;
|
26
|
+
const char* absl_nonnull punycode_begin;
|
27
|
+
const char* absl_nonnull punycode_end;
|
28
|
+
char* absl_nonnull out_begin;
|
29
|
+
char* absl_nonnull out_end;
|
30
30
|
};
|
31
31
|
|
32
32
|
// Given Rust Punycode in `punycode_begin .. punycode_end`, writes the
|
@@ -46,7 +46,7 @@ struct DecodeRustPunycodeOptions {
|
|
46
46
|
// DecodeRustPunycode is async-signal-safe with bounded runtime and a small
|
47
47
|
// stack footprint, making it suitable for use in demangling Rust symbol names
|
48
48
|
// from a signal handler.
|
49
|
-
|
49
|
+
char* absl_nullable DecodeRustPunycode(DecodeRustPunycodeOptions options);
|
50
50
|
|
51
51
|
} // namespace debugging_internal
|
52
52
|
ABSL_NAMESPACE_END
|
@@ -484,36 +484,6 @@ static bool IsAlpha(char c) {
|
|
484
484
|
|
485
485
|
static bool IsDigit(char c) { return c >= '0' && c <= '9'; }
|
486
486
|
|
487
|
-
// Returns true if "str" is a function clone suffix. These suffixes are used
|
488
|
-
// by GCC 4.5.x and later versions (and our locally-modified version of GCC
|
489
|
-
// 4.4.x) to indicate functions which have been cloned during optimization.
|
490
|
-
// We treat any sequence (.<alpha>+.<digit>+)+ as a function clone suffix.
|
491
|
-
// Additionally, '_' is allowed along with the alphanumeric sequence.
|
492
|
-
static bool IsFunctionCloneSuffix(const char *str) {
|
493
|
-
size_t i = 0;
|
494
|
-
while (str[i] != '\0') {
|
495
|
-
bool parsed = false;
|
496
|
-
// Consume a single [.<alpha> | _]*[.<digit>]* sequence.
|
497
|
-
if (str[i] == '.' && (IsAlpha(str[i + 1]) || str[i + 1] == '_')) {
|
498
|
-
parsed = true;
|
499
|
-
i += 2;
|
500
|
-
while (IsAlpha(str[i]) || str[i] == '_') {
|
501
|
-
++i;
|
502
|
-
}
|
503
|
-
}
|
504
|
-
if (str[i] == '.' && IsDigit(str[i + 1])) {
|
505
|
-
parsed = true;
|
506
|
-
i += 2;
|
507
|
-
while (IsDigit(str[i])) {
|
508
|
-
++i;
|
509
|
-
}
|
510
|
-
}
|
511
|
-
if (!parsed)
|
512
|
-
return false;
|
513
|
-
}
|
514
|
-
return true; // Consumed everything in "str".
|
515
|
-
}
|
516
|
-
|
517
487
|
static bool EndsWith(State *state, const char chr) {
|
518
488
|
return state->parse_state.out_cur_idx > 0 &&
|
519
489
|
state->parse_state.out_cur_idx < state->out_end_idx &&
|
@@ -1039,7 +1009,8 @@ static bool ParseNumber(State *state, int *number_out) {
|
|
1039
1009
|
number = ~number + 1;
|
1040
1010
|
}
|
1041
1011
|
if (p != RemainingInput(state)) { // Conversion succeeded.
|
1042
|
-
state->parse_state.mangled_idx +=
|
1012
|
+
state->parse_state.mangled_idx +=
|
1013
|
+
static_cast<int>(p - RemainingInput(state));
|
1043
1014
|
UpdateHighWaterMark(state);
|
1044
1015
|
if (number_out != nullptr) {
|
1045
1016
|
// Note: possibly truncate "number".
|
@@ -1062,7 +1033,8 @@ static bool ParseFloatNumber(State *state) {
|
|
1062
1033
|
}
|
1063
1034
|
}
|
1064
1035
|
if (p != RemainingInput(state)) { // Conversion succeeded.
|
1065
|
-
state->parse_state.mangled_idx +=
|
1036
|
+
state->parse_state.mangled_idx +=
|
1037
|
+
static_cast<int>(p - RemainingInput(state));
|
1066
1038
|
UpdateHighWaterMark(state);
|
1067
1039
|
return true;
|
1068
1040
|
}
|
@@ -1081,7 +1053,8 @@ static bool ParseSeqId(State *state) {
|
|
1081
1053
|
}
|
1082
1054
|
}
|
1083
1055
|
if (p != RemainingInput(state)) { // Conversion succeeded.
|
1084
|
-
state->parse_state.mangled_idx +=
|
1056
|
+
state->parse_state.mangled_idx +=
|
1057
|
+
static_cast<int>(p - RemainingInput(state));
|
1085
1058
|
UpdateHighWaterMark(state);
|
1086
1059
|
return true;
|
1087
1060
|
}
|
@@ -1100,7 +1073,7 @@ static bool ParseIdentifier(State *state, size_t length) {
|
|
1100
1073
|
} else {
|
1101
1074
|
MaybeAppendWithLength(state, RemainingInput(state), length);
|
1102
1075
|
}
|
1103
|
-
state->parse_state.mangled_idx += length;
|
1076
|
+
state->parse_state.mangled_idx += static_cast<int>(length);
|
1104
1077
|
UpdateHighWaterMark(state);
|
1105
1078
|
return true;
|
1106
1079
|
}
|
@@ -2929,7 +2902,7 @@ static bool ParseTopLevelMangledName(State *state) {
|
|
2929
2902
|
if (ParseMangledName(state)) {
|
2930
2903
|
if (RemainingInput(state)[0] != '\0') {
|
2931
2904
|
// Drop trailing function clone suffix, if any.
|
2932
|
-
if (
|
2905
|
+
if (RemainingInput(state)[0] == '.') {
|
2933
2906
|
return true;
|
2934
2907
|
}
|
2935
2908
|
// Append trailing version suffix if any.
|