grpc 1.47.0 → 1.48.0.pre1
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 +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- 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 +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -56,6 +56,25 @@
|
|
56
56
|
#include <cstddef>
|
57
57
|
#endif // __cplusplus
|
58
58
|
|
59
|
+
// ABSL_INTERNAL_CPLUSPLUS_LANG
|
60
|
+
//
|
61
|
+
// MSVC does not set the value of __cplusplus correctly, but instead uses
|
62
|
+
// _MSVC_LANG as a stand-in.
|
63
|
+
// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
64
|
+
//
|
65
|
+
// However, there are reports that MSVC even sets _MSVC_LANG incorrectly at
|
66
|
+
// times, for example:
|
67
|
+
// https://github.com/microsoft/vscode-cpptools/issues/1770
|
68
|
+
// https://reviews.llvm.org/D70996
|
69
|
+
//
|
70
|
+
// For this reason, this symbol is considered INTERNAL and code outside of
|
71
|
+
// Abseil must not use it.
|
72
|
+
#if defined(_MSVC_LANG)
|
73
|
+
#define ABSL_INTERNAL_CPLUSPLUS_LANG _MSVC_LANG
|
74
|
+
#elif defined(__cplusplus)
|
75
|
+
#define ABSL_INTERNAL_CPLUSPLUS_LANG __cplusplus
|
76
|
+
#endif
|
77
|
+
|
59
78
|
#if defined(__APPLE__)
|
60
79
|
// Included for TARGET_OS_IPHONE, __IPHONE_OS_VERSION_MIN_REQUIRED,
|
61
80
|
// __IPHONE_8_0.
|
@@ -92,7 +111,7 @@
|
|
92
111
|
//
|
93
112
|
// LTS releases can be obtained from
|
94
113
|
// https://github.com/abseil/abseil-cpp/releases.
|
95
|
-
#define ABSL_LTS_RELEASE_VERSION
|
114
|
+
#define ABSL_LTS_RELEASE_VERSION 20220623
|
96
115
|
#define ABSL_LTS_RELEASE_PATCH_LEVEL 0
|
97
116
|
|
98
117
|
// Helper macro to convert a CPP variable to a string literal.
|
@@ -183,12 +202,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
183
202
|
#define ABSL_HAVE_BUILTIN(x) 0
|
184
203
|
#endif
|
185
204
|
|
186
|
-
#if defined(__is_identifier)
|
187
|
-
#define ABSL_INTERNAL_HAS_KEYWORD(x) !(__is_identifier(x))
|
188
|
-
#else
|
189
|
-
#define ABSL_INTERNAL_HAS_KEYWORD(x) 0
|
190
|
-
#endif
|
191
|
-
|
192
205
|
#ifdef __has_feature
|
193
206
|
#define ABSL_HAVE_FEATURE(f) __has_feature(f)
|
194
207
|
#else
|
@@ -212,11 +225,12 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
212
225
|
#endif
|
213
226
|
|
214
227
|
// ABSL_HAVE_TLS is defined to 1 when __thread should be supported.
|
215
|
-
// We assume __thread is supported on Linux when compiled with Clang or
|
216
|
-
// against libstdc++ with _GLIBCXX_HAVE_TLS defined.
|
228
|
+
// We assume __thread is supported on Linux or Asylo when compiled with Clang or
|
229
|
+
// compiled against libstdc++ with _GLIBCXX_HAVE_TLS defined.
|
217
230
|
#ifdef ABSL_HAVE_TLS
|
218
231
|
#error ABSL_HAVE_TLS cannot be directly set
|
219
|
-
#elif defined(__linux__)
|
232
|
+
#elif (defined(__linux__) || defined(__ASYLO__)) && \
|
233
|
+
(defined(__clang__) || defined(_GLIBCXX_HAVE_TLS))
|
220
234
|
#define ABSL_HAVE_TLS 1
|
221
235
|
#endif
|
222
236
|
|
@@ -259,19 +273,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
259
273
|
#define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1
|
260
274
|
#endif
|
261
275
|
|
262
|
-
// ABSL_HAVE_SOURCE_LOCATION_CURRENT
|
263
|
-
//
|
264
|
-
// Indicates whether `absl::SourceLocation::current()` will return useful
|
265
|
-
// information in some contexts.
|
266
|
-
#ifndef ABSL_HAVE_SOURCE_LOCATION_CURRENT
|
267
|
-
#if ABSL_INTERNAL_HAS_KEYWORD(__builtin_LINE) && \
|
268
|
-
ABSL_INTERNAL_HAS_KEYWORD(__builtin_FILE)
|
269
|
-
#define ABSL_HAVE_SOURCE_LOCATION_CURRENT 1
|
270
|
-
#elif ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(5, 0)
|
271
|
-
#define ABSL_HAVE_SOURCE_LOCATION_CURRENT 1
|
272
|
-
#endif
|
273
|
-
#endif
|
274
|
-
|
275
276
|
// ABSL_HAVE_THREAD_LOCAL
|
276
277
|
//
|
277
278
|
// Checks whether C++11's `thread_local` storage duration specifier is
|
@@ -414,7 +415,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
414
415
|
defined(_AIX) || defined(__ros__) || defined(__native_client__) || \
|
415
416
|
defined(__asmjs__) || defined(__wasm__) || defined(__Fuchsia__) || \
|
416
417
|
defined(__sun) || defined(__ASYLO__) || defined(__myriad2__) || \
|
417
|
-
defined(__HAIKU__)
|
418
|
+
defined(__HAIKU__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
|
419
|
+
defined(__QNX__)
|
418
420
|
#define ABSL_HAVE_MMAP 1
|
419
421
|
#endif
|
420
422
|
|
@@ -425,7 +427,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
425
427
|
#ifdef ABSL_HAVE_PTHREAD_GETSCHEDPARAM
|
426
428
|
#error ABSL_HAVE_PTHREAD_GETSCHEDPARAM cannot be directly set
|
427
429
|
#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
|
428
|
-
defined(_AIX) || defined(__ros__)
|
430
|
+
defined(_AIX) || defined(__ros__) || defined(__OpenBSD__) || \
|
431
|
+
defined(__NetBSD__)
|
429
432
|
#define ABSL_HAVE_PTHREAD_GETSCHEDPARAM 1
|
430
433
|
#endif
|
431
434
|
|
@@ -520,22 +523,41 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
520
523
|
#error "absl endian detection needs to be set up for your compiler"
|
521
524
|
#endif
|
522
525
|
|
523
|
-
// macOS 10.13 and iOS
|
524
|
-
// even though the headers exist and are publicly noted to work
|
525
|
-
//
|
526
|
+
// macOS < 10.13 and iOS < 11 don't let you use <any>, <optional>, or <variant>
|
527
|
+
// even though the headers exist and are publicly noted to work, because the
|
528
|
+
// libc++ shared library shipped on the system doesn't have the requisite
|
529
|
+
// exported symbols. See https://github.com/abseil/abseil-cpp/issues/207 and
|
526
530
|
// https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes
|
531
|
+
//
|
527
532
|
// libc++ spells out the availability requirements in the file
|
528
533
|
// llvm-project/libcxx/include/__config via the #define
|
529
534
|
// _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS.
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
535
|
+
//
|
536
|
+
// Unfortunately, Apple initially mis-stated the requirements as macOS < 10.14
|
537
|
+
// and iOS < 12 in the libc++ headers. This was corrected by
|
538
|
+
// https://github.com/llvm/llvm-project/commit/7fb40e1569dd66292b647f4501b85517e9247953
|
539
|
+
// which subsequently made it into the XCode 12.5 release. We need to match the
|
540
|
+
// old (incorrect) conditions when built with old XCode, but can use the
|
541
|
+
// corrected earlier versions with new XCode.
|
542
|
+
#if defined(__APPLE__) && defined(_LIBCPP_VERSION) && \
|
543
|
+
((_LIBCPP_VERSION >= 11000 && /* XCode 12.5 or later: */ \
|
544
|
+
((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
|
545
|
+
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101300) || \
|
546
|
+
(defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
|
547
|
+
__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 110000) || \
|
548
|
+
(defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
|
549
|
+
__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 40000) || \
|
550
|
+
(defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
|
551
|
+
__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 110000))) || \
|
552
|
+
(_LIBCPP_VERSION < 11000 && /* Pre-XCode 12.5: */ \
|
553
|
+
((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
|
554
|
+
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101400) || \
|
555
|
+
(defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
|
556
|
+
__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \
|
557
|
+
(defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
|
558
|
+
__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) || \
|
559
|
+
(defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
|
560
|
+
__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000))))
|
539
561
|
#define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 1
|
540
562
|
#else
|
541
563
|
#define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 0
|
@@ -705,8 +727,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
705
727
|
#endif
|
706
728
|
#endif
|
707
729
|
|
708
|
-
#undef ABSL_INTERNAL_HAS_KEYWORD
|
709
|
-
|
710
730
|
// ABSL_DLL
|
711
731
|
//
|
712
732
|
// When building Abseil as a DLL, this macro expands to `__declspec(dllexport)`
|
@@ -732,8 +752,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
732
752
|
// a compiler instrumentation module and a run-time library.
|
733
753
|
#ifdef ABSL_HAVE_MEMORY_SANITIZER
|
734
754
|
#error "ABSL_HAVE_MEMORY_SANITIZER cannot be directly set."
|
735
|
-
#elif defined(__SANITIZE_MEMORY__)
|
736
|
-
#define ABSL_HAVE_MEMORY_SANITIZER 1
|
737
755
|
#elif !defined(__native_client__) && ABSL_HAVE_FEATURE(memory_sanitizer)
|
738
756
|
#define ABSL_HAVE_MEMORY_SANITIZER 1
|
739
757
|
#endif
|
@@ -760,6 +778,45 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
760
778
|
#define ABSL_HAVE_ADDRESS_SANITIZER 1
|
761
779
|
#endif
|
762
780
|
|
781
|
+
// ABSL_HAVE_HWADDRESS_SANITIZER
|
782
|
+
//
|
783
|
+
// Hardware-Assisted AddressSanitizer (or HWASAN) is even faster than asan
|
784
|
+
// memory error detector which can use CPU features like ARM TBI, Intel LAM or
|
785
|
+
// AMD UAI.
|
786
|
+
#ifdef ABSL_HAVE_HWADDRESS_SANITIZER
|
787
|
+
#error "ABSL_HAVE_HWADDRESS_SANITIZER cannot be directly set."
|
788
|
+
#elif defined(__SANITIZE_HWADDRESS__)
|
789
|
+
#define ABSL_HAVE_HWADDRESS_SANITIZER 1
|
790
|
+
#elif ABSL_HAVE_FEATURE(hwaddress_sanitizer)
|
791
|
+
#define ABSL_HAVE_HWADDRESS_SANITIZER 1
|
792
|
+
#endif
|
793
|
+
|
794
|
+
// ABSL_HAVE_LEAK_SANITIZER
|
795
|
+
//
|
796
|
+
// LeakSanitizer (or lsan) is a detector of memory leaks.
|
797
|
+
// https://clang.llvm.org/docs/LeakSanitizer.html
|
798
|
+
// https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer
|
799
|
+
//
|
800
|
+
// The macro ABSL_HAVE_LEAK_SANITIZER can be used to detect at compile-time
|
801
|
+
// whether the LeakSanitizer is potentially available. However, just because the
|
802
|
+
// LeakSanitizer is available does not mean it is active. Use the
|
803
|
+
// always-available run-time interface in //absl/debugging/leak_check.h for
|
804
|
+
// interacting with LeakSanitizer.
|
805
|
+
#ifdef ABSL_HAVE_LEAK_SANITIZER
|
806
|
+
#error "ABSL_HAVE_LEAK_SANITIZER cannot be directly set."
|
807
|
+
#elif defined(LEAK_SANITIZER)
|
808
|
+
// GCC provides no method for detecting the presense of the standalone
|
809
|
+
// LeakSanitizer (-fsanitize=leak), so GCC users of -fsanitize=leak should also
|
810
|
+
// use -DLEAK_SANITIZER.
|
811
|
+
#define ABSL_HAVE_LEAK_SANITIZER 1
|
812
|
+
// Clang standalone LeakSanitizer (-fsanitize=leak)
|
813
|
+
#elif ABSL_HAVE_FEATURE(leak_sanitizer)
|
814
|
+
#define ABSL_HAVE_LEAK_SANITIZER 1
|
815
|
+
#elif defined(ABSL_HAVE_ADDRESS_SANITIZER)
|
816
|
+
// GCC or Clang using the LeakSanitizer integrated into AddressSanitizer.
|
817
|
+
#define ABSL_HAVE_LEAK_SANITIZER 1
|
818
|
+
#endif
|
819
|
+
|
763
820
|
// ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION
|
764
821
|
//
|
765
822
|
// Class template argument deduction is a language feature added in C++17.
|
@@ -769,4 +826,88 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
769
826
|
#define ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION 1
|
770
827
|
#endif
|
771
828
|
|
829
|
+
// ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
830
|
+
//
|
831
|
+
// Prior to C++17, static constexpr variables defined in classes required a
|
832
|
+
// separate definition outside of the class body, for example:
|
833
|
+
//
|
834
|
+
// class Foo {
|
835
|
+
// static constexpr int kBar = 0;
|
836
|
+
// };
|
837
|
+
// constexpr int Foo::kBar;
|
838
|
+
//
|
839
|
+
// In C++17, these variables defined in classes are considered inline variables,
|
840
|
+
// and the extra declaration is redundant. Since some compilers warn on the
|
841
|
+
// extra declarations, ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL can be used
|
842
|
+
// conditionally ignore them:
|
843
|
+
//
|
844
|
+
// #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
845
|
+
// constexpr int Foo::kBar;
|
846
|
+
// #endif
|
847
|
+
#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
|
848
|
+
ABSL_INTERNAL_CPLUSPLUS_LANG < 201703L
|
849
|
+
#define ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL 1
|
850
|
+
#endif
|
851
|
+
|
852
|
+
// `ABSL_INTERNAL_HAS_RTTI` determines whether abseil is being compiled with
|
853
|
+
// RTTI support.
|
854
|
+
#ifdef ABSL_INTERNAL_HAS_RTTI
|
855
|
+
#error ABSL_INTERNAL_HAS_RTTI cannot be directly set
|
856
|
+
#elif !defined(__GNUC__) || defined(__GXX_RTTI)
|
857
|
+
#define ABSL_INTERNAL_HAS_RTTI 1
|
858
|
+
#endif // !defined(__GNUC__) || defined(__GXX_RTTI)
|
859
|
+
|
860
|
+
// ABSL_INTERNAL_HAVE_SSE is used for compile-time detection of SSE support.
|
861
|
+
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
|
862
|
+
// which architectures support the various x86 instruction sets.
|
863
|
+
#ifdef ABSL_INTERNAL_HAVE_SSE
|
864
|
+
#error ABSL_INTERNAL_HAVE_SSE cannot be directly set
|
865
|
+
#elif defined(__SSE__)
|
866
|
+
#define ABSL_INTERNAL_HAVE_SSE 1
|
867
|
+
#elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1)
|
868
|
+
// MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 1
|
869
|
+
// indicates that at least SSE was targeted with the /arch:SSE option.
|
870
|
+
// All x86-64 processors support SSE, so support can be assumed.
|
871
|
+
// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
872
|
+
#define ABSL_INTERNAL_HAVE_SSE 1
|
873
|
+
#endif
|
874
|
+
|
875
|
+
// ABSL_INTERNAL_HAVE_SSE2 is used for compile-time detection of SSE2 support.
|
876
|
+
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
|
877
|
+
// which architectures support the various x86 instruction sets.
|
878
|
+
#ifdef ABSL_INTERNAL_HAVE_SSE2
|
879
|
+
#error ABSL_INTERNAL_HAVE_SSE2 cannot be directly set
|
880
|
+
#elif defined(__SSE2__)
|
881
|
+
#define ABSL_INTERNAL_HAVE_SSE2 1
|
882
|
+
#elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
883
|
+
// MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 2
|
884
|
+
// indicates that at least SSE2 was targeted with the /arch:SSE2 option.
|
885
|
+
// All x86-64 processors support SSE2, so support can be assumed.
|
886
|
+
// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
887
|
+
#define ABSL_INTERNAL_HAVE_SSE2 1
|
888
|
+
#endif
|
889
|
+
|
890
|
+
// ABSL_INTERNAL_HAVE_SSSE3 is used for compile-time detection of SSSE3 support.
|
891
|
+
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
|
892
|
+
// which architectures support the various x86 instruction sets.
|
893
|
+
//
|
894
|
+
// MSVC does not have a mode that targets SSSE3 at compile-time. To use SSSE3
|
895
|
+
// with MSVC requires either assuming that the code will only every run on CPUs
|
896
|
+
// that support SSSE3, otherwise __cpuid() can be used to detect support at
|
897
|
+
// runtime and fallback to a non-SSSE3 implementation when SSSE3 is unsupported
|
898
|
+
// by the CPU.
|
899
|
+
#ifdef ABSL_INTERNAL_HAVE_SSSE3
|
900
|
+
#error ABSL_INTERNAL_HAVE_SSSE3 cannot be directly set
|
901
|
+
#elif defined(__SSSE3__)
|
902
|
+
#define ABSL_INTERNAL_HAVE_SSSE3 1
|
903
|
+
#endif
|
904
|
+
|
905
|
+
// ABSL_INTERNAL_HAVE_ARM_NEON is used for compile-time detection of NEON (ARM
|
906
|
+
// SIMD).
|
907
|
+
#ifdef ABSL_INTERNAL_HAVE_ARM_NEON
|
908
|
+
#error ABSL_INTERNAL_HAVE_ARM_NEON cannot be directly set
|
909
|
+
#elif defined(__ARM_NEON)
|
910
|
+
#define ABSL_INTERNAL_HAVE_ARM_NEON 1
|
911
|
+
#endif
|
912
|
+
|
772
913
|
#endif // ABSL_BASE_CONFIG_H_
|
@@ -25,6 +25,8 @@
|
|
25
25
|
#include <atomic>
|
26
26
|
#include <chrono> // NOLINT(build/c++11)
|
27
27
|
|
28
|
+
#include "absl/base/attributes.h"
|
29
|
+
#include "absl/base/config.h"
|
28
30
|
#include "absl/base/internal/unscaledcycleclock.h"
|
29
31
|
|
30
32
|
namespace absl {
|
@@ -33,44 +35,20 @@ namespace base_internal {
|
|
33
35
|
|
34
36
|
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
35
37
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
#ifdef ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY
|
40
|
-
// Not debug mode and the UnscaledCycleClock frequency is the CPU
|
41
|
-
// frequency. Scale the CycleClock to prevent overflow if someone
|
42
|
-
// tries to represent the time as cycles since the Unix epoch.
|
43
|
-
static constexpr int32_t kShift = 1;
|
44
|
-
#else
|
45
|
-
// Not debug mode and the UnscaledCycleClock isn't operating at the
|
46
|
-
// raw CPU frequency. There is no need to do any scaling, so don't
|
47
|
-
// needlessly sacrifice precision.
|
48
|
-
static constexpr int32_t kShift = 0;
|
49
|
-
#endif
|
50
|
-
#else
|
51
|
-
// In debug mode use a different shift to discourage depending on a
|
52
|
-
// particular shift value.
|
53
|
-
static constexpr int32_t kShift = 2;
|
38
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
39
|
+
constexpr int32_t CycleClock::kShift;
|
40
|
+
constexpr double CycleClock::kFrequencyScale;
|
54
41
|
#endif
|
55
42
|
|
56
|
-
|
57
|
-
|
43
|
+
ABSL_CONST_INIT std::atomic<CycleClockSourceFunc>
|
44
|
+
CycleClock::cycle_clock_source_{nullptr};
|
58
45
|
|
59
|
-
CycleClockSourceFunc
|
60
|
-
//
|
61
|
-
|
62
|
-
if (cycle_clock_source.load(std::memory_order_relaxed) == nullptr) {
|
63
|
-
return nullptr;
|
64
|
-
}
|
65
|
-
// This corresponds to the store(std::memory_order_release) in
|
66
|
-
// CycleClockSource::Register, and makes sure that any updates made prior to
|
67
|
-
// registering the callback are visible to this thread before the callback is
|
68
|
-
// invoked.
|
69
|
-
return cycle_clock_source.load(std::memory_order_acquire);
|
46
|
+
void CycleClockSource::Register(CycleClockSourceFunc source) {
|
47
|
+
// Corresponds to the load(std::memory_order_acquire) in LoadCycleClockSource.
|
48
|
+
CycleClock::cycle_clock_source_.store(source, std::memory_order_release);
|
70
49
|
}
|
71
50
|
|
72
|
-
|
73
|
-
|
51
|
+
#ifdef _WIN32
|
74
52
|
int64_t CycleClock::Now() {
|
75
53
|
auto fn = LoadCycleClockSource();
|
76
54
|
if (fn == nullptr) {
|
@@ -78,15 +56,7 @@ int64_t CycleClock::Now() {
|
|
78
56
|
}
|
79
57
|
return fn() >> kShift;
|
80
58
|
}
|
81
|
-
|
82
|
-
double CycleClock::Frequency() {
|
83
|
-
return kFrequencyScale * base_internal::UnscaledCycleClock::Frequency();
|
84
|
-
}
|
85
|
-
|
86
|
-
void CycleClockSource::Register(CycleClockSourceFunc source) {
|
87
|
-
// Corresponds to the load(std::memory_order_acquire) in LoadCycleClockSource.
|
88
|
-
cycle_clock_source.store(source, std::memory_order_release);
|
89
|
-
}
|
59
|
+
#endif
|
90
60
|
|
91
61
|
#else
|
92
62
|
|
@@ -42,14 +42,19 @@
|
|
42
42
|
#ifndef ABSL_BASE_INTERNAL_CYCLECLOCK_H_
|
43
43
|
#define ABSL_BASE_INTERNAL_CYCLECLOCK_H_
|
44
44
|
|
45
|
+
#include <atomic>
|
45
46
|
#include <cstdint>
|
46
47
|
|
48
|
+
#include "absl/base/attributes.h"
|
47
49
|
#include "absl/base/config.h"
|
50
|
+
#include "absl/base/internal/unscaledcycleclock.h"
|
48
51
|
|
49
52
|
namespace absl {
|
50
53
|
ABSL_NAMESPACE_BEGIN
|
51
54
|
namespace base_internal {
|
52
55
|
|
56
|
+
using CycleClockSourceFunc = int64_t (*)();
|
57
|
+
|
53
58
|
// -----------------------------------------------------------------------------
|
54
59
|
// CycleClock
|
55
60
|
// -----------------------------------------------------------------------------
|
@@ -68,12 +73,37 @@ class CycleClock {
|
|
68
73
|
static double Frequency();
|
69
74
|
|
70
75
|
private:
|
76
|
+
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
77
|
+
static CycleClockSourceFunc LoadCycleClockSource();
|
78
|
+
|
79
|
+
#ifdef NDEBUG
|
80
|
+
#ifdef ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY
|
81
|
+
// Not debug mode and the UnscaledCycleClock frequency is the CPU
|
82
|
+
// frequency. Scale the CycleClock to prevent overflow if someone
|
83
|
+
// tries to represent the time as cycles since the Unix epoch.
|
84
|
+
static constexpr int32_t kShift = 1;
|
85
|
+
#else
|
86
|
+
// Not debug mode and the UnscaledCycleClock isn't operating at the
|
87
|
+
// raw CPU frequency. There is no need to do any scaling, so don't
|
88
|
+
// needlessly sacrifice precision.
|
89
|
+
static constexpr int32_t kShift = 0;
|
90
|
+
#endif
|
91
|
+
#else // NDEBUG
|
92
|
+
// In debug mode use a different shift to discourage depending on a
|
93
|
+
// particular shift value.
|
94
|
+
static constexpr int32_t kShift = 2;
|
95
|
+
#endif // NDEBUG
|
96
|
+
|
97
|
+
static constexpr double kFrequencyScale = 1.0 / (1 << kShift);
|
98
|
+
ABSL_CONST_INIT static std::atomic<CycleClockSourceFunc> cycle_clock_source_;
|
99
|
+
#endif // ABSL_USE_UNSCALED_CYCLECLOC
|
100
|
+
|
71
101
|
CycleClock() = delete; // no instances
|
72
102
|
CycleClock(const CycleClock&) = delete;
|
73
103
|
CycleClock& operator=(const CycleClock&) = delete;
|
74
|
-
};
|
75
104
|
|
76
|
-
|
105
|
+
friend class CycleClockSource;
|
106
|
+
};
|
77
107
|
|
78
108
|
class CycleClockSource {
|
79
109
|
private:
|
@@ -87,6 +117,41 @@ class CycleClockSource {
|
|
87
117
|
static void Register(CycleClockSourceFunc source);
|
88
118
|
};
|
89
119
|
|
120
|
+
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
121
|
+
|
122
|
+
inline CycleClockSourceFunc CycleClock::LoadCycleClockSource() {
|
123
|
+
#if !defined(__x86_64__)
|
124
|
+
// Optimize for the common case (no callback) by first doing a relaxed load;
|
125
|
+
// this is significantly faster on non-x86 platforms.
|
126
|
+
if (cycle_clock_source_.load(std::memory_order_relaxed) == nullptr) {
|
127
|
+
return nullptr;
|
128
|
+
}
|
129
|
+
#endif // !defined(__x86_64__)
|
130
|
+
|
131
|
+
// This corresponds to the store(std::memory_order_release) in
|
132
|
+
// CycleClockSource::Register, and makes sure that any updates made prior to
|
133
|
+
// registering the callback are visible to this thread before the callback
|
134
|
+
// is invoked.
|
135
|
+
return cycle_clock_source_.load(std::memory_order_acquire);
|
136
|
+
}
|
137
|
+
|
138
|
+
// Accessing globals in inlined code in Window DLLs is problematic.
|
139
|
+
#ifndef _WIN32
|
140
|
+
inline int64_t CycleClock::Now() {
|
141
|
+
auto fn = LoadCycleClockSource();
|
142
|
+
if (fn == nullptr) {
|
143
|
+
return base_internal::UnscaledCycleClock::Now() >> kShift;
|
144
|
+
}
|
145
|
+
return fn() >> kShift;
|
146
|
+
}
|
147
|
+
#endif
|
148
|
+
|
149
|
+
inline double CycleClock::Frequency() {
|
150
|
+
return kFrequencyScale * base_internal::UnscaledCycleClock::Frequency();
|
151
|
+
}
|
152
|
+
|
153
|
+
#endif // ABSL_USE_UNSCALED_CYCLECLOCK
|
154
|
+
|
90
155
|
} // namespace base_internal
|
91
156
|
ABSL_NAMESPACE_END
|
92
157
|
} // namespace absl
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
#include "absl/base/config.h"
|
22
22
|
|
23
|
-
#
|
23
|
+
#ifdef ABSL_HAVE_MMAP
|
24
24
|
|
25
25
|
#include <sys/mman.h>
|
26
26
|
|
@@ -41,13 +41,13 @@
|
|
41
41
|
|
42
42
|
#ifdef __mips__
|
43
43
|
// Include definitions of the ABI currently in use.
|
44
|
-
#
|
44
|
+
#if defined(__BIONIC__) || !defined(__GLIBC__)
|
45
45
|
// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
|
46
46
|
// definitions we need.
|
47
47
|
#include <asm/sgidefs.h>
|
48
48
|
#else
|
49
49
|
#include <sgidefs.h>
|
50
|
-
#endif // __BIONIC__
|
50
|
+
#endif // __BIONIC__ || !__GLIBC__
|
51
51
|
#endif // __mips__
|
52
52
|
|
53
53
|
// SYS_mmap and SYS_munmap are not defined in Android.
|
@@ -16,16 +16,9 @@
|
|
16
16
|
#ifndef ABSL_BASE_INTERNAL_ENDIAN_H_
|
17
17
|
#define ABSL_BASE_INTERNAL_ENDIAN_H_
|
18
18
|
|
19
|
-
// The following guarantees declaration of the byte swap functions
|
20
|
-
#ifdef _MSC_VER
|
21
|
-
#include <stdlib.h> // NOLINT(build/include)
|
22
|
-
#elif defined(__FreeBSD__)
|
23
|
-
#include <sys/endian.h>
|
24
|
-
#elif defined(__GLIBC__)
|
25
|
-
#include <byteswap.h> // IWYU pragma: export
|
26
|
-
#endif
|
27
|
-
|
28
19
|
#include <cstdint>
|
20
|
+
#include <cstdlib>
|
21
|
+
|
29
22
|
#include "absl/base/casts.h"
|
30
23
|
#include "absl/base/config.h"
|
31
24
|
#include "absl/base/internal/unaligned_access.h"
|
@@ -34,47 +27,11 @@
|
|
34
27
|
namespace absl {
|
35
28
|
ABSL_NAMESPACE_BEGIN
|
36
29
|
|
37
|
-
// Use compiler byte-swapping intrinsics if they are available. 32-bit
|
38
|
-
// and 64-bit versions are available in Clang and GCC as of GCC 4.3.0.
|
39
|
-
// The 16-bit version is available in Clang and GCC only as of GCC 4.8.0.
|
40
|
-
// For simplicity, we enable them all only for GCC 4.8.0 or later.
|
41
|
-
#if defined(__clang__) || \
|
42
|
-
(defined(__GNUC__) && \
|
43
|
-
((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ >= 5))
|
44
30
|
inline uint64_t gbswap_64(uint64_t host_int) {
|
31
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bswap64) || defined(__GNUC__)
|
45
32
|
return __builtin_bswap64(host_int);
|
46
|
-
}
|
47
|
-
inline uint32_t gbswap_32(uint32_t host_int) {
|
48
|
-
return __builtin_bswap32(host_int);
|
49
|
-
}
|
50
|
-
inline uint16_t gbswap_16(uint16_t host_int) {
|
51
|
-
return __builtin_bswap16(host_int);
|
52
|
-
}
|
53
|
-
|
54
33
|
#elif defined(_MSC_VER)
|
55
|
-
inline uint64_t gbswap_64(uint64_t host_int) {
|
56
34
|
return _byteswap_uint64(host_int);
|
57
|
-
}
|
58
|
-
inline uint32_t gbswap_32(uint32_t host_int) {
|
59
|
-
return _byteswap_ulong(host_int);
|
60
|
-
}
|
61
|
-
inline uint16_t gbswap_16(uint16_t host_int) {
|
62
|
-
return _byteswap_ushort(host_int);
|
63
|
-
}
|
64
|
-
|
65
|
-
#else
|
66
|
-
inline uint64_t gbswap_64(uint64_t host_int) {
|
67
|
-
#if defined(__GNUC__) && defined(__x86_64__) && !defined(__APPLE__)
|
68
|
-
// Adapted from /usr/include/byteswap.h. Not available on Mac.
|
69
|
-
if (__builtin_constant_p(host_int)) {
|
70
|
-
return __bswap_constant_64(host_int);
|
71
|
-
} else {
|
72
|
-
uint64_t result;
|
73
|
-
__asm__("bswap %0" : "=r"(result) : "0"(host_int));
|
74
|
-
return result;
|
75
|
-
}
|
76
|
-
#elif defined(__GLIBC__)
|
77
|
-
return bswap_64(host_int);
|
78
35
|
#else
|
79
36
|
return (((host_int & uint64_t{0xFF}) << 56) |
|
80
37
|
((host_int & uint64_t{0xFF00}) << 40) |
|
@@ -84,12 +41,14 @@ inline uint64_t gbswap_64(uint64_t host_int) {
|
|
84
41
|
((host_int & uint64_t{0xFF0000000000}) >> 24) |
|
85
42
|
((host_int & uint64_t{0xFF000000000000}) >> 40) |
|
86
43
|
((host_int & uint64_t{0xFF00000000000000}) >> 56));
|
87
|
-
#endif
|
44
|
+
#endif
|
88
45
|
}
|
89
46
|
|
90
47
|
inline uint32_t gbswap_32(uint32_t host_int) {
|
91
|
-
#if defined(
|
92
|
-
return
|
48
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bswap32) || defined(__GNUC__)
|
49
|
+
return __builtin_bswap32(host_int);
|
50
|
+
#elif defined(_MSC_VER)
|
51
|
+
return _byteswap_ulong(host_int);
|
93
52
|
#else
|
94
53
|
return (((host_int & uint32_t{0xFF}) << 24) |
|
95
54
|
((host_int & uint32_t{0xFF00}) << 8) |
|
@@ -99,33 +58,29 @@ inline uint32_t gbswap_32(uint32_t host_int) {
|
|
99
58
|
}
|
100
59
|
|
101
60
|
inline uint16_t gbswap_16(uint16_t host_int) {
|
102
|
-
#if defined(
|
103
|
-
return
|
61
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bswap16) || defined(__GNUC__)
|
62
|
+
return __builtin_bswap16(host_int);
|
63
|
+
#elif defined(_MSC_VER)
|
64
|
+
return _byteswap_ushort(host_int);
|
104
65
|
#else
|
105
66
|
return (((host_int & uint16_t{0xFF}) << 8) |
|
106
67
|
((host_int & uint16_t{0xFF00}) >> 8));
|
107
68
|
#endif
|
108
69
|
}
|
109
70
|
|
110
|
-
#endif // intrinsics available
|
111
|
-
|
112
71
|
#ifdef ABSL_IS_LITTLE_ENDIAN
|
113
72
|
|
114
|
-
//
|
115
|
-
//
|
116
|
-
// than just #defining them because in debug mode, gcc doesn't
|
117
|
-
// correctly handle the (rather involved) definitions of bswap_32.
|
118
|
-
// gcc guarantees that inline functions are as fast as macros, so
|
119
|
-
// this isn't a performance hit.
|
73
|
+
// Portable definitions for htonl (host-to-network) and friends on little-endian
|
74
|
+
// architectures.
|
120
75
|
inline uint16_t ghtons(uint16_t x) { return gbswap_16(x); }
|
121
76
|
inline uint32_t ghtonl(uint32_t x) { return gbswap_32(x); }
|
122
77
|
inline uint64_t ghtonll(uint64_t x) { return gbswap_64(x); }
|
123
78
|
|
124
79
|
#elif defined ABSL_IS_BIG_ENDIAN
|
125
80
|
|
126
|
-
//
|
127
|
-
// These are
|
128
|
-
//
|
81
|
+
// Portable definitions for htonl (host-to-network) etc on big-endian
|
82
|
+
// architectures. These definitions are simpler since the host byte order is the
|
83
|
+
// same as network byte order.
|
129
84
|
inline uint16_t ghtons(uint16_t x) { return x; }
|
130
85
|
inline uint32_t ghtonl(uint32_t x) { return x; }
|
131
86
|
inline uint64_t ghtonll(uint64_t x) { return x; }
|
@@ -28,8 +28,10 @@ struct FastTypeTag {
|
|
28
28
|
constexpr static char dummy_var = 0;
|
29
29
|
};
|
30
30
|
|
31
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
31
32
|
template <typename Type>
|
32
33
|
constexpr char FastTypeTag<Type>::dummy_var;
|
34
|
+
#endif
|
33
35
|
|
34
36
|
// FastTypeId<Type>() evaluates at compile/link-time to a unique pointer for the
|
35
37
|
// passed-in type. These are meant to be good match for keys into maps or
|