re2 1.23.0 → 1.23.2
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 +2 -0
- package/binding.gyp +3 -2
- package/package.json +5 -5
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +25 -4
- package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +6 -1
- package/vendor/abseil-cpp/CMakeLists.txt +2 -2
- package/vendor/abseil-cpp/MODULE.bazel +2 -2
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +191 -140
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +818 -0
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +44 -5
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +42 -3
- package/vendor/abseil-cpp/absl/base/attributes.h +5 -1
- package/vendor/abseil-cpp/absl/base/call_once_test.cc +10 -10
- package/vendor/abseil-cpp/absl/base/casts.cc +61 -0
- package/vendor/abseil-cpp/absl/base/casts.h +128 -2
- package/vendor/abseil-cpp/absl/base/casts_test.cc +151 -0
- package/vendor/abseil-cpp/absl/base/config.h +13 -37
- package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +4 -0
- package/vendor/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
- package/vendor/abseil-cpp/absl/base/internal/nullability_traits_test.cc +98 -0
- package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +13 -7
- package/vendor/abseil-cpp/absl/base/internal/spinlock.h +16 -11
- package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +2 -1
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +0 -9
- package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -6
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -1
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- package/vendor/abseil-cpp/absl/base/macros.h +40 -17
- package/vendor/abseil-cpp/absl/base/nullability.h +1 -1
- package/vendor/abseil-cpp/absl/base/optimization.h +1 -3
- package/vendor/abseil-cpp/absl/base/options.h +1 -27
- package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +5 -8
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +4 -0
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +195 -2
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +136 -2
- package/vendor/abseil-cpp/absl/container/btree_map.h +56 -6
- package/vendor/abseil-cpp/absl/container/btree_set.h +52 -6
- package/vendor/abseil-cpp/absl/container/btree_test.cc +107 -1
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +755 -0
- package/vendor/abseil-cpp/absl/container/chunked_queue_benchmark.cc +386 -0
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +768 -0
- package/vendor/abseil-cpp/absl/container/fixed_array.h +4 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +16 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +1 -2
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +16 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -2
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +12 -4
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +21 -0
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +14 -5
- package/vendor/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
- package/vendor/abseil-cpp/absl/container/internal/common.h +51 -0
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +7 -1
- package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +11 -0
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +1 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -14
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +11 -8
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +3 -4
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +23 -6
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +31 -15
- package/vendor/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +4 -12
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -10
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +149 -23
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +120 -126
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +4 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +8 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +14 -59
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +111 -22
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +53 -112
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +10 -15
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +45 -61
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +53 -112
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +6 -9
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +25 -31
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +666 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +140 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_map_test.cc +987 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set.h +527 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +84 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set_test.cc +947 -0
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +17 -6
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +16 -5
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +1 -2
- package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +79 -0
- package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +79 -0
- package/vendor/abseil-cpp/absl/copts/copts.py +17 -4
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +67 -13
- package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +31 -0
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +34 -0
- package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +2 -2
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +118 -0
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +71 -0
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +97 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +2 -2
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +35 -67
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +3 -0
- package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +24 -1
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +39 -15
- package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +25 -40
- package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/flags/declare.h +9 -0
- package/vendor/abseil-cpp/absl/flags/flag.h +2 -1
- package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +3 -2
- package/vendor/abseil-cpp/absl/flags/marshalling.cc +1 -16
- package/vendor/abseil-cpp/absl/flags/parse.cc +4 -2
- package/vendor/abseil-cpp/absl/flags/parse_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/reflection.cc +4 -3
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +3 -1
- package/vendor/abseil-cpp/absl/functional/function_ref.h +125 -20
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +122 -9
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +13 -2
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +42 -4
- package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +11 -0
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +5 -2
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +184 -53
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +116 -10
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +43 -4
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +35 -1
- package/vendor/abseil-cpp/absl/log/check_test_impl.inc +59 -4
- package/vendor/abseil-cpp/absl/log/die_if_null.cc +3 -1
- package/vendor/abseil-cpp/absl/log/die_if_null.h +24 -3
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +31 -1
- package/vendor/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- package/vendor/abseil-cpp/absl/log/internal/check_op.cc +3 -1
- package/vendor/abseil-cpp/absl/log/internal/check_op.h +44 -18
- package/vendor/abseil-cpp/absl/log/internal/conditions.h +38 -35
- package/vendor/abseil-cpp/absl/log/internal/container.h +312 -0
- package/vendor/abseil-cpp/absl/log/internal/container_test.cc +254 -0
- package/vendor/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -2
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +5 -1
- package/vendor/abseil-cpp/absl/log/internal/strip.h +30 -31
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +19 -19
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- package/vendor/abseil-cpp/absl/log/log.h +2 -2
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +51 -0
- package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +46 -0
- package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
- package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +40 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +67 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires_test.cc +66 -0
- package/vendor/abseil-cpp/absl/meta/type_traits.h +42 -1
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +14 -0
- package/vendor/abseil-cpp/absl/numeric/int128.h +41 -21
- package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +52 -5
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +18 -7
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +1 -0
- package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +3 -5
- package/vendor/abseil-cpp/absl/random/internal/platform.h +0 -13
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -1
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +1 -27
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +17 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +16 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +4 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +2 -2
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +2 -1
- package/vendor/abseil-cpp/absl/status/status.cc +4 -0
- package/vendor/abseil-cpp/absl/status/status.h +5 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +48 -0
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +27 -0
- package/vendor/abseil-cpp/absl/status/status_test.cc +1 -0
- package/vendor/abseil-cpp/absl/status/statusor.h +1 -1
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +101 -21
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +99 -5
- package/vendor/abseil-cpp/absl/strings/ascii.h +9 -4
- package/vendor/abseil-cpp/absl/strings/cord.cc +15 -10
- package/vendor/abseil-cpp/absl/strings/cord.h +1 -1
- package/vendor/abseil-cpp/absl/strings/escaping.cc +126 -94
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +95 -0
- package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +2 -0
- package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +8 -8
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +24 -18
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +10 -16
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +9 -7
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer.cc +107 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +423 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +685 -0
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -12
- package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +21 -7
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +495 -8
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -15
- package/vendor/abseil-cpp/absl/strings/numbers.cc +71 -8
- package/vendor/abseil-cpp/absl/strings/numbers.h +25 -12
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +70 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +194 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +154 -0
- package/vendor/abseil-cpp/absl/strings/str_cat.cc +96 -91
- package/vendor/abseil-cpp/absl/strings/str_cat.h +17 -12
- package/vendor/abseil-cpp/absl/strings/str_format_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +1 -1
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/string_view.h +8 -718
- package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1 -1265
- package/vendor/abseil-cpp/absl/strings/substitute.cc +24 -24
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +2 -3
- package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +15 -5
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2 -1
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +47 -23
- package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/time/civil_time_test.cc +58 -103
- package/vendor/abseil-cpp/absl/time/clock.cc +18 -16
- package/vendor/abseil-cpp/absl/time/clock_test.cc +2 -2
- package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +144 -0
- package/vendor/abseil-cpp/absl/time/duration_test.cc +26 -29
- package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +7 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +4 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +186 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +9 -9
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +12 -12
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +47 -47
- package/vendor/abseil-cpp/absl/time/time.cc +4 -4
- package/vendor/abseil-cpp/absl/time/time.h +10 -10
- package/vendor/abseil-cpp/absl/time/time_test.cc +1 -0
- package/vendor/abseil-cpp/absl/types/compare.h +62 -61
- package/vendor/abseil-cpp/absl/types/compare_test.cc +3 -3
- package/vendor/abseil-cpp/absl/types/internal/span.h +1 -0
- package/vendor/abseil-cpp/absl/types/optional.h +2 -2
- package/vendor/abseil-cpp/absl/types/span.h +10 -2
- package/vendor/abseil-cpp/absl/utility/utility.h +13 -0
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +0 -1
- package/vendor/abseil-cpp/ci/cmake_common.sh +1 -1
- package/vendor/abseil-cpp/ci/cmake_install_test.sh +6 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +2 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +6 -0
- package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +6 -0
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +3 -2
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +5 -0
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -0
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -0
- package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +6 -1
- package/vendor/abseil-cpp/absl/base/internal/identity.h +0 -39
- package/vendor/abseil-cpp/absl/strings/string_view.cc +0 -257
- package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +0 -380
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
#include <cstddef>
|
|
20
20
|
#include <cstdint>
|
|
21
21
|
#include <cstring>
|
|
22
|
+
#include <memory>
|
|
23
|
+
#include <tuple>
|
|
22
24
|
#include <utility>
|
|
23
25
|
|
|
24
26
|
#include "absl/base/attributes.h"
|
|
@@ -108,6 +110,13 @@ size_t Resize1To3NewOffset(size_t hash, PerTableSeed seed) {
|
|
|
108
110
|
return SingleGroupTableH1(hash, seed) & 2;
|
|
109
111
|
}
|
|
110
112
|
|
|
113
|
+
// Returns the address of the ith slot in slots where each slot occupies
|
|
114
|
+
// slot_size.
|
|
115
|
+
inline void* SlotAddress(void* slot_array, size_t slot, size_t slot_size) {
|
|
116
|
+
return static_cast<void*>(static_cast<char*>(slot_array) +
|
|
117
|
+
(slot * slot_size));
|
|
118
|
+
}
|
|
119
|
+
|
|
111
120
|
// Returns the address of the slot `i` iterations after `slot` assuming each
|
|
112
121
|
// slot has the specified size.
|
|
113
122
|
inline void* NextSlot(void* slot, size_t slot_size, size_t i = 1) {
|
|
@@ -123,6 +132,16 @@ inline void* PrevSlot(void* slot, size_t slot_size) {
|
|
|
123
132
|
|
|
124
133
|
} // namespace
|
|
125
134
|
|
|
135
|
+
// Must be defined out-of-line to avoid MSVC error C2482 on some platforms,
|
|
136
|
+
// which is caused by non-constexpr initialization.
|
|
137
|
+
uint16_t HashtableSize::NextSeed() {
|
|
138
|
+
static_assert(PerTableSeed::kBitCount == 16);
|
|
139
|
+
thread_local uint16_t seed =
|
|
140
|
+
static_cast<uint16_t>(reinterpret_cast<uintptr_t>(&seed));
|
|
141
|
+
seed += uint16_t{0xad53};
|
|
142
|
+
return seed;
|
|
143
|
+
}
|
|
144
|
+
|
|
126
145
|
GenerationType* EmptyGeneration() {
|
|
127
146
|
if (SwisstableGenerationsEnabled()) {
|
|
128
147
|
constexpr size_t kNumEmptyGenerations = 1024;
|
|
@@ -147,23 +166,33 @@ bool CommonFieldsGenerationInfoEnabled::should_rehash_for_bug_detection_on_move(
|
|
|
147
166
|
|
|
148
167
|
namespace {
|
|
149
168
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
169
|
+
// Probes an array of control bits using a probe sequence,
|
|
170
|
+
// and returns the mask corresponding to the first group with a deleted or empty
|
|
171
|
+
// slot.
|
|
172
|
+
inline Group::NonIterableBitMaskType probe_till_first_non_full_group(
|
|
173
|
+
const ctrl_t* ctrl, probe_seq<Group::kWidth>& seq,
|
|
174
|
+
[[maybe_unused]] size_t capacity) {
|
|
156
175
|
while (true) {
|
|
157
176
|
GroupFullEmptyOrDeleted g{ctrl + seq.offset()};
|
|
158
177
|
auto mask = g.MaskEmptyOrDeleted();
|
|
159
178
|
if (mask) {
|
|
160
|
-
return
|
|
179
|
+
return mask;
|
|
161
180
|
}
|
|
162
181
|
seq.next();
|
|
163
182
|
ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity && "full table!");
|
|
164
183
|
}
|
|
165
184
|
}
|
|
166
185
|
|
|
186
|
+
FindInfo find_first_non_full_from_h1(const ctrl_t* ctrl, size_t h1,
|
|
187
|
+
size_t capacity) {
|
|
188
|
+
auto seq = probe_h1(capacity, h1);
|
|
189
|
+
if (IsEmptyOrDeleted(ctrl[seq.offset()])) {
|
|
190
|
+
return {seq.offset(), /*probe_length=*/0};
|
|
191
|
+
}
|
|
192
|
+
auto mask = probe_till_first_non_full_group(ctrl, seq, capacity);
|
|
193
|
+
return {seq.offset(mask.LowestBitSet()), seq.index()};
|
|
194
|
+
}
|
|
195
|
+
|
|
167
196
|
// Probes an array of control bits using a probe sequence derived from `hash`,
|
|
168
197
|
// and returns the offset corresponding to the first deleted or empty slot.
|
|
169
198
|
//
|
|
@@ -176,6 +205,16 @@ FindInfo find_first_non_full(const CommonFields& common, size_t hash) {
|
|
|
176
205
|
common.capacity());
|
|
177
206
|
}
|
|
178
207
|
|
|
208
|
+
// Same as `find_first_non_full`, but returns the mask corresponding to the
|
|
209
|
+
// first group with a deleted or empty slot.
|
|
210
|
+
std::pair<FindInfo, Group::NonIterableBitMaskType> find_first_non_full_group(
|
|
211
|
+
const CommonFields& common, size_t hash) {
|
|
212
|
+
auto seq = probe(common, hash);
|
|
213
|
+
auto mask =
|
|
214
|
+
probe_till_first_non_full_group(common.control(), seq, common.capacity());
|
|
215
|
+
return {{seq.offset(), seq.index()}, mask};
|
|
216
|
+
}
|
|
217
|
+
|
|
179
218
|
// Whether a table fits in half a group. A half-group table fits entirely into a
|
|
180
219
|
// probing group, i.e., has a capacity < `Group::kWidth`.
|
|
181
220
|
//
|
|
@@ -297,6 +336,69 @@ void PrepareInsertCommon(CommonFields& common) {
|
|
|
297
336
|
common.maybe_increment_generation_on_insert();
|
|
298
337
|
}
|
|
299
338
|
|
|
339
|
+
// Sets sanitizer poisoning for slot corresponding to control byte being set.
|
|
340
|
+
inline void DoSanitizeOnSetCtrl(const CommonFields& c, size_t i, ctrl_t h,
|
|
341
|
+
size_t slot_size) {
|
|
342
|
+
ABSL_SWISSTABLE_ASSERT(i < c.capacity());
|
|
343
|
+
auto* slot_i = static_cast<const char*>(c.slot_array()) + i * slot_size;
|
|
344
|
+
if (IsFull(h)) {
|
|
345
|
+
SanitizerUnpoisonMemoryRegion(slot_i, slot_size);
|
|
346
|
+
} else {
|
|
347
|
+
SanitizerPoisonMemoryRegion(slot_i, slot_size);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// Sets `ctrl[i]` to `h`.
|
|
352
|
+
//
|
|
353
|
+
// Unlike setting it directly, this function will perform bounds checks and
|
|
354
|
+
// mirror the value to the cloned tail if necessary.
|
|
355
|
+
inline void SetCtrl(const CommonFields& c, size_t i, ctrl_t h,
|
|
356
|
+
size_t slot_size) {
|
|
357
|
+
ABSL_SWISSTABLE_ASSERT(!c.is_small());
|
|
358
|
+
DoSanitizeOnSetCtrl(c, i, h, slot_size);
|
|
359
|
+
ctrl_t* ctrl = c.control();
|
|
360
|
+
ctrl[i] = h;
|
|
361
|
+
ctrl[((i - NumClonedBytes()) & c.capacity()) +
|
|
362
|
+
(NumClonedBytes() & c.capacity())] = h;
|
|
363
|
+
}
|
|
364
|
+
// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`.
|
|
365
|
+
inline void SetCtrl(const CommonFields& c, size_t i, h2_t h, size_t slot_size) {
|
|
366
|
+
SetCtrl(c, i, static_cast<ctrl_t>(h), slot_size);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// Like SetCtrl, but in a single group table, we can save some operations when
|
|
370
|
+
// setting the cloned control byte.
|
|
371
|
+
inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, ctrl_t h,
|
|
372
|
+
size_t slot_size) {
|
|
373
|
+
ABSL_SWISSTABLE_ASSERT(!c.is_small());
|
|
374
|
+
ABSL_SWISSTABLE_ASSERT(is_single_group(c.capacity()));
|
|
375
|
+
DoSanitizeOnSetCtrl(c, i, h, slot_size);
|
|
376
|
+
ctrl_t* ctrl = c.control();
|
|
377
|
+
ctrl[i] = h;
|
|
378
|
+
ctrl[i + c.capacity() + 1] = h;
|
|
379
|
+
}
|
|
380
|
+
// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`.
|
|
381
|
+
inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, h2_t h,
|
|
382
|
+
size_t slot_size) {
|
|
383
|
+
SetCtrlInSingleGroupTable(c, i, static_cast<ctrl_t>(h), slot_size);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Like SetCtrl, but in a table with capacity >= Group::kWidth - 1,
|
|
387
|
+
// we can save some operations when setting the cloned control byte.
|
|
388
|
+
inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, ctrl_t h,
|
|
389
|
+
size_t slot_size) {
|
|
390
|
+
ABSL_SWISSTABLE_ASSERT(c.capacity() >= Group::kWidth - 1);
|
|
391
|
+
DoSanitizeOnSetCtrl(c, i, h, slot_size);
|
|
392
|
+
ctrl_t* ctrl = c.control();
|
|
393
|
+
ctrl[i] = h;
|
|
394
|
+
ctrl[((i - NumClonedBytes()) & c.capacity()) + NumClonedBytes()] = h;
|
|
395
|
+
}
|
|
396
|
+
// Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`.
|
|
397
|
+
inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, h2_t h,
|
|
398
|
+
size_t slot_size) {
|
|
399
|
+
SetCtrlInLargeTable(c, i, static_cast<ctrl_t>(h), slot_size);
|
|
400
|
+
}
|
|
401
|
+
|
|
300
402
|
size_t DropDeletesWithoutResizeAndPrepareInsert(
|
|
301
403
|
CommonFields& common, const PolicyFunctions& __restrict policy,
|
|
302
404
|
size_t new_hash) {
|
|
@@ -402,7 +504,7 @@ size_t DropDeletesWithoutResizeAndPrepareInsert(
|
|
|
402
504
|
ResetGrowthLeft(common);
|
|
403
505
|
FindInfo find_info = find_first_non_full(common, new_hash);
|
|
404
506
|
SetCtrlInLargeTable(common, find_info.offset, H2(new_hash), slot_size);
|
|
405
|
-
common.infoz().
|
|
507
|
+
common.infoz().RecordInsertMiss(new_hash, find_info.probe_length);
|
|
406
508
|
common.infoz().RecordRehash(total_probe_length);
|
|
407
509
|
return find_info.offset;
|
|
408
510
|
}
|
|
@@ -618,7 +720,7 @@ void ReportGrowthToInfozImpl(CommonFields& common, HashtablezInfoHandle infoz,
|
|
|
618
720
|
ABSL_SWISSTABLE_ASSERT(infoz.IsSampled());
|
|
619
721
|
infoz.RecordStorageChanged(common.size() - 1, common.capacity());
|
|
620
722
|
infoz.RecordRehash(total_probe_length);
|
|
621
|
-
infoz.
|
|
723
|
+
infoz.RecordInsertMiss(hash, distance_from_desired);
|
|
622
724
|
common.set_has_infoz();
|
|
623
725
|
// TODO(b/413062340): we could potentially store infoz in place of the
|
|
624
726
|
// control pointer for the capacity 1 case.
|
|
@@ -662,7 +764,16 @@ BackingArrayPtrs AllocBackingArray(CommonFields& common,
|
|
|
662
764
|
void* alloc) {
|
|
663
765
|
RawHashSetLayout layout(new_capacity, policy.slot_size, policy.slot_align,
|
|
664
766
|
has_infoz);
|
|
665
|
-
|
|
767
|
+
// Perform a direct call in the common case to allow for profile-guided
|
|
768
|
+
// heap optimization (PGHO) to understand which allocation function is used.
|
|
769
|
+
constexpr size_t kDefaultAlignment = BackingArrayAlignment(alignof(size_t));
|
|
770
|
+
char* mem = static_cast<char*>(
|
|
771
|
+
ABSL_PREDICT_TRUE(
|
|
772
|
+
policy.alloc ==
|
|
773
|
+
(&AllocateBackingArray<kDefaultAlignment, std::allocator<char>>))
|
|
774
|
+
? AllocateBackingArray<kDefaultAlignment, std::allocator<char>>(
|
|
775
|
+
alloc, layout.alloc_size())
|
|
776
|
+
: policy.alloc(alloc, layout.alloc_size()));
|
|
666
777
|
const GenerationType old_generation = common.generation();
|
|
667
778
|
common.set_generation_ptr(
|
|
668
779
|
reinterpret_cast<GenerationType*>(mem + layout.generation_offset()));
|
|
@@ -1295,12 +1406,12 @@ std::pair<ctrl_t*, void*> Grow1To3AndPrepareInsert(
|
|
|
1295
1406
|
ctrl_t* old_ctrl = common.control();
|
|
1296
1407
|
void* old_slots = common.slot_array();
|
|
1297
1408
|
|
|
1298
|
-
common.set_capacity(kNewCapacity);
|
|
1299
1409
|
const size_t slot_size = policy.slot_size;
|
|
1300
1410
|
const size_t slot_align = policy.slot_align;
|
|
1301
1411
|
void* alloc = policy.get_char_alloc(common);
|
|
1302
1412
|
HashtablezInfoHandle infoz = common.infoz();
|
|
1303
1413
|
const bool has_infoz = infoz.IsSampled();
|
|
1414
|
+
common.set_capacity(kNewCapacity);
|
|
1304
1415
|
|
|
1305
1416
|
const auto [new_ctrl, new_slots] =
|
|
1306
1417
|
AllocBackingArray(common, policy, kNewCapacity, has_infoz, alloc);
|
|
@@ -1536,7 +1647,7 @@ size_t PrepareInsertLargeSlow(CommonFields& common,
|
|
|
1536
1647
|
PrepareInsertCommon(common);
|
|
1537
1648
|
common.growth_info().OverwriteControlAsFull(common.control()[target.offset]);
|
|
1538
1649
|
SetCtrlInLargeTable(common, target.offset, H2(hash), policy.slot_size);
|
|
1539
|
-
common.infoz().
|
|
1650
|
+
common.infoz().RecordInsertMiss(hash, target.probe_length);
|
|
1540
1651
|
return target.offset;
|
|
1541
1652
|
}
|
|
1542
1653
|
|
|
@@ -1557,7 +1668,7 @@ GrowEmptySooTableToNextCapacityForceSamplingAndPrepareInsert(
|
|
|
1557
1668
|
const size_t new_hash = get_hash(common.seed().seed());
|
|
1558
1669
|
SetCtrlInSingleGroupTable(common, SooSlotIndex(), H2(new_hash),
|
|
1559
1670
|
policy.slot_size);
|
|
1560
|
-
common.infoz().
|
|
1671
|
+
common.infoz().RecordInsertMiss(new_hash, /*distance_from_desired=*/0);
|
|
1561
1672
|
return SooSlotIndex();
|
|
1562
1673
|
}
|
|
1563
1674
|
|
|
@@ -1820,7 +1931,7 @@ void Copy(CommonFields& common, const PolicyFunctions& __restrict policy,
|
|
|
1820
1931
|
// a full `insert`.
|
|
1821
1932
|
const size_t hash = (*hasher)(hash_fn, that_slot, seed);
|
|
1822
1933
|
FindInfo target = find_first_non_full(common, hash);
|
|
1823
|
-
infoz.
|
|
1934
|
+
infoz.RecordInsertMiss(hash, target.probe_length);
|
|
1824
1935
|
offset = target.offset;
|
|
1825
1936
|
SetCtrl(common, offset, H2(hash), slot_size);
|
|
1826
1937
|
copy_fn(SlotAddress(common.slot_array(), offset, slot_size), that_slot);
|
|
@@ -1854,7 +1965,9 @@ void ReserveTableToFitNewSize(CommonFields& common,
|
|
|
1854
1965
|
namespace {
|
|
1855
1966
|
size_t PrepareInsertLargeImpl(CommonFields& common,
|
|
1856
1967
|
const PolicyFunctions& __restrict policy,
|
|
1857
|
-
size_t hash,
|
|
1968
|
+
size_t hash,
|
|
1969
|
+
Group::NonIterableBitMaskType mask_empty,
|
|
1970
|
+
FindInfo target_group) {
|
|
1858
1971
|
ABSL_SWISSTABLE_ASSERT(!common.is_small());
|
|
1859
1972
|
const GrowthInfo growth_info = common.growth_info();
|
|
1860
1973
|
// When there are no deleted slots in the table
|
|
@@ -1865,23 +1978,27 @@ size_t PrepareInsertLargeImpl(CommonFields& common,
|
|
|
1865
1978
|
}
|
|
1866
1979
|
PrepareInsertCommon(common);
|
|
1867
1980
|
common.growth_info().OverwriteEmptyAsFull();
|
|
1868
|
-
|
|
1869
|
-
common.
|
|
1870
|
-
|
|
1981
|
+
target_group.offset += mask_empty.LowestBitSet();
|
|
1982
|
+
target_group.offset &= common.capacity();
|
|
1983
|
+
SetCtrl(common, target_group.offset, H2(hash), policy.slot_size);
|
|
1984
|
+
common.infoz().RecordInsertMiss(hash, target_group.probe_length);
|
|
1985
|
+
return target_group.offset;
|
|
1871
1986
|
}
|
|
1872
1987
|
} // namespace
|
|
1873
1988
|
|
|
1874
1989
|
size_t PrepareInsertLarge(CommonFields& common,
|
|
1875
1990
|
const PolicyFunctions& __restrict policy, size_t hash,
|
|
1876
|
-
|
|
1991
|
+
Group::NonIterableBitMaskType mask_empty,
|
|
1992
|
+
FindInfo target_group) {
|
|
1877
1993
|
// NOLINTNEXTLINE(misc-static-assert)
|
|
1878
1994
|
ABSL_SWISSTABLE_ASSERT(!SwisstableGenerationsEnabled());
|
|
1879
|
-
return PrepareInsertLargeImpl(common, policy, hash,
|
|
1995
|
+
return PrepareInsertLargeImpl(common, policy, hash, mask_empty, target_group);
|
|
1880
1996
|
}
|
|
1881
1997
|
|
|
1882
1998
|
size_t PrepareInsertLargeGenerationsEnabled(
|
|
1883
1999
|
CommonFields& common, const PolicyFunctions& policy, size_t hash,
|
|
1884
|
-
|
|
2000
|
+
Group::NonIterableBitMaskType mask_empty, FindInfo target_group,
|
|
2001
|
+
absl::FunctionRef<size_t(size_t)> recompute_hash) {
|
|
1885
2002
|
// NOLINTNEXTLINE(misc-static-assert)
|
|
1886
2003
|
ABSL_SWISSTABLE_ASSERT(SwisstableGenerationsEnabled());
|
|
1887
2004
|
if (common.should_rehash_for_bug_detection_on_insert()) {
|
|
@@ -1890,9 +2007,10 @@ size_t PrepareInsertLargeGenerationsEnabled(
|
|
|
1890
2007
|
ResizeAllocatedTableWithSeedChange(
|
|
1891
2008
|
common, policy, common.growth_left() > 0 ? cap : NextCapacity(cap));
|
|
1892
2009
|
hash = recompute_hash(common.seed().seed());
|
|
1893
|
-
|
|
2010
|
+
std::tie(target_group, mask_empty) =
|
|
2011
|
+
find_first_non_full_group(common, hash);
|
|
1894
2012
|
}
|
|
1895
|
-
return PrepareInsertLargeImpl(common, policy, hash,
|
|
2013
|
+
return PrepareInsertLargeImpl(common, policy, hash, mask_empty, target_group);
|
|
1896
2014
|
}
|
|
1897
2015
|
|
|
1898
2016
|
namespace {
|
|
@@ -1959,6 +2077,14 @@ template size_t GrowSooTableToNextCapacityAndPrepareInsert<
|
|
|
1959
2077
|
static_assert(MaxSooSlotSize() == 16);
|
|
1960
2078
|
#endif
|
|
1961
2079
|
|
|
2080
|
+
template void* AllocateBackingArray<BackingArrayAlignment(alignof(size_t)),
|
|
2081
|
+
std::allocator<char>>(void* alloc,
|
|
2082
|
+
size_t n);
|
|
2083
|
+
template void DeallocateBackingArray<BackingArrayAlignment(alignof(size_t)),
|
|
2084
|
+
std::allocator<char>>(
|
|
2085
|
+
void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size,
|
|
2086
|
+
size_t slot_align, bool had_infoz);
|
|
2087
|
+
|
|
1962
2088
|
} // namespace container_internal
|
|
1963
2089
|
ABSL_NAMESPACE_END
|
|
1964
2090
|
} // namespace absl
|