grpc 1.30.0 → 1.31.1
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 +560 -619
- data/include/grpc/grpc_security.h +8 -0
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json_reader.cc +20 -21
- data/src/core/lib/security/credentials/credentials.h +5 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +108 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +90 -30
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -21,6 +21,7 @@
|
|
21
21
|
* This file is private and must not be included by users!
|
22
22
|
*/
|
23
23
|
#include <stdint.h>
|
24
|
+
#include <stddef.h>
|
24
25
|
|
25
26
|
#if UINTPTR_MAX == 0xffffffff
|
26
27
|
#define UPB_SIZE(size32, size64) size32
|
@@ -28,17 +29,21 @@
|
|
28
29
|
#define UPB_SIZE(size32, size64) size64
|
29
30
|
#endif
|
30
31
|
|
31
|
-
|
32
|
-
|
32
|
+
/* If we always read/write as a consistent type to each address, this shouldn't
|
33
|
+
* violate aliasing.
|
34
|
+
*/
|
35
|
+
#define UPB_PTR_AT(msg, ofs, type) ((type*)((char*)(msg) + (ofs)))
|
33
36
|
|
34
37
|
#define UPB_READ_ONEOF(msg, fieldtype, offset, case_offset, case_val, default) \
|
35
|
-
|
36
|
-
?
|
38
|
+
*UPB_PTR_AT(msg, case_offset, int) == case_val \
|
39
|
+
? *UPB_PTR_AT(msg, offset, fieldtype) \
|
37
40
|
: default
|
38
41
|
|
39
42
|
#define UPB_WRITE_ONEOF(msg, fieldtype, offset, value, case_offset, case_val) \
|
40
|
-
|
41
|
-
|
43
|
+
*UPB_PTR_AT(msg, case_offset, int) = case_val; \
|
44
|
+
*UPB_PTR_AT(msg, offset, fieldtype) = value;
|
45
|
+
|
46
|
+
#define UPB_MAPTYPE_STRING 0
|
42
47
|
|
43
48
|
/* UPB_INLINE: inline if possible, emit standalone code if required. */
|
44
49
|
#ifdef __cplusplus
|
@@ -49,6 +54,11 @@
|
|
49
54
|
#define UPB_INLINE static
|
50
55
|
#endif
|
51
56
|
|
57
|
+
#define UPB_ALIGN_UP(size, align) (((size) + (align) - 1) / (align) * (align))
|
58
|
+
#define UPB_ALIGN_DOWN(size, align) ((size) / (align) * (align))
|
59
|
+
#define UPB_ALIGN_MALLOC(size) UPB_ALIGN_UP(size, 16)
|
60
|
+
#define UPB_ALIGN_OF(type) offsetof (struct { char c; type member; }, member)
|
61
|
+
|
52
62
|
/* Hints to the compiler about likely/unlikely branches. */
|
53
63
|
#if defined (__GNUC__) || defined(__clang__)
|
54
64
|
#define UPB_LIKELY(x) __builtin_expect((x),1)
|
@@ -123,6 +133,20 @@ int msvc_vsnprintf(char* s, size_t n, const char* format, va_list arg);
|
|
123
133
|
|
124
134
|
#define UPB_UNUSED(var) (void)var
|
125
135
|
|
136
|
+
/* UPB_ASSUME(): in release mode, we tell the compiler to assume this is true.
|
137
|
+
*/
|
138
|
+
#ifdef NDEBUG
|
139
|
+
#ifdef __GNUC__
|
140
|
+
#define UPB_ASSUME(expr) if (!(expr)) __builtin_unreachable()
|
141
|
+
#elif defined _MSC_VER
|
142
|
+
#define UPB_ASSUME(expr) if (!(expr)) __assume(0)
|
143
|
+
#else
|
144
|
+
#define UPB_ASSUME(expr) do {} if (false && (expr))
|
145
|
+
#endif
|
146
|
+
#else
|
147
|
+
#define UPB_ASSUME(expr) assert(expr)
|
148
|
+
#endif
|
149
|
+
|
126
150
|
/* UPB_ASSERT(): in release mode, we use the expression without letting it be
|
127
151
|
* evaluated. This prevents "unused variable" warnings. */
|
128
152
|
#ifdef NDEBUG
|
@@ -148,3 +172,8 @@ int msvc_vsnprintf(char* s, size_t n, const char* format, va_list arg);
|
|
148
172
|
#else
|
149
173
|
#define UPB_INFINITY (1.0 / 0.0)
|
150
174
|
#endif
|
175
|
+
#ifdef NAN
|
176
|
+
#define UPB_NAN NAN
|
177
|
+
#else
|
178
|
+
#define UPB_NAN (0.0 / 0.0)
|
179
|
+
#endif
|
@@ -1,20 +1,27 @@
|
|
1
1
|
/* See port_def.inc. This should #undef all macros #defined there. */
|
2
2
|
|
3
|
+
#undef UPB_MAPTYPE_STRING
|
3
4
|
#undef UPB_SIZE
|
4
|
-
#undef
|
5
|
+
#undef UPB_PTR_AT
|
5
6
|
#undef UPB_READ_ONEOF
|
6
7
|
#undef UPB_WRITE_ONEOF
|
7
8
|
#undef UPB_INLINE
|
9
|
+
#undef UPB_ALIGN_UP
|
10
|
+
#undef UPB_ALIGN_DOWN
|
11
|
+
#undef UPB_ALIGN_MALLOC
|
12
|
+
#undef UPB_ALIGN_OF
|
8
13
|
#undef UPB_FORCEINLINE
|
9
14
|
#undef UPB_NOINLINE
|
10
15
|
#undef UPB_NORETURN
|
11
16
|
#undef UPB_MAX
|
12
17
|
#undef UPB_MIN
|
13
18
|
#undef UPB_UNUSED
|
19
|
+
#undef UPB_ASSUME
|
14
20
|
#undef UPB_ASSERT
|
15
21
|
#undef UPB_ASSERT_DEBUGVAR
|
16
22
|
#undef UPB_UNREACHABLE
|
17
23
|
#undef UPB_INFINITY
|
24
|
+
#undef UPB_NAN
|
18
25
|
#undef UPB_MSVC_VSNPRINTF
|
19
26
|
#undef _upb_snprintf
|
20
27
|
#undef _upb_vsnprintf
|
data/third_party/upb/upb/table.c
CHANGED
@@ -16,12 +16,6 @@
|
|
16
16
|
#define ARRAY_SIZE(x) \
|
17
17
|
((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
|
18
18
|
|
19
|
-
static void upb_check_alloc(upb_table *t, upb_alloc *a) {
|
20
|
-
UPB_UNUSED(t);
|
21
|
-
UPB_UNUSED(a);
|
22
|
-
UPB_ASSERT_DEBUGVAR(t->alloc == a);
|
23
|
-
}
|
24
|
-
|
25
19
|
static const double MAX_LOAD = 0.85;
|
26
20
|
|
27
21
|
/* The minimum utilization of the array part of a mixed hash/array table. This
|
@@ -100,17 +94,12 @@ static bool isfull(upb_table *t) {
|
|
100
94
|
}
|
101
95
|
}
|
102
96
|
|
103
|
-
static bool init(upb_table *t,
|
104
|
-
upb_alloc *a) {
|
97
|
+
static bool init(upb_table *t, uint8_t size_lg2, upb_alloc *a) {
|
105
98
|
size_t bytes;
|
106
99
|
|
107
100
|
t->count = 0;
|
108
|
-
t->ctype = ctype;
|
109
101
|
t->size_lg2 = size_lg2;
|
110
102
|
t->mask = upb_table_size(t) ? upb_table_size(t) - 1 : 0;
|
111
|
-
#ifndef NDEBUG
|
112
|
-
t->alloc = a;
|
113
|
-
#endif
|
114
103
|
bytes = upb_table_size(t) * sizeof(upb_tabent);
|
115
104
|
if (bytes > 0) {
|
116
105
|
t->entries = upb_malloc(a, bytes);
|
@@ -123,7 +112,6 @@ static bool init(upb_table *t, upb_ctype_t ctype, uint8_t size_lg2,
|
|
123
112
|
}
|
124
113
|
|
125
114
|
static void uninit(upb_table *t, upb_alloc *a) {
|
126
|
-
upb_check_alloc(t, a);
|
127
115
|
upb_free(a, mutable_entries(t));
|
128
116
|
}
|
129
117
|
|
@@ -159,7 +147,7 @@ static bool lookup(const upb_table *t, lookupkey_t key, upb_value *v,
|
|
159
147
|
const upb_tabent *e = findentry(t, key, hash, eql);
|
160
148
|
if (e) {
|
161
149
|
if (v) {
|
162
|
-
_upb_value_setval(v, e->val.val
|
150
|
+
_upb_value_setval(v, e->val.val);
|
163
151
|
}
|
164
152
|
return true;
|
165
153
|
} else {
|
@@ -175,7 +163,6 @@ static void insert(upb_table *t, lookupkey_t key, upb_tabkey tabkey,
|
|
175
163
|
upb_tabent *our_e;
|
176
164
|
|
177
165
|
UPB_ASSERT(findentry(t, key, hash, eql) == NULL);
|
178
|
-
UPB_ASSERT_DEBUGVAR(val.ctype == t->ctype);
|
179
166
|
|
180
167
|
t->count++;
|
181
168
|
mainpos_e = getentry_mutable(t, hash);
|
@@ -221,7 +208,7 @@ static bool rm(upb_table *t, lookupkey_t key, upb_value *val,
|
|
221
208
|
if (eql(chain->key, key)) {
|
222
209
|
/* Element to remove is at the head of its chain. */
|
223
210
|
t->count--;
|
224
|
-
if (val) _upb_value_setval(val, chain->val.val
|
211
|
+
if (val) _upb_value_setval(val, chain->val.val);
|
225
212
|
if (removed) *removed = chain->key;
|
226
213
|
if (chain->next) {
|
227
214
|
upb_tabent *move = (upb_tabent*)chain->next;
|
@@ -241,7 +228,7 @@ static bool rm(upb_table *t, lookupkey_t key, upb_value *val,
|
|
241
228
|
/* Found element to remove. */
|
242
229
|
upb_tabent *rm = (upb_tabent*)chain->next;
|
243
230
|
t->count--;
|
244
|
-
if (val) _upb_value_setval(val, chain->next->val.val
|
231
|
+
if (val) _upb_value_setval(val, chain->next->val.val);
|
245
232
|
if (removed) *removed = rm->key;
|
246
233
|
rm->key = 0; /* Make the slot empty. */
|
247
234
|
chain->next = rm->next;
|
@@ -256,7 +243,7 @@ static bool rm(upb_table *t, lookupkey_t key, upb_value *val,
|
|
256
243
|
static size_t next(const upb_table *t, size_t i) {
|
257
244
|
do {
|
258
245
|
if (++i >= upb_table_size(t))
|
259
|
-
return SIZE_MAX;
|
246
|
+
return SIZE_MAX - 1; /* Distinct from -1. */
|
260
247
|
} while(upb_tabent_isempty(&t->entries[i]));
|
261
248
|
|
262
249
|
return i;
|
@@ -276,7 +263,7 @@ static upb_tabkey strcopy(lookupkey_t k2, upb_alloc *a) {
|
|
276
263
|
char *str = upb_malloc(a, k2.str.len + sizeof(uint32_t) + 1);
|
277
264
|
if (str == NULL) return 0;
|
278
265
|
memcpy(str, &len, sizeof(uint32_t));
|
279
|
-
memcpy(str + sizeof(uint32_t), k2.str.str, k2.str.len);
|
266
|
+
if (k2.str.len) memcpy(str + sizeof(uint32_t), k2.str.str, k2.str.len);
|
280
267
|
str[sizeof(uint32_t) + k2.str.len] = '\0';
|
281
268
|
return (uintptr_t)str;
|
282
269
|
}
|
@@ -290,11 +277,18 @@ static uint32_t strhash(upb_tabkey key) {
|
|
290
277
|
static bool streql(upb_tabkey k1, lookupkey_t k2) {
|
291
278
|
uint32_t len;
|
292
279
|
char *str = upb_tabstr(k1, &len);
|
293
|
-
return len == k2.str.len && memcmp(str, k2.str.str, len) == 0;
|
280
|
+
return len == k2.str.len && (len == 0 || memcmp(str, k2.str.str, len) == 0);
|
294
281
|
}
|
295
282
|
|
296
283
|
bool upb_strtable_init2(upb_strtable *t, upb_ctype_t ctype, upb_alloc *a) {
|
297
|
-
|
284
|
+
UPB_UNUSED(ctype); /* TODO(haberman): rm */
|
285
|
+
return init(&t->t, 2, a);
|
286
|
+
}
|
287
|
+
|
288
|
+
void upb_strtable_clear(upb_strtable *t) {
|
289
|
+
size_t bytes = upb_table_size(&t->t) * sizeof(upb_tabent);
|
290
|
+
t->t.count = 0;
|
291
|
+
memset((char*)t->t.entries, 0, bytes);
|
298
292
|
}
|
299
293
|
|
300
294
|
void upb_strtable_uninit2(upb_strtable *t, upb_alloc *a) {
|
@@ -308,18 +302,14 @@ bool upb_strtable_resize(upb_strtable *t, size_t size_lg2, upb_alloc *a) {
|
|
308
302
|
upb_strtable new_table;
|
309
303
|
upb_strtable_iter i;
|
310
304
|
|
311
|
-
|
312
|
-
|
313
|
-
if (!init(&new_table.t, t->t.ctype, size_lg2, a))
|
305
|
+
if (!init(&new_table.t, size_lg2, a))
|
314
306
|
return false;
|
315
307
|
upb_strtable_begin(&i, t);
|
316
308
|
for ( ; !upb_strtable_done(&i); upb_strtable_next(&i)) {
|
309
|
+
upb_strview key = upb_strtable_iter_key(&i);
|
317
310
|
upb_strtable_insert3(
|
318
|
-
&new_table,
|
319
|
-
|
320
|
-
upb_strtable_iter_keylength(&i),
|
321
|
-
upb_strtable_iter_value(&i),
|
322
|
-
a);
|
311
|
+
&new_table, key.data, key.size,
|
312
|
+
upb_strtable_iter_value(&i), a);
|
323
313
|
}
|
324
314
|
upb_strtable_uninit2(t, a);
|
325
315
|
*t = new_table;
|
@@ -332,8 +322,6 @@ bool upb_strtable_insert3(upb_strtable *t, const char *k, size_t len,
|
|
332
322
|
upb_tabkey tabkey;
|
333
323
|
uint32_t hash;
|
334
324
|
|
335
|
-
upb_check_alloc(&t->t, a);
|
336
|
-
|
337
325
|
if (isfull(&t->t)) {
|
338
326
|
/* Need to resize. New table of double the size, add old elements to it. */
|
339
327
|
if (!upb_strtable_resize(t, t->t.size_lg2 + 1, a)) {
|
@@ -361,7 +349,10 @@ bool upb_strtable_remove3(upb_strtable *t, const char *key, size_t len,
|
|
361
349
|
uint32_t hash = upb_murmur_hash2(key, len, 0);
|
362
350
|
upb_tabkey tabkey;
|
363
351
|
if (rm(&t->t, strkey2(key, len), val, &tabkey, hash, &streql)) {
|
364
|
-
|
352
|
+
if (alloc) {
|
353
|
+
/* Arena-based allocs don't need to free and won't pass this. */
|
354
|
+
upb_free(alloc, (void*)tabkey);
|
355
|
+
}
|
365
356
|
return true;
|
366
357
|
} else {
|
367
358
|
return false;
|
@@ -370,10 +361,6 @@ bool upb_strtable_remove3(upb_strtable *t, const char *key, size_t len,
|
|
370
361
|
|
371
362
|
/* Iteration */
|
372
363
|
|
373
|
-
static const upb_tabent *str_tabent(const upb_strtable_iter *i) {
|
374
|
-
return &i->t->t.entries[i->index];
|
375
|
-
}
|
376
|
-
|
377
364
|
void upb_strtable_begin(upb_strtable_iter *i, const upb_strtable *t) {
|
378
365
|
i->t = t;
|
379
366
|
i->index = begin(&t->t);
|
@@ -389,21 +376,18 @@ bool upb_strtable_done(const upb_strtable_iter *i) {
|
|
389
376
|
upb_tabent_isempty(str_tabent(i));
|
390
377
|
}
|
391
378
|
|
392
|
-
|
393
|
-
|
394
|
-
return upb_tabstr(str_tabent(i)->key, NULL);
|
395
|
-
}
|
396
|
-
|
397
|
-
size_t upb_strtable_iter_keylength(const upb_strtable_iter *i) {
|
379
|
+
upb_strview upb_strtable_iter_key(const upb_strtable_iter *i) {
|
380
|
+
upb_strview key;
|
398
381
|
uint32_t len;
|
399
382
|
UPB_ASSERT(!upb_strtable_done(i));
|
400
|
-
upb_tabstr(str_tabent(i)->key, &len);
|
401
|
-
|
383
|
+
key.data = upb_tabstr(str_tabent(i)->key, &len);
|
384
|
+
key.size = len;
|
385
|
+
return key;
|
402
386
|
}
|
403
387
|
|
404
388
|
upb_value upb_strtable_iter_value(const upb_strtable_iter *i) {
|
405
389
|
UPB_ASSERT(!upb_strtable_done(i));
|
406
|
-
return _upb_value_val(str_tabent(i)->val.val
|
390
|
+
return _upb_value_val(str_tabent(i)->val.val);
|
407
391
|
}
|
408
392
|
|
409
393
|
void upb_strtable_iter_setdone(upb_strtable_iter *i) {
|
@@ -469,11 +453,11 @@ static void check(upb_inttable *t) {
|
|
469
453
|
#endif
|
470
454
|
}
|
471
455
|
|
472
|
-
bool upb_inttable_sizedinit(upb_inttable *t,
|
473
|
-
|
456
|
+
bool upb_inttable_sizedinit(upb_inttable *t, size_t asize, int hsize_lg2,
|
457
|
+
upb_alloc *a) {
|
474
458
|
size_t array_bytes;
|
475
459
|
|
476
|
-
if (!init(&t->t,
|
460
|
+
if (!init(&t->t, hsize_lg2, a)) return false;
|
477
461
|
/* Always make the array part at least 1 long, so that we know key 0
|
478
462
|
* won't be in the hash part, which simplifies things. */
|
479
463
|
t->array_size = UPB_MAX(1, asize);
|
@@ -490,7 +474,8 @@ bool upb_inttable_sizedinit(upb_inttable *t, upb_ctype_t ctype,
|
|
490
474
|
}
|
491
475
|
|
492
476
|
bool upb_inttable_init2(upb_inttable *t, upb_ctype_t ctype, upb_alloc *a) {
|
493
|
-
|
477
|
+
UPB_UNUSED(ctype); /* TODO(haberman): rm */
|
478
|
+
return upb_inttable_sizedinit(t, 0, 4, a);
|
494
479
|
}
|
495
480
|
|
496
481
|
void upb_inttable_uninit2(upb_inttable *t, upb_alloc *a) {
|
@@ -504,8 +489,6 @@ bool upb_inttable_insert2(upb_inttable *t, uintptr_t key, upb_value val,
|
|
504
489
|
tabval.val = val.val;
|
505
490
|
UPB_ASSERT(upb_arrhas(tabval)); /* This will reject (uint64_t)-1. Fix this. */
|
506
491
|
|
507
|
-
upb_check_alloc(&t->t, a);
|
508
|
-
|
509
492
|
if (key < t->array_size) {
|
510
493
|
UPB_ASSERT(!upb_arrhas(t->array[key]));
|
511
494
|
t->array_count++;
|
@@ -516,7 +499,7 @@ bool upb_inttable_insert2(upb_inttable *t, uintptr_t key, upb_value val,
|
|
516
499
|
size_t i;
|
517
500
|
upb_table new_table;
|
518
501
|
|
519
|
-
if (!init(&new_table, t->t.
|
502
|
+
if (!init(&new_table, t->t.size_lg2 + 1, a)) {
|
520
503
|
return false;
|
521
504
|
}
|
522
505
|
|
@@ -525,7 +508,7 @@ bool upb_inttable_insert2(upb_inttable *t, uintptr_t key, upb_value val,
|
|
525
508
|
uint32_t hash;
|
526
509
|
upb_value v;
|
527
510
|
|
528
|
-
_upb_value_setval(&v, e->val.val
|
511
|
+
_upb_value_setval(&v, e->val.val);
|
529
512
|
hash = upb_inthash(e->key);
|
530
513
|
insert(&new_table, intkey(e->key), e->key, v, hash, &inthash, &inteql);
|
531
514
|
}
|
@@ -544,7 +527,7 @@ bool upb_inttable_insert2(upb_inttable *t, uintptr_t key, upb_value val,
|
|
544
527
|
bool upb_inttable_lookup(const upb_inttable *t, uintptr_t key, upb_value *v) {
|
545
528
|
const upb_tabval *table_v = inttable_val_const(t, key);
|
546
529
|
if (!table_v) return false;
|
547
|
-
if (v) _upb_value_setval(v, table_v->val
|
530
|
+
if (v) _upb_value_setval(v, table_v->val);
|
548
531
|
return true;
|
549
532
|
}
|
550
533
|
|
@@ -562,7 +545,7 @@ bool upb_inttable_remove(upb_inttable *t, uintptr_t key, upb_value *val) {
|
|
562
545
|
upb_tabval empty = UPB_TABVALUE_EMPTY_INIT;
|
563
546
|
t->array_count--;
|
564
547
|
if (val) {
|
565
|
-
_upb_value_setval(val, t->array[key].val
|
548
|
+
_upb_value_setval(val, t->array[key].val);
|
566
549
|
}
|
567
550
|
mutable_array(t)[key] = empty;
|
568
551
|
success = true;
|
@@ -577,7 +560,6 @@ bool upb_inttable_remove(upb_inttable *t, uintptr_t key, upb_value *val) {
|
|
577
560
|
}
|
578
561
|
|
579
562
|
bool upb_inttable_push2(upb_inttable *t, upb_value val, upb_alloc *a) {
|
580
|
-
upb_check_alloc(&t->t, a);
|
581
563
|
return upb_inttable_insert2(t, upb_inttable_count(t), val, a);
|
582
564
|
}
|
583
565
|
|
@@ -590,7 +572,6 @@ upb_value upb_inttable_pop(upb_inttable *t) {
|
|
590
572
|
|
591
573
|
bool upb_inttable_insertptr2(upb_inttable *t, const void *key, upb_value val,
|
592
574
|
upb_alloc *a) {
|
593
|
-
upb_check_alloc(&t->t, a);
|
594
575
|
return upb_inttable_insert2(t, (uintptr_t)key, val, a);
|
595
576
|
}
|
596
577
|
|
@@ -615,8 +596,6 @@ void upb_inttable_compact2(upb_inttable *t, upb_alloc *a) {
|
|
615
596
|
int size_lg2;
|
616
597
|
upb_inttable new_t;
|
617
598
|
|
618
|
-
upb_check_alloc(&t->t, a);
|
619
|
-
|
620
599
|
upb_inttable_begin(&i, t);
|
621
600
|
for (; !upb_inttable_done(&i); upb_inttable_next(&i)) {
|
622
601
|
uintptr_t key = upb_inttable_iter_key(&i);
|
@@ -649,7 +628,7 @@ void upb_inttable_compact2(upb_inttable *t, upb_alloc *a) {
|
|
649
628
|
size_t hash_size = hash_count ? (hash_count / MAX_LOAD) + 1 : 0;
|
650
629
|
int hashsize_lg2 = log2ceil(hash_size);
|
651
630
|
|
652
|
-
upb_inttable_sizedinit(&new_t,
|
631
|
+
upb_inttable_sizedinit(&new_t, arr_size, hashsize_lg2, a);
|
653
632
|
upb_inttable_begin(&i, t);
|
654
633
|
for (; !upb_inttable_done(&i); upb_inttable_next(&i)) {
|
655
634
|
uintptr_t k = upb_inttable_iter_key(&i);
|
@@ -715,8 +694,7 @@ uintptr_t upb_inttable_iter_key(const upb_inttable_iter *i) {
|
|
715
694
|
upb_value upb_inttable_iter_value(const upb_inttable_iter *i) {
|
716
695
|
UPB_ASSERT(!upb_inttable_done(i));
|
717
696
|
return _upb_value_val(
|
718
|
-
i->array_part ? i->t->array[i->index].val : int_tabent(i)->val.val
|
719
|
-
i->t->t.ctype);
|
697
|
+
i->array_part ? i->t->array[i->index].val : int_tabent(i)->val.val);
|
720
698
|
}
|
721
699
|
|
722
700
|
void upb_inttable_iter_setdone(upb_inttable_iter *i) {
|
@@ -810,8 +788,8 @@ uint32_t upb_murmur_hash2(const void * key, size_t len, uint32_t seed) {
|
|
810
788
|
int32_t sr;
|
811
789
|
|
812
790
|
switch(align) {
|
813
|
-
case 1: t |= data[2] << 16;
|
814
|
-
case 2: t |= data[1] << 8;
|
791
|
+
case 1: t |= data[2] << 16; /* fallthrough */
|
792
|
+
case 2: t |= data[1] << 8; /* fallthrough */
|
815
793
|
case 3: t |= data[0];
|
816
794
|
}
|
817
795
|
|
@@ -849,9 +827,9 @@ uint32_t upb_murmur_hash2(const void * key, size_t len, uint32_t seed) {
|
|
849
827
|
uint32_t k;
|
850
828
|
|
851
829
|
switch(align) {
|
852
|
-
case 3: d |= data[2] << 16;
|
853
|
-
case 2: d |= data[1] << 8;
|
854
|
-
case 1: d |= data[0];
|
830
|
+
case 3: d |= data[2] << 16; /* fallthrough */
|
831
|
+
case 2: d |= data[1] << 8; /* fallthrough */
|
832
|
+
case 1: d |= data[0]; /* fallthrough */
|
855
833
|
}
|
856
834
|
|
857
835
|
k = (t >> sr) | (d << sl);
|
@@ -864,15 +842,15 @@ uint32_t upb_murmur_hash2(const void * key, size_t len, uint32_t seed) {
|
|
864
842
|
* Handle tail bytes */
|
865
843
|
|
866
844
|
switch(len) {
|
867
|
-
case 3: h ^= data[2] << 16;
|
868
|
-
case 2: h ^= data[1] << 8;
|
869
|
-
case 1: h ^= data[0]; h *= m;
|
845
|
+
case 3: h ^= data[2] << 16; /* fallthrough */
|
846
|
+
case 2: h ^= data[1] << 8; /* fallthrough */
|
847
|
+
case 1: h ^= data[0]; h *= m; /* fallthrough */
|
870
848
|
};
|
871
849
|
} else {
|
872
850
|
switch(len) {
|
873
|
-
case 3: d |= data[2] << 16;
|
874
|
-
case 2: d |= data[1] << 8;
|
875
|
-
case 1: d |= data[0];
|
851
|
+
case 3: d |= data[2] << 16; /* fallthrough */
|
852
|
+
case 2: d |= data[1] << 8; /* fallthrough */
|
853
|
+
case 1: d |= data[0]; /* fallthrough */
|
876
854
|
case 0: h ^= (t >> sr) | (d << sl); h *= m;
|
877
855
|
}
|
878
856
|
}
|
@@ -896,8 +874,8 @@ uint32_t upb_murmur_hash2(const void * key, size_t len, uint32_t seed) {
|
|
896
874
|
* Handle tail bytes */
|
897
875
|
|
898
876
|
switch(len) {
|
899
|
-
case 3: h ^= data[2] << 16;
|
900
|
-
case 2: h ^= data[1] << 8;
|
877
|
+
case 3: h ^= data[2] << 16; /* fallthrough */
|
878
|
+
case 2: h ^= data[1] << 8; /* fallthrough */
|
901
879
|
case 1: h ^= data[0]; h *= m;
|
902
880
|
};
|
903
881
|
|