re2 1.22.2 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -4
- package/binding.gyp +5 -1
- package/lib/addon.cc +4 -0
- package/lib/new.cc +1 -246
- package/lib/pattern.cc +252 -0
- package/lib/pattern.h +10 -0
- package/lib/set.cc +777 -0
- package/lib/wrapped_re2_set.h +42 -0
- package/package.json +21 -9
- package/re2.d.ts +46 -9
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +14 -24
- package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +3 -3
- package/vendor/abseil-cpp/CMake/README.md +2 -2
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/MODULE.bazel +6 -9
- package/vendor/abseil-cpp/README.md +6 -8
- package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +6 -4
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/algorithm/container.h +2 -19
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +4 -11
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +60 -45
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +57 -38
- package/vendor/abseil-cpp/absl/base/attributes.h +76 -7
- package/vendor/abseil-cpp/absl/base/attributes_test.cc +43 -0
- package/vendor/abseil-cpp/absl/base/call_once.h +11 -12
- package/vendor/abseil-cpp/absl/base/config.h +22 -129
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -4
- package/vendor/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- package/vendor/abseil-cpp/absl/base/{internal/fast_type_id_test.cc → fast_type_id_test.cc} +34 -30
- package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- package/vendor/abseil-cpp/absl/base/internal/endian.h +34 -38
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test.cc +85 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -9
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- package/vendor/abseil-cpp/absl/base/internal/poison.cc +7 -6
- package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +15 -28
- package/vendor/abseil-cpp/absl/base/internal/spinlock.h +65 -35
- package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +2 -2
- package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +2 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +4 -4
- package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +4 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- package/vendor/abseil-cpp/absl/base/no_destructor.h +11 -32
- package/vendor/abseil-cpp/absl/base/no_destructor_test.cc +0 -4
- package/vendor/abseil-cpp/absl/base/nullability.h +83 -72
- package/vendor/abseil-cpp/absl/base/nullability_test.cc +25 -64
- package/vendor/abseil-cpp/absl/base/options.h +3 -80
- package/vendor/abseil-cpp/absl/base/policy_checks.h +7 -7
- package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +15 -0
- package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +50 -30
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -1
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -1
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +74 -1
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +51 -9
- package/vendor/abseil-cpp/absl/container/btree_map.h +8 -6
- package/vendor/abseil-cpp/absl/container/btree_set.h +8 -6
- package/vendor/abseil-cpp/absl/container/btree_test.cc +89 -4
- package/vendor/abseil-cpp/absl/container/fixed_array.h +7 -15
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +17 -0
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +20 -15
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +8 -14
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +19 -14
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +46 -0
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +7 -6
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +28 -0
- package/vendor/abseil-cpp/absl/container/internal/btree.h +132 -29
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- package/vendor/abseil-cpp/absl/container/internal/common.h +43 -0
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +28 -24
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +4 -17
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +80 -17
- package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +32 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +13 -8
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +1 -52
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +9 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +23 -32
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +5 -1
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +11 -23
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +14 -9
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +516 -0
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +259 -0
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -6
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +32 -13
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +8 -8
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- package/vendor/abseil-cpp/absl/container/internal/layout.h +26 -42
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +1506 -213
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +1095 -1658
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +31 -29
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +51 -20
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +66 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +707 -363
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +20 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +0 -3
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +18 -13
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +3 -8
- package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +1 -1
- package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +9 -20
- package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +9 -20
- package/vendor/abseil-cpp/absl/copts/copts.py +24 -15
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/crc/crc32c.cc +0 -4
- package/vendor/abseil-cpp/absl/crc/crc32c.h +7 -5
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +17 -4
- package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +30 -0
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +17 -0
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +136 -165
- package/vendor/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +90 -0
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +7 -0
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +11 -10
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -14
- package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +161 -27
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +435 -1
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +55 -63
- package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +3 -0
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- package/vendor/abseil-cpp/absl/flags/flag.h +4 -3
- package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +14 -13
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +34 -34
- package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/internal/registry.h +4 -3
- package/vendor/abseil-cpp/absl/flags/internal/usage.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/parse.cc +10 -6
- package/vendor/abseil-cpp/absl/flags/reflection.cc +9 -7
- package/vendor/abseil-cpp/absl/flags/usage.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/usage_config.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +7 -6
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +2 -4
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +15 -15
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +10 -42
- package/vendor/abseil-cpp/absl/functional/function_ref.h +2 -9
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +10 -0
- package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +112 -227
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- package/vendor/abseil-cpp/absl/functional/overload.h +0 -20
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +1 -7
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +16 -9
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +6 -9
- package/vendor/abseil-cpp/absl/hash/hash.h +18 -0
- package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +3 -0
- package/vendor/abseil-cpp/absl/hash/hash_instantiated_test.cc +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +131 -30
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +20 -20
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +129 -17
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +326 -362
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +54 -151
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +14 -2
- package/vendor/abseil-cpp/absl/{strings/cord_buffer.cc → hash/internal/weakly_mixed_integer.h} +14 -6
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +7 -0
- package/vendor/abseil-cpp/absl/log/check.h +2 -1
- package/vendor/abseil-cpp/absl/log/check_test_impl.inc +308 -14
- package/vendor/abseil-cpp/absl/log/die_if_null.h +2 -2
- package/vendor/abseil-cpp/absl/log/flags_test.cc +7 -0
- package/vendor/abseil-cpp/absl/log/globals.h +4 -5
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +13 -9
- package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- package/vendor/abseil-cpp/absl/log/internal/check_op.cc +24 -22
- package/vendor/abseil-cpp/absl/log/internal/check_op.h +149 -94
- package/vendor/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- package/vendor/abseil-cpp/absl/log/internal/conditions.h +7 -2
- package/vendor/abseil-cpp/absl/log/internal/fnmatch_test.cc +1 -0
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +84 -59
- package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +3 -2
- package/vendor/abseil-cpp/absl/log/internal/proto.h +3 -3
- package/vendor/abseil-cpp/absl/log/internal/strip.h +4 -12
- package/vendor/abseil-cpp/absl/log/internal/structured.h +3 -7
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +9 -9
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- package/vendor/abseil-cpp/absl/log/internal/voidify.h +10 -4
- package/vendor/abseil-cpp/absl/log/log.h +48 -35
- package/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc +45 -0
- package/vendor/abseil-cpp/absl/log/log_entry.cc +241 -19
- package/vendor/abseil-cpp/absl/log/log_entry.h +2 -0
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +412 -6
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +20 -0
- package/vendor/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +15 -2
- package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +7 -1
- package/vendor/abseil-cpp/absl/log/structured_test.cc +1 -0
- package/vendor/abseil-cpp/absl/memory/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/type_traits.h +46 -175
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1 -478
- package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +7 -3
- package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/numeric/bits.h +68 -2
- package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/numeric/bits_test.cc +83 -0
- package/vendor/abseil-cpp/absl/numeric/int128.cc +0 -52
- package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +14 -15
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +13 -8
- package/vendor/abseil-cpp/absl/numeric/internal/bits.h +39 -7
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +47 -0
- package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +38 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +124 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.h +40 -0
- package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +462 -0
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +138 -0
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +7 -3
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +6 -4
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +20 -19
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +16 -23
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +7 -2
- package/vendor/abseil-cpp/absl/random/distributions.h +6 -8
- package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +19 -20
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- package/vendor/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +24 -92
- package/vendor/abseil-cpp/absl/{base/inline_variable_test_b.cc → random/internal/entropy_pool.h} +14 -6
- package/vendor/abseil-cpp/absl/random/internal/entropy_pool_test.cc +119 -0
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +6 -7
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +39 -0
- package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +8 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +3 -0
- package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +5 -4
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +8 -10
- package/vendor/abseil-cpp/absl/random/random.h +88 -53
- package/vendor/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +26 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.cc +4 -3
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +194 -32
- package/vendor/abseil-cpp/absl/status/status.cc +4 -8
- package/vendor/abseil-cpp/absl/status/status.h +8 -8
- package/vendor/abseil-cpp/absl/{base/inline_variable_test_a.cc → status/status_benchmark.cc} +20 -10
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +65 -0
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- package/vendor/abseil-cpp/absl/status/statusor.cc +2 -2
- package/vendor/abseil-cpp/absl/status/statusor.h +49 -102
- package/vendor/abseil-cpp/absl/status/statusor_benchmark.cc +480 -0
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +323 -1
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +70 -34
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +6 -3
- package/vendor/abseil-cpp/absl/strings/ascii.cc +9 -9
- package/vendor/abseil-cpp/absl/strings/ascii.h +18 -18
- package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +5 -8
- package/vendor/abseil-cpp/absl/strings/charconv.cc +21 -22
- package/vendor/abseil-cpp/absl/strings/charconv.h +5 -5
- package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/charset_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/cord.cc +54 -58
- package/vendor/abseil-cpp/absl/strings/cord.h +94 -84
- package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- package/vendor/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +23 -0
- package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +4 -5
- package/vendor/abseil-cpp/absl/strings/escaping.cc +130 -149
- package/vendor/abseil-cpp/absl/strings/escaping.h +9 -10
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +19 -9
- package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +6 -10
- package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +5 -9
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +2 -4
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +56 -0
- package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1 -6
- package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +3 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +7 -2
- package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- package/vendor/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +196 -3
- package/vendor/abseil-cpp/absl/strings/numbers.cc +53 -32
- package/vendor/abseil-cpp/absl/strings/numbers.h +87 -58
- package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +634 -120
- package/vendor/abseil-cpp/absl/strings/str_cat.cc +6 -7
- package/vendor/abseil-cpp/absl/strings/str_cat.h +32 -32
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +25 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +2 -7
- package/vendor/abseil-cpp/absl/strings/str_format.h +18 -18
- package/vendor/abseil-cpp/absl/strings/str_format_test.cc +8 -14
- package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/str_replace.cc +3 -3
- package/vendor/abseil-cpp/absl/strings/str_replace.h +6 -6
- package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/str_split.h +2 -2
- package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/string_view.cc +4 -9
- package/vendor/abseil-cpp/absl/strings/string_view.h +38 -39
- package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +4 -6
- package/vendor/abseil-cpp/absl/strings/string_view_test.cc +2 -50
- package/vendor/abseil-cpp/absl/strings/strip.h +4 -4
- package/vendor/abseil-cpp/absl/strings/substitute.cc +5 -4
- package/vendor/abseil-cpp/absl/strings/substitute.h +66 -64
- package/vendor/abseil-cpp/absl/strings/substitute_benchmark.cc +158 -0
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +6 -1
- package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +2 -1
- package/vendor/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +3 -3
- package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +6 -5
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- package/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +3 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/waiter_test.cc +12 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +4 -4
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +27 -29
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +205 -126
- package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +13 -31
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +183 -169
- package/vendor/abseil-cpp/absl/synchronization/notification.cc +5 -5
- package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
- package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +3 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +9 -1
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +3 -1
- package/vendor/abseil-cpp/absl/time/civil_time.cc +1 -0
- package/vendor/abseil-cpp/absl/time/civil_time_test.cc +134 -0
- package/vendor/abseil-cpp/absl/time/clock.cc +11 -14
- package/vendor/abseil-cpp/absl/time/duration.cc +14 -9
- package/vendor/abseil-cpp/absl/time/duration_test.cc +6 -7
- package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +14 -3
- package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +4 -490
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +515 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +41 -4
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +22 -23
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1 -488
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +2 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +1 -1
- package/vendor/abseil-cpp/absl/time/time.h +24 -18
- package/vendor/abseil-cpp/absl/time/time_test.cc +26 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +11 -164
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +23 -167
- package/vendor/abseil-cpp/absl/types/any.h +9 -484
- package/vendor/abseil-cpp/absl/types/optional.h +7 -747
- package/vendor/abseil-cpp/absl/types/span.h +46 -19
- package/vendor/abseil-cpp/absl/types/span_test.cc +27 -0
- package/vendor/abseil-cpp/absl/types/variant.h +5 -784
- package/vendor/abseil-cpp/absl/types/variant_test.cc +43 -2597
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -41
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +0 -40
- package/vendor/abseil-cpp/absl/utility/utility.h +10 -185
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -3
- package/vendor/abseil-cpp/ci/cmake_common.sh +2 -2
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +12 -13
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +24 -21
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +12 -12
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +23 -22
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +20 -19
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +17 -17
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +10 -10
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +1 -1
- package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +1 -1
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +9 -10
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +9 -1
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +14 -6
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +14 -6
- package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +1 -1
- package/vendor/re2/.bazelrc +4 -4
- package/vendor/re2/.bcr/metadata.template.json +16 -0
- package/vendor/re2/.bcr/presubmit.yml +57 -0
- package/vendor/re2/.bcr/source.template.json +5 -0
- package/vendor/re2/.github/bazel.sh +1 -7
- package/vendor/re2/.github/workflows/ci-bazel.yml +5 -5
- package/vendor/re2/.github/workflows/ci-cmake.yml +4 -4
- package/vendor/re2/.github/workflows/ci.yml +5 -6
- package/vendor/re2/.github/workflows/pages.yml +3 -3
- package/vendor/re2/.github/workflows/python.yml +29 -24
- package/vendor/re2/.github/workflows/release-bazel.yml +42 -0
- package/vendor/re2/.github/workflows/release.yml +15 -4
- package/vendor/re2/BUILD.bazel +25 -0
- package/vendor/re2/CMakeLists.txt +100 -85
- package/vendor/re2/CONTRIBUTING.md +0 -1
- package/vendor/re2/MODULE.bazel +10 -10
- package/vendor/re2/Makefile +1 -1
- package/vendor/re2/README.md +259 -0
- package/vendor/re2/python/BUILD.bazel +8 -0
- package/vendor/re2/python/re2.py +1 -1
- package/vendor/re2/python/re2_test.py +6 -0
- package/vendor/re2/python/setup.py +3 -3
- package/vendor/re2/re2/bitmap256.cc +3 -4
- package/vendor/re2/re2/bitstate.cc +15 -10
- package/vendor/re2/re2/dfa.cc +1 -2
- package/vendor/re2/re2/parse.cc +3 -4
- package/vendor/re2/re2/prog.cc +1 -2
- package/vendor/re2/re2/prog.h +1 -0
- package/vendor/re2/re2/re2.cc +5 -0
- package/vendor/re2/re2/re2.h +9 -9
- package/vendor/re2/re2/set.cc +6 -0
- package/vendor/re2/re2/set.h +5 -0
- package/vendor/re2/re2/testing/re2_arg_test.cc +3 -3
- package/vendor/re2/re2/testing/re2_test.cc +8 -0
- package/vendor/re2/re2/testing/set_test.cc +5 -0
- package/vendor/re2/re2/walker-inl.h +1 -1
- package/vendor/abseil-cpp/WORKSPACE +0 -76
- package/vendor/abseil-cpp/WORKSPACE.bzlmod +0 -19
- package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +0 -64
- package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +0 -46
- package/vendor/abseil-cpp/absl/base/internal/invoke.h +0 -241
- package/vendor/abseil-cpp/absl/base/internal/nullability_impl.h +0 -69
- package/vendor/abseil-cpp/absl/base/invoke_test.cc +0 -331
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -148
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -54
- package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +0 -182
- package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +0 -173
- package/vendor/abseil-cpp/absl/types/any_test.cc +0 -778
- package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +0 -64
- package/vendor/abseil-cpp/absl/types/bad_any_cast.h +0 -75
- package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- package/vendor/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- package/vendor/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- package/vendor/abseil-cpp/absl/types/internal/optional.h +0 -352
- package/vendor/abseil-cpp/absl/types/internal/variant.h +0 -1622
- package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +0 -292
- package/vendor/abseil-cpp/absl/types/optional_test.cc +0 -1615
- package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +0 -222
- package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +0 -532
- package/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h +0 -70
- package/vendor/abseil-cpp/absl/utility/internal/if_constexpr_test.cc +0 -79
- package/vendor/abseil-cpp/absl/utility/utility_test.cc +0 -239
- package/vendor/re2/.github/workflows/pr.yml +0 -34
- package/vendor/re2/README +0 -47
|
@@ -99,24 +99,29 @@ class NodeHashMapPolicy;
|
|
|
99
99
|
// In most cases `T` needs only to provide the `absl_container_hash`. In this
|
|
100
100
|
// case `std::equal_to<void>` will be used instead of `eq` part.
|
|
101
101
|
//
|
|
102
|
+
// PERFORMANCE WARNING: Erasure & sparsity can negatively affect performance:
|
|
103
|
+
// * Iteration takes O(capacity) time, not O(size).
|
|
104
|
+
// * erase() slows down begin() and ++iterator.
|
|
105
|
+
// * Capacity only shrinks on rehash() or clear() -- not on erase().
|
|
106
|
+
//
|
|
102
107
|
// Example:
|
|
103
108
|
//
|
|
104
109
|
// // Create a node hash map of three strings (that map to strings)
|
|
105
110
|
// absl::node_hash_map<std::string, std::string> ducks =
|
|
106
111
|
// {{"a", "huey"}, {"b", "dewey"}, {"c", "louie"}};
|
|
107
112
|
//
|
|
108
|
-
//
|
|
109
|
-
//
|
|
113
|
+
// // Insert a new element into the node hash map
|
|
114
|
+
// ducks.insert({"d", "donald"}};
|
|
110
115
|
//
|
|
111
|
-
//
|
|
112
|
-
//
|
|
116
|
+
// // Force a rehash of the node hash map
|
|
117
|
+
// ducks.rehash(0);
|
|
113
118
|
//
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
119
|
+
// // Find the element with the key "b"
|
|
120
|
+
// std::string search_key = "b";
|
|
121
|
+
// auto result = ducks.find(search_key);
|
|
122
|
+
// if (result != ducks.end()) {
|
|
123
|
+
// std::cout << "Result: " << result->second << std::endl;
|
|
124
|
+
// }
|
|
120
125
|
template <class Key, class Value, class Hash = DefaultHashContainerHash<Key>,
|
|
121
126
|
class Eq = DefaultHashContainerEq<Key>,
|
|
122
127
|
class Alloc = std::allocator<std::pair<const Key, Value>>>
|
|
@@ -148,9 +153,9 @@ class ABSL_ATTRIBUTE_OWNER node_hash_map
|
|
|
148
153
|
//
|
|
149
154
|
// * Copy assignment operator
|
|
150
155
|
//
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
//
|
|
156
|
+
// // Hash functor and Comparator are copied as well
|
|
157
|
+
// absl::node_hash_map<int, std::string> map4;
|
|
158
|
+
// map4 = map3;
|
|
154
159
|
//
|
|
155
160
|
// * Move constructor
|
|
156
161
|
//
|
|
@@ -658,10 +663,10 @@ class NodeHashMapPolicy
|
|
|
658
663
|
static Value& value(value_type* elem) { return elem->second; }
|
|
659
664
|
static const Value& value(const value_type* elem) { return elem->second; }
|
|
660
665
|
|
|
661
|
-
template <class Hash>
|
|
666
|
+
template <class Hash, bool kIsDefault>
|
|
662
667
|
static constexpr HashSlotFn get_hash_slot_fn() {
|
|
663
668
|
return memory_internal::IsLayoutCompatible<Key, Value>::value
|
|
664
|
-
? &TypeErasedDerefAndApplyToSlotFn<Hash, Key>
|
|
669
|
+
? &TypeErasedDerefAndApplyToSlotFn<Hash, Key, kIsDefault>
|
|
665
670
|
: nullptr;
|
|
666
671
|
}
|
|
667
672
|
};
|
|
@@ -322,8 +322,6 @@ TEST(NodeHashMap, CForEachMutate) {
|
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
-
// This test requires std::launder for mutable key access in node handles.
|
|
326
|
-
#if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
|
|
327
325
|
TEST(NodeHashMap, NodeHandleMutableKeyAccess) {
|
|
328
326
|
node_hash_map<std::string, std::string> map;
|
|
329
327
|
|
|
@@ -335,7 +333,6 @@ TEST(NodeHashMap, NodeHandleMutableKeyAccess) {
|
|
|
335
333
|
|
|
336
334
|
EXPECT_THAT(map, testing::ElementsAre(Pair("key", "mapped")));
|
|
337
335
|
}
|
|
338
|
-
#endif
|
|
339
336
|
|
|
340
337
|
TEST(NodeHashMap, RecursiveTypeCompiles) {
|
|
341
338
|
struct RecursiveType {
|
|
@@ -97,22 +97,27 @@ struct NodeHashSetPolicy;
|
|
|
97
97
|
// In most cases `T` needs only to provide the `absl_container_hash`. In this
|
|
98
98
|
// case `std::equal_to<void>` will be used instead of `eq` part.
|
|
99
99
|
//
|
|
100
|
+
// PERFORMANCE WARNING: Erasure & sparsity can negatively affect performance:
|
|
101
|
+
// * Iteration takes O(capacity) time, not O(size).
|
|
102
|
+
// * erase() slows down begin() and ++iterator.
|
|
103
|
+
// * Capacity only shrinks on rehash() or clear() -- not on erase().
|
|
104
|
+
//
|
|
100
105
|
// Example:
|
|
101
106
|
//
|
|
102
107
|
// // Create a node hash set of three strings
|
|
103
108
|
// absl::node_hash_set<std::string> ducks =
|
|
104
109
|
// {"huey", "dewey", "louie"};
|
|
105
110
|
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
111
|
+
// // Insert a new element into the node hash set
|
|
112
|
+
// ducks.insert("donald");
|
|
108
113
|
//
|
|
109
|
-
//
|
|
110
|
-
//
|
|
114
|
+
// // Force a rehash of the node hash set
|
|
115
|
+
// ducks.rehash(0);
|
|
111
116
|
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
//
|
|
117
|
+
// // See if "dewey" is present
|
|
118
|
+
// if (ducks.contains("dewey")) {
|
|
119
|
+
// std::cout << "We found dewey!" << std::endl;
|
|
120
|
+
// }
|
|
116
121
|
template <class T, class Hash = DefaultHashContainerHash<T>,
|
|
117
122
|
class Eq = DefaultHashContainerEq<T>, class Alloc = std::allocator<T>>
|
|
118
123
|
class ABSL_ATTRIBUTE_OWNER node_hash_set
|
|
@@ -142,9 +147,9 @@ class ABSL_ATTRIBUTE_OWNER node_hash_set
|
|
|
142
147
|
//
|
|
143
148
|
// * Copy assignment operator
|
|
144
149
|
//
|
|
145
|
-
//
|
|
146
|
-
//
|
|
147
|
-
//
|
|
150
|
+
// // Hash functor and Comparator are copied as well
|
|
151
|
+
// absl::node_hash_set<std::string> set4;
|
|
152
|
+
// set4 = set3;
|
|
148
153
|
//
|
|
149
154
|
// * Move constructor
|
|
150
155
|
//
|
|
@@ -552,9 +557,9 @@ struct NodeHashSetPolicy
|
|
|
552
557
|
|
|
553
558
|
static size_t element_space_used(const T*) { return sizeof(T); }
|
|
554
559
|
|
|
555
|
-
template <class Hash>
|
|
560
|
+
template <class Hash, bool kIsDefault>
|
|
556
561
|
static constexpr HashSlotFn get_hash_slot_fn() {
|
|
557
|
-
return &TypeErasedDerefAndApplyToSlotFn<Hash, T>;
|
|
562
|
+
return &TypeErasedDerefAndApplyToSlotFn<Hash, T, kIsDefault>;
|
|
558
563
|
}
|
|
559
564
|
};
|
|
560
565
|
} // namespace container_internal
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include "gtest/gtest.h"
|
|
22
22
|
#include "absl/container/flat_hash_map.h"
|
|
23
23
|
#include "absl/container/flat_hash_set.h"
|
|
24
|
+
#include "absl/container/internal/hashtablez_sampler.h"
|
|
24
25
|
#include "absl/container/node_hash_map.h"
|
|
25
26
|
#include "absl/container/node_hash_set.h"
|
|
26
27
|
|
|
@@ -46,6 +47,7 @@ void TestInlineElementSize(
|
|
|
46
47
|
std::vector<Table>& tables,
|
|
47
48
|
const std::vector<typename Table::value_type>& values,
|
|
48
49
|
size_t expected_element_size) {
|
|
50
|
+
EXPECT_GT(values.size(), 0);
|
|
49
51
|
for (int i = 0; i < 10; ++i) {
|
|
50
52
|
// We create a new table and must store it somewhere so that when we store
|
|
51
53
|
// a pointer to the resulting `HashtablezInfo` into `preexisting_info`
|
|
@@ -82,6 +84,7 @@ TEST(FlatHashMap, SampleElementSize) {
|
|
|
82
84
|
// Enable sampling even if the prod default is off.
|
|
83
85
|
SetHashtablezEnabled(true);
|
|
84
86
|
SetHashtablezSampleParameter(1);
|
|
87
|
+
TestOnlyRefreshSamplingStateForCurrentThread();
|
|
85
88
|
|
|
86
89
|
auto& sampler = GlobalHashtablezSampler();
|
|
87
90
|
std::vector<flat_hash_map<int, bigstruct>> flat_map_tables;
|
|
@@ -92,14 +95,6 @@ TEST(FlatHashMap, SampleElementSize) {
|
|
|
92
95
|
std::vector<std::pair<const int, bigstruct>> map_values = {{0, bigstruct{}},
|
|
93
96
|
{1, bigstruct{}}};
|
|
94
97
|
|
|
95
|
-
// It takes thousands of new tables after changing the sampling parameters
|
|
96
|
-
// before you actually get some instrumentation. And if you must actually
|
|
97
|
-
// put something into those tables.
|
|
98
|
-
for (int i = 0; i < 10000; ++i) {
|
|
99
|
-
flat_map_tables.emplace_back();
|
|
100
|
-
flat_map_tables.back()[i] = bigstruct{};
|
|
101
|
-
}
|
|
102
|
-
|
|
103
98
|
// clang-tidy gives a false positive on this declaration. This unordered set
|
|
104
99
|
// cannot be a flat_hash_set, however, since that would introduce a mutex
|
|
105
100
|
// deadlock.
|
|
@@ -71,7 +71,7 @@ else()
|
|
|
71
71
|
endif()
|
|
72
72
|
|
|
73
73
|
|
|
74
|
-
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
74
|
+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "QCC")
|
|
75
75
|
set(ABSL_DEFAULT_COPTS "${ABSL_GCC_FLAGS}")
|
|
76
76
|
set(ABSL_TEST_COPTS "${ABSL_GCC_TEST_FLAGS}")
|
|
77
77
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") # MATCHES so we get both Clang and AppleClang
|
|
@@ -23,6 +23,7 @@ list(APPEND ABSL_CLANG_CL_TEST_FLAGS
|
|
|
23
23
|
"-Wno-implicit-int-conversion"
|
|
24
24
|
"-Wno-missing-prototypes"
|
|
25
25
|
"-Wno-missing-variable-declarations"
|
|
26
|
+
"-Wno-nullability-completeness"
|
|
26
27
|
"-Wno-shadow"
|
|
27
28
|
"-Wno-shorten-64-to-32"
|
|
28
29
|
"-Wno-sign-compare"
|
|
@@ -97,6 +98,7 @@ list(APPEND ABSL_LLVM_FLAGS
|
|
|
97
98
|
"-Winvalid-constexpr"
|
|
98
99
|
"-Wliteral-conversion"
|
|
99
100
|
"-Wmissing-declarations"
|
|
101
|
+
"-Wnullability-completeness"
|
|
100
102
|
"-Woverlength-strings"
|
|
101
103
|
"-Wpointer-arith"
|
|
102
104
|
"-Wself-assign"
|
|
@@ -106,6 +108,7 @@ list(APPEND ABSL_LLVM_FLAGS
|
|
|
106
108
|
"-Wstring-conversion"
|
|
107
109
|
"-Wtautological-overlap-compare"
|
|
108
110
|
"-Wtautological-unsigned-zero-compare"
|
|
111
|
+
"-Wthread-safety"
|
|
109
112
|
"-Wundef"
|
|
110
113
|
"-Wuninitialized"
|
|
111
114
|
"-Wunreachable-code"
|
|
@@ -118,6 +121,7 @@ list(APPEND ABSL_LLVM_FLAGS
|
|
|
118
121
|
"-Wno-implicit-float-conversion"
|
|
119
122
|
"-Wno-implicit-int-float-conversion"
|
|
120
123
|
"-Wno-unknown-warning-option"
|
|
124
|
+
"-Wno-unused-command-line-argument"
|
|
121
125
|
"-DNOMINMAX"
|
|
122
126
|
)
|
|
123
127
|
|
|
@@ -144,6 +148,7 @@ list(APPEND ABSL_LLVM_TEST_FLAGS
|
|
|
144
148
|
"-Wstring-conversion"
|
|
145
149
|
"-Wtautological-overlap-compare"
|
|
146
150
|
"-Wtautological-unsigned-zero-compare"
|
|
151
|
+
"-Wthread-safety"
|
|
147
152
|
"-Wundef"
|
|
148
153
|
"-Wuninitialized"
|
|
149
154
|
"-Wunreachable-code"
|
|
@@ -156,11 +161,13 @@ list(APPEND ABSL_LLVM_TEST_FLAGS
|
|
|
156
161
|
"-Wno-implicit-float-conversion"
|
|
157
162
|
"-Wno-implicit-int-float-conversion"
|
|
158
163
|
"-Wno-unknown-warning-option"
|
|
164
|
+
"-Wno-unused-command-line-argument"
|
|
159
165
|
"-DNOMINMAX"
|
|
160
166
|
"-Wno-deprecated-declarations"
|
|
161
167
|
"-Wno-implicit-int-conversion"
|
|
162
168
|
"-Wno-missing-prototypes"
|
|
163
169
|
"-Wno-missing-variable-declarations"
|
|
170
|
+
"-Wno-nullability-completeness"
|
|
164
171
|
"-Wno-shadow"
|
|
165
172
|
"-Wno-shorten-64-to-32"
|
|
166
173
|
"-Wno-sign-compare"
|
|
@@ -181,8 +188,6 @@ list(APPEND ABSL_MSVC_FLAGS
|
|
|
181
188
|
"/wd4005"
|
|
182
189
|
"/wd4068"
|
|
183
190
|
"/wd4180"
|
|
184
|
-
"/wd4244"
|
|
185
|
-
"/wd4267"
|
|
186
191
|
"/wd4503"
|
|
187
192
|
"/wd4800"
|
|
188
193
|
"/DNOMINMAX"
|
|
@@ -202,8 +207,6 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
|
|
|
202
207
|
"/wd4005"
|
|
203
208
|
"/wd4068"
|
|
204
209
|
"/wd4180"
|
|
205
|
-
"/wd4244"
|
|
206
|
-
"/wd4267"
|
|
207
210
|
"/wd4503"
|
|
208
211
|
"/wd4800"
|
|
209
212
|
"/DNOMINMAX"
|
|
@@ -213,23 +216,9 @@ list(APPEND ABSL_MSVC_TEST_FLAGS
|
|
|
213
216
|
"/D_ENABLE_EXTENDED_ALIGNED_STORAGE"
|
|
214
217
|
"/wd4018"
|
|
215
218
|
"/wd4101"
|
|
219
|
+
"/wd4244"
|
|
220
|
+
"/wd4267"
|
|
216
221
|
"/wd4503"
|
|
217
222
|
"/wd4996"
|
|
218
223
|
"/DNOMINMAX"
|
|
219
224
|
)
|
|
220
|
-
|
|
221
|
-
list(APPEND ABSL_RANDOM_HWAES_ARM32_FLAGS
|
|
222
|
-
"-mfpu=neon"
|
|
223
|
-
)
|
|
224
|
-
|
|
225
|
-
list(APPEND ABSL_RANDOM_HWAES_ARM64_FLAGS
|
|
226
|
-
"-march=armv8-a+crypto"
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
|
|
230
|
-
)
|
|
231
|
-
|
|
232
|
-
list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
|
|
233
|
-
"-maes"
|
|
234
|
-
"-msse4.1"
|
|
235
|
-
)
|
|
@@ -24,6 +24,7 @@ ABSL_CLANG_CL_TEST_FLAGS = [
|
|
|
24
24
|
"-Wno-implicit-int-conversion",
|
|
25
25
|
"-Wno-missing-prototypes",
|
|
26
26
|
"-Wno-missing-variable-declarations",
|
|
27
|
+
"-Wno-nullability-completeness",
|
|
27
28
|
"-Wno-shadow",
|
|
28
29
|
"-Wno-shorten-64-to-32",
|
|
29
30
|
"-Wno-sign-compare",
|
|
@@ -98,6 +99,7 @@ ABSL_LLVM_FLAGS = [
|
|
|
98
99
|
"-Winvalid-constexpr",
|
|
99
100
|
"-Wliteral-conversion",
|
|
100
101
|
"-Wmissing-declarations",
|
|
102
|
+
"-Wnullability-completeness",
|
|
101
103
|
"-Woverlength-strings",
|
|
102
104
|
"-Wpointer-arith",
|
|
103
105
|
"-Wself-assign",
|
|
@@ -107,6 +109,7 @@ ABSL_LLVM_FLAGS = [
|
|
|
107
109
|
"-Wstring-conversion",
|
|
108
110
|
"-Wtautological-overlap-compare",
|
|
109
111
|
"-Wtautological-unsigned-zero-compare",
|
|
112
|
+
"-Wthread-safety",
|
|
110
113
|
"-Wundef",
|
|
111
114
|
"-Wuninitialized",
|
|
112
115
|
"-Wunreachable-code",
|
|
@@ -119,6 +122,7 @@ ABSL_LLVM_FLAGS = [
|
|
|
119
122
|
"-Wno-implicit-float-conversion",
|
|
120
123
|
"-Wno-implicit-int-float-conversion",
|
|
121
124
|
"-Wno-unknown-warning-option",
|
|
125
|
+
"-Wno-unused-command-line-argument",
|
|
122
126
|
"-DNOMINMAX",
|
|
123
127
|
]
|
|
124
128
|
|
|
@@ -145,6 +149,7 @@ ABSL_LLVM_TEST_FLAGS = [
|
|
|
145
149
|
"-Wstring-conversion",
|
|
146
150
|
"-Wtautological-overlap-compare",
|
|
147
151
|
"-Wtautological-unsigned-zero-compare",
|
|
152
|
+
"-Wthread-safety",
|
|
148
153
|
"-Wundef",
|
|
149
154
|
"-Wuninitialized",
|
|
150
155
|
"-Wunreachable-code",
|
|
@@ -157,11 +162,13 @@ ABSL_LLVM_TEST_FLAGS = [
|
|
|
157
162
|
"-Wno-implicit-float-conversion",
|
|
158
163
|
"-Wno-implicit-int-float-conversion",
|
|
159
164
|
"-Wno-unknown-warning-option",
|
|
165
|
+
"-Wno-unused-command-line-argument",
|
|
160
166
|
"-DNOMINMAX",
|
|
161
167
|
"-Wno-deprecated-declarations",
|
|
162
168
|
"-Wno-implicit-int-conversion",
|
|
163
169
|
"-Wno-missing-prototypes",
|
|
164
170
|
"-Wno-missing-variable-declarations",
|
|
171
|
+
"-Wno-nullability-completeness",
|
|
165
172
|
"-Wno-shadow",
|
|
166
173
|
"-Wno-shorten-64-to-32",
|
|
167
174
|
"-Wno-sign-compare",
|
|
@@ -182,8 +189,6 @@ ABSL_MSVC_FLAGS = [
|
|
|
182
189
|
"/wd4005",
|
|
183
190
|
"/wd4068",
|
|
184
191
|
"/wd4180",
|
|
185
|
-
"/wd4244",
|
|
186
|
-
"/wd4267",
|
|
187
192
|
"/wd4503",
|
|
188
193
|
"/wd4800",
|
|
189
194
|
"/DNOMINMAX",
|
|
@@ -203,8 +208,6 @@ ABSL_MSVC_TEST_FLAGS = [
|
|
|
203
208
|
"/wd4005",
|
|
204
209
|
"/wd4068",
|
|
205
210
|
"/wd4180",
|
|
206
|
-
"/wd4244",
|
|
207
|
-
"/wd4267",
|
|
208
211
|
"/wd4503",
|
|
209
212
|
"/wd4800",
|
|
210
213
|
"/DNOMINMAX",
|
|
@@ -214,23 +217,9 @@ ABSL_MSVC_TEST_FLAGS = [
|
|
|
214
217
|
"/D_ENABLE_EXTENDED_ALIGNED_STORAGE",
|
|
215
218
|
"/wd4018",
|
|
216
219
|
"/wd4101",
|
|
220
|
+
"/wd4244",
|
|
221
|
+
"/wd4267",
|
|
217
222
|
"/wd4503",
|
|
218
223
|
"/wd4996",
|
|
219
224
|
"/DNOMINMAX",
|
|
220
225
|
]
|
|
221
|
-
|
|
222
|
-
ABSL_RANDOM_HWAES_ARM32_FLAGS = [
|
|
223
|
-
"-mfpu=neon",
|
|
224
|
-
]
|
|
225
|
-
|
|
226
|
-
ABSL_RANDOM_HWAES_ARM64_FLAGS = [
|
|
227
|
-
"-march=armv8-a+crypto",
|
|
228
|
-
]
|
|
229
|
-
|
|
230
|
-
ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
|
|
231
|
-
]
|
|
232
|
-
|
|
233
|
-
ABSL_RANDOM_HWAES_X64_FLAGS = [
|
|
234
|
-
"-maes",
|
|
235
|
-
"-msse4.1",
|
|
236
|
-
]
|
|
@@ -57,6 +57,7 @@ ABSL_LLVM_FLAGS = [
|
|
|
57
57
|
"-Winvalid-constexpr",
|
|
58
58
|
"-Wliteral-conversion",
|
|
59
59
|
"-Wmissing-declarations",
|
|
60
|
+
"-Wnullability-completeness",
|
|
60
61
|
"-Woverlength-strings",
|
|
61
62
|
"-Wpointer-arith",
|
|
62
63
|
"-Wself-assign",
|
|
@@ -66,6 +67,7 @@ ABSL_LLVM_FLAGS = [
|
|
|
66
67
|
"-Wstring-conversion",
|
|
67
68
|
"-Wtautological-overlap-compare",
|
|
68
69
|
"-Wtautological-unsigned-zero-compare",
|
|
70
|
+
"-Wthread-safety",
|
|
69
71
|
"-Wundef",
|
|
70
72
|
"-Wuninitialized",
|
|
71
73
|
"-Wunreachable-code",
|
|
@@ -82,6 +84,7 @@ ABSL_LLVM_FLAGS = [
|
|
|
82
84
|
# Disable warnings on unknown warning flags (when warning flags are
|
|
83
85
|
# unknown on older compiler versions)
|
|
84
86
|
"-Wno-unknown-warning-option",
|
|
87
|
+
"-Wno-unused-command-line-argument",
|
|
85
88
|
# Don't define min and max macros (Build on Windows using clang)
|
|
86
89
|
"-DNOMINMAX",
|
|
87
90
|
]
|
|
@@ -91,6 +94,7 @@ ABSL_LLVM_TEST_ADDITIONAL_FLAGS = [
|
|
|
91
94
|
"-Wno-implicit-int-conversion",
|
|
92
95
|
"-Wno-missing-prototypes",
|
|
93
96
|
"-Wno-missing-variable-declarations",
|
|
97
|
+
"-Wno-nullability-completeness",
|
|
94
98
|
"-Wno-shadow",
|
|
95
99
|
"-Wno-shorten-64-to-32",
|
|
96
100
|
"-Wno-sign-compare",
|
|
@@ -118,10 +122,6 @@ MSVC_WARNING_FLAGS = [
|
|
|
118
122
|
"/wd4068", # unknown pragma
|
|
119
123
|
# qualifier applied to function type has no meaning; ignored
|
|
120
124
|
"/wd4180",
|
|
121
|
-
# conversion from 'type1' to 'type2', possible loss of data
|
|
122
|
-
"/wd4244",
|
|
123
|
-
# conversion from 'size_t' to 'type', possible loss of data
|
|
124
|
-
"/wd4267",
|
|
125
125
|
# The decorated name was longer than the compiler limit
|
|
126
126
|
"/wd4503",
|
|
127
127
|
# forcing value to bool 'true' or 'false' (performance warning)
|
|
@@ -158,24 +158,33 @@ def GccStyleFilterAndCombine(default_flags, test_flags):
|
|
|
158
158
|
COPT_VARS = {
|
|
159
159
|
"ABSL_GCC_FLAGS": ABSL_GCC_FLAGS,
|
|
160
160
|
"ABSL_GCC_TEST_FLAGS": GccStyleFilterAndCombine(
|
|
161
|
-
ABSL_GCC_FLAGS, ABSL_GCC_TEST_ADDITIONAL_FLAGS
|
|
161
|
+
ABSL_GCC_FLAGS, ABSL_GCC_TEST_ADDITIONAL_FLAGS
|
|
162
|
+
),
|
|
162
163
|
"ABSL_LLVM_FLAGS": ABSL_LLVM_FLAGS,
|
|
163
164
|
"ABSL_LLVM_TEST_FLAGS": GccStyleFilterAndCombine(
|
|
164
|
-
ABSL_LLVM_FLAGS, ABSL_LLVM_TEST_ADDITIONAL_FLAGS
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
"ABSL_CLANG_CL_TEST_FLAGS":
|
|
168
|
-
MSVC_BIG_WARNING_FLAGS + MSVC_DEFINES + ABSL_LLVM_TEST_ADDITIONAL_FLAGS
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
165
|
+
ABSL_LLVM_FLAGS, ABSL_LLVM_TEST_ADDITIONAL_FLAGS
|
|
166
|
+
),
|
|
167
|
+
"ABSL_CLANG_CL_FLAGS": MSVC_BIG_WARNING_FLAGS + MSVC_DEFINES,
|
|
168
|
+
"ABSL_CLANG_CL_TEST_FLAGS": (
|
|
169
|
+
MSVC_BIG_WARNING_FLAGS + MSVC_DEFINES + ABSL_LLVM_TEST_ADDITIONAL_FLAGS
|
|
170
|
+
),
|
|
171
|
+
"ABSL_MSVC_FLAGS": (
|
|
172
|
+
MSVC_BIG_WARNING_FLAGS + MSVC_WARNING_FLAGS + MSVC_DEFINES
|
|
173
|
+
),
|
|
174
|
+
"ABSL_MSVC_TEST_FLAGS": (
|
|
175
|
+
MSVC_BIG_WARNING_FLAGS
|
|
176
|
+
+ MSVC_WARNING_FLAGS
|
|
177
|
+
+ MSVC_DEFINES
|
|
178
|
+
+ [
|
|
173
179
|
"/wd4018", # signed/unsigned mismatch
|
|
174
180
|
"/wd4101", # unreferenced local variable
|
|
181
|
+
"/wd4244", # shortening conversion
|
|
182
|
+
"/wd4267", # shortening conversion
|
|
175
183
|
"/wd4503", # decorated name length exceeded, name was truncated
|
|
176
184
|
"/wd4996", # use of deprecated symbol
|
|
177
185
|
"/DNOMINMAX", # disable the min() and max() macros from <windows.h>
|
|
178
|
-
]
|
|
186
|
+
]
|
|
187
|
+
),
|
|
179
188
|
"ABSL_MSVC_LINKOPTS": [
|
|
180
189
|
# Object file doesn't export any previously undefined symbols
|
|
181
190
|
"-ignore:4221",
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
|
|
16
|
+
load("@rules_cc//cc:cc_library.bzl", "cc_library")
|
|
17
|
+
load("@rules_cc//cc:cc_test.bzl", "cc_test")
|
|
15
18
|
load(
|
|
16
19
|
"//absl:copts/configure_copts.bzl",
|
|
17
20
|
"ABSL_DEFAULT_COPTS",
|
|
@@ -54,10 +54,6 @@ crc32c_t ExtendCrc32cInternal(crc32c_t initial_crc,
|
|
|
54
54
|
|
|
55
55
|
} // namespace crc_internal
|
|
56
56
|
|
|
57
|
-
crc32c_t ComputeCrc32c(absl::string_view buf) {
|
|
58
|
-
return ExtendCrc32c(crc32c_t{0}, buf);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
57
|
crc32c_t ExtendCrc32cByZeroes(crc32c_t initial_crc, size_t length) {
|
|
62
58
|
uint32_t crc = static_cast<uint32_t>(initial_crc) ^ kCRC32Xor;
|
|
63
59
|
CrcEngine()->ExtendByZeroes(&crc, length);
|
|
@@ -83,11 +83,6 @@ crc32c_t ExtendCrc32cInternal(crc32c_t initial_crc,
|
|
|
83
83
|
// CRC32C Computation Functions
|
|
84
84
|
// -----------------------------------------------------------------------------
|
|
85
85
|
|
|
86
|
-
// ComputeCrc32c()
|
|
87
|
-
//
|
|
88
|
-
// Returns the CRC32C value of the provided string.
|
|
89
|
-
crc32c_t ComputeCrc32c(absl::string_view buf);
|
|
90
|
-
|
|
91
86
|
// ExtendCrc32c()
|
|
92
87
|
//
|
|
93
88
|
// Computes a CRC32C value from an `initial_crc` CRC32C value including the
|
|
@@ -112,6 +107,13 @@ inline crc32c_t ExtendCrc32c(crc32c_t initial_crc,
|
|
|
112
107
|
return crc_internal::ExtendCrc32cInternal(initial_crc, buf_to_add);
|
|
113
108
|
}
|
|
114
109
|
|
|
110
|
+
// ComputeCrc32c()
|
|
111
|
+
//
|
|
112
|
+
// Returns the CRC32C value of the provided string.
|
|
113
|
+
inline crc32c_t ComputeCrc32c(absl::string_view buf) {
|
|
114
|
+
return ExtendCrc32c(crc32c_t{0}, buf);
|
|
115
|
+
}
|
|
116
|
+
|
|
115
117
|
// ExtendCrc32cByZeroes()
|
|
116
118
|
//
|
|
117
119
|
// Computes a CRC32C value for a buffer with an `initial_crc` CRC32C value,
|
|
@@ -40,7 +40,13 @@ void BM_Calculate(benchmark::State& state) {
|
|
|
40
40
|
benchmark::DoNotOptimize(crc);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
BENCHMARK(BM_Calculate)
|
|
43
|
+
BENCHMARK(BM_Calculate)
|
|
44
|
+
->Arg(0)
|
|
45
|
+
->Arg(1)
|
|
46
|
+
->Arg(100)
|
|
47
|
+
->Arg(2048)
|
|
48
|
+
->Arg(10000)
|
|
49
|
+
->Arg(500000);
|
|
44
50
|
|
|
45
51
|
void BM_Extend(benchmark::State& state) {
|
|
46
52
|
int len = state.range(0);
|
|
@@ -53,8 +59,14 @@ void BM_Extend(benchmark::State& state) {
|
|
|
53
59
|
benchmark::DoNotOptimize(crc);
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
|
-
BENCHMARK(BM_Extend)
|
|
57
|
-
|
|
62
|
+
BENCHMARK(BM_Extend)
|
|
63
|
+
->Arg(0)
|
|
64
|
+
->Arg(1)
|
|
65
|
+
->Arg(100)
|
|
66
|
+
->Arg(2048)
|
|
67
|
+
->Arg(10000)
|
|
68
|
+
->Arg(500000)
|
|
69
|
+
->Arg(100 * 1000 * 1000);
|
|
58
70
|
|
|
59
71
|
// Make working set >> CPU cache size to benchmark prefetches better
|
|
60
72
|
void BM_ExtendCacheMiss(benchmark::State& state) {
|
|
@@ -147,7 +159,8 @@ void BM_Memcpy(benchmark::State& state) {
|
|
|
147
159
|
state.SetBytesProcessed(static_cast<int64_t>(state.iterations()) *
|
|
148
160
|
state.range(0));
|
|
149
161
|
}
|
|
150
|
-
BENCHMARK(BM_Memcpy)->Arg(0)->Arg(1)->Arg(100)->Arg(10000)->Arg(
|
|
162
|
+
BENCHMARK(BM_Memcpy)->Arg(0)->Arg(1)->Arg(100)->Arg(2048)->Arg(10000)->Arg(
|
|
163
|
+
500000);
|
|
151
164
|
|
|
152
165
|
void BM_RemoveSuffix(benchmark::State& state) {
|
|
153
166
|
int full_string_len = state.range(0);
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
#include "absl/crc/crc32c.h"
|
|
16
16
|
|
|
17
17
|
#include <algorithm>
|
|
18
|
+
#include <array>
|
|
18
19
|
#include <cstddef>
|
|
19
20
|
#include <cstdint>
|
|
20
21
|
#include <cstring>
|
|
22
|
+
#include <limits>
|
|
21
23
|
#include <sstream>
|
|
22
24
|
#include <string>
|
|
25
|
+
#include <tuple>
|
|
23
26
|
|
|
24
27
|
#include "gtest/gtest.h"
|
|
25
28
|
#include "absl/crc/internal/crc32c.h"
|
|
@@ -101,6 +104,33 @@ TEST(CRC32C, ExtendByZeroes) {
|
|
|
101
104
|
}
|
|
102
105
|
}
|
|
103
106
|
|
|
107
|
+
// Test ExtendCrc32cByZeroes() for the full range of the size_t length,
|
|
108
|
+
// including every bit. This is important because ExtendCrc32cByZeroes() is
|
|
109
|
+
// implemented using an array of constants, where each entry in the array is
|
|
110
|
+
// used only when a particular bit in the size_t length is set. This test
|
|
111
|
+
// verifies that every entry in that array is correct.
|
|
112
|
+
TEST(CRC32C, ExtendByZeroesAllLengthBits) {
|
|
113
|
+
absl::crc32c_t base_crc = absl::crc32c_t{0xc99465aa};
|
|
114
|
+
const std::array<std::tuple<uint64_t, absl::crc32c_t>, 5> kTestCases = {{
|
|
115
|
+
{0, absl::crc32c_t(0xc99465aa)},
|
|
116
|
+
{std::numeric_limits<uint32_t>::max(), absl::crc32c_t(0x9b1d5aaa)},
|
|
117
|
+
{0x12345678, absl::crc32c_t(0xcf0e9553)},
|
|
118
|
+
{std::numeric_limits<uint64_t>::max(), absl::crc32c_t(0xf5bff489)},
|
|
119
|
+
{0x12345678abcdefff, absl::crc32c_t(0xaa1ffb0b)},
|
|
120
|
+
}};
|
|
121
|
+
for (const auto &test_case : kTestCases) {
|
|
122
|
+
uint64_t length = std::get<0>(test_case);
|
|
123
|
+
absl::crc32c_t expected_value = std::get<1>(test_case);
|
|
124
|
+
SCOPED_TRACE(length);
|
|
125
|
+
if (length > std::numeric_limits<size_t>::max()) {
|
|
126
|
+
// On 32-bit platforms, 64-bit lengths cannot be used or tested.
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
EXPECT_EQ(absl::ExtendCrc32cByZeroes(base_crc, static_cast<size_t>(length)),
|
|
130
|
+
expected_value);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
104
134
|
TEST(CRC32C, UnextendByZeroes) {
|
|
105
135
|
constexpr size_t kExtendByValues[] = {2, 200, 20000, 200000, 20000000};
|
|
106
136
|
constexpr size_t kUnextendByValues[] = {0, 100, 10000, 100000, 10000000};
|
|
@@ -145,6 +145,14 @@ CpuType GetIntelCpuType() {
|
|
|
145
145
|
}
|
|
146
146
|
case 0x5e: // Skylake (client)
|
|
147
147
|
return CpuType::kIntelSkylake;
|
|
148
|
+
case 0x6a: // Ice Lake
|
|
149
|
+
return CpuType::kIntelIcelake;
|
|
150
|
+
case 0x8f: // Sapphire Rapids
|
|
151
|
+
return CpuType::kIntelSapphirerapids;
|
|
152
|
+
case 0xcf: // Emerald Rapids
|
|
153
|
+
return CpuType::kIntelEmeraldrapids;
|
|
154
|
+
case 0xad: // Granite Rapids
|
|
155
|
+
return CpuType::kIntelGraniterapidsap;
|
|
148
156
|
default:
|
|
149
157
|
return CpuType::kUnknown;
|
|
150
158
|
}
|
|
@@ -210,6 +218,14 @@ CpuType GetAmdCpuType() {
|
|
|
210
218
|
return CpuType::kUnknown;
|
|
211
219
|
}
|
|
212
220
|
break;
|
|
221
|
+
case 0x1A:
|
|
222
|
+
switch (model_num) {
|
|
223
|
+
case 0x2:
|
|
224
|
+
return CpuType::kAmdTurin;
|
|
225
|
+
default:
|
|
226
|
+
return CpuType::kUnknown;
|
|
227
|
+
}
|
|
228
|
+
break;
|
|
213
229
|
default:
|
|
214
230
|
return CpuType::kUnknown;
|
|
215
231
|
}
|
|
@@ -259,6 +275,7 @@ CpuType GetCpuType() {
|
|
|
259
275
|
case 0xd40: return CpuType::kArmNeoverseV1;
|
|
260
276
|
case 0xd49: return CpuType::kArmNeoverseN2;
|
|
261
277
|
case 0xd4f: return CpuType::kArmNeoverseV2;
|
|
278
|
+
case 0xd8e: return CpuType::kArmNeoverseN3;
|
|
262
279
|
default:
|
|
263
280
|
return CpuType::kUnknown;
|
|
264
281
|
}
|
|
@@ -30,10 +30,15 @@ enum class CpuType {
|
|
|
30
30
|
kAmdNaples,
|
|
31
31
|
kAmdMilan,
|
|
32
32
|
kAmdGenoa,
|
|
33
|
+
kAmdTurin,
|
|
33
34
|
kAmdRyzenV3000,
|
|
34
35
|
kIntelCascadelakeXeon,
|
|
35
36
|
kIntelSkylakeXeon,
|
|
36
37
|
kIntelBroadwell,
|
|
38
|
+
kIntelIcelake,
|
|
39
|
+
kIntelSapphirerapids,
|
|
40
|
+
kIntelEmeraldrapids,
|
|
41
|
+
kIntelGraniterapidsap,
|
|
37
42
|
kIntelSkylake,
|
|
38
43
|
kIntelIvybridge,
|
|
39
44
|
kIntelSandybridge,
|
|
@@ -42,7 +47,8 @@ enum class CpuType {
|
|
|
42
47
|
kArmNeoverseV1,
|
|
43
48
|
kAmpereSiryn,
|
|
44
49
|
kArmNeoverseN2,
|
|
45
|
-
kArmNeoverseV2
|
|
50
|
+
kArmNeoverseV2,
|
|
51
|
+
kArmNeoverseN3,
|
|
46
52
|
};
|
|
47
53
|
|
|
48
54
|
// Returns the type of host CPU this code is running on. Returns kUnknown if
|