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
|
@@ -117,8 +117,8 @@
|
|
|
117
117
|
//
|
|
118
118
|
// LTS releases can be obtained from
|
|
119
119
|
// https://github.com/abseil/abseil-cpp/releases.
|
|
120
|
-
#define ABSL_LTS_RELEASE_VERSION
|
|
121
|
-
#define ABSL_LTS_RELEASE_PATCH_LEVEL
|
|
120
|
+
#define ABSL_LTS_RELEASE_VERSION 20260107
|
|
121
|
+
#define ABSL_LTS_RELEASE_PATCH_LEVEL 0
|
|
122
122
|
|
|
123
123
|
// Helper macro to convert a CPP variable to a string literal.
|
|
124
124
|
#define ABSL_INTERNAL_DO_TOKEN_STR(x) #x
|
|
@@ -360,10 +360,10 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
|
360
360
|
// Darwin (macOS and iOS) __APPLE__
|
|
361
361
|
// Akaros (http://akaros.org) __ros__
|
|
362
362
|
// Windows _WIN32
|
|
363
|
-
// NaCL __native_client__
|
|
364
363
|
// AsmJS __asmjs__
|
|
365
364
|
// WebAssembly (Emscripten) __EMSCRIPTEN__
|
|
366
365
|
// Fuchsia __Fuchsia__
|
|
366
|
+
// WebAssembly (WASI) _WASI_EMULATED_MMAN (implies __wasi__)
|
|
367
367
|
//
|
|
368
368
|
// Note that since Android defines both __ANDROID__ and __linux__, one
|
|
369
369
|
// may probe for either Linux or Android by simply testing for __linux__.
|
|
@@ -374,12 +374,13 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
|
374
374
|
// POSIX.1-2001.
|
|
375
375
|
#ifdef ABSL_HAVE_MMAP
|
|
376
376
|
#error ABSL_HAVE_MMAP cannot be directly set
|
|
377
|
-
#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) ||
|
|
378
|
-
defined(_AIX) || defined(__ros__) || defined(
|
|
379
|
-
defined(
|
|
380
|
-
defined(
|
|
381
|
-
defined(
|
|
382
|
-
defined(
|
|
377
|
+
#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
|
|
378
|
+
defined(_AIX) || defined(__ros__) || defined(__asmjs__) || \
|
|
379
|
+
defined(__EMSCRIPTEN__) || defined(__Fuchsia__) || defined(__sun) || \
|
|
380
|
+
defined(__myriad2__) || defined(__HAIKU__) || defined(__OpenBSD__) || \
|
|
381
|
+
defined(__NetBSD__) || defined(__QNX__) || defined(__VXWORKS__) || \
|
|
382
|
+
defined(__hexagon__) || defined(__XTENSA__) || \
|
|
383
|
+
defined(_WASI_EMULATED_MMAN)
|
|
383
384
|
#define ABSL_HAVE_MMAP 1
|
|
384
385
|
#endif
|
|
385
386
|
|
|
@@ -455,8 +456,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
|
455
456
|
// WASI doesn't support signals
|
|
456
457
|
#elif defined(__Fuchsia__)
|
|
457
458
|
// Signals don't exist on fuchsia.
|
|
458
|
-
#elif defined(__native_client__)
|
|
459
|
-
// Signals don't exist on hexagon/QuRT
|
|
460
459
|
#elif defined(__hexagon__)
|
|
461
460
|
#else
|
|
462
461
|
// other standard libraries
|
|
@@ -527,20 +526,11 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
|
527
526
|
#define ABSL_USES_STD_ANY 1
|
|
528
527
|
#define ABSL_HAVE_STD_OPTIONAL 1
|
|
529
528
|
#define ABSL_USES_STD_OPTIONAL 1
|
|
529
|
+
#define ABSL_HAVE_STD_STRING_VIEW 1
|
|
530
|
+
#define ABSL_USES_STD_STRING_VIEW 1
|
|
530
531
|
#define ABSL_HAVE_STD_VARIANT 1
|
|
531
532
|
#define ABSL_USES_STD_VARIANT 1
|
|
532
533
|
|
|
533
|
-
// ABSL_HAVE_STD_STRING_VIEW
|
|
534
|
-
//
|
|
535
|
-
// Deprecated: always defined to 1.
|
|
536
|
-
// std::string_view was added in C++17, which means all versions of C++
|
|
537
|
-
// supported by Abseil have it.
|
|
538
|
-
#ifdef ABSL_HAVE_STD_STRING_VIEW
|
|
539
|
-
#error "ABSL_HAVE_STD_STRING_VIEW cannot be directly set."
|
|
540
|
-
#else
|
|
541
|
-
#define ABSL_HAVE_STD_STRING_VIEW 1
|
|
542
|
-
#endif
|
|
543
|
-
|
|
544
534
|
// ABSL_HAVE_STD_ORDERING
|
|
545
535
|
//
|
|
546
536
|
// Checks whether C++20 std::{partial,weak,strong}_ordering are available.
|
|
@@ -557,20 +547,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
|
557
547
|
#define ABSL_HAVE_STD_ORDERING 1
|
|
558
548
|
#endif
|
|
559
549
|
|
|
560
|
-
// ABSL_USES_STD_STRING_VIEW
|
|
561
|
-
//
|
|
562
|
-
// Indicates whether absl::string_view is an alias for std::string_view.
|
|
563
|
-
#if !defined(ABSL_OPTION_USE_STD_STRING_VIEW)
|
|
564
|
-
#error options.h is misconfigured.
|
|
565
|
-
#elif ABSL_OPTION_USE_STD_STRING_VIEW == 0
|
|
566
|
-
#undef ABSL_USES_STD_STRING_VIEW
|
|
567
|
-
#elif ABSL_OPTION_USE_STD_STRING_VIEW == 1 || \
|
|
568
|
-
ABSL_OPTION_USE_STD_STRING_VIEW == 2
|
|
569
|
-
#define ABSL_USES_STD_STRING_VIEW 1
|
|
570
|
-
#else
|
|
571
|
-
#error options.h is misconfigured.
|
|
572
|
-
#endif
|
|
573
|
-
|
|
574
550
|
// ABSL_USES_STD_ORDERING
|
|
575
551
|
//
|
|
576
552
|
// Indicates whether absl::{partial,weak,strong}_ordering are aliases for the
|
|
@@ -756,7 +732,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
|
756
732
|
#ifdef ABSL_INTERNAL_HAS_CXA_DEMANGLE
|
|
757
733
|
#error ABSL_INTERNAL_HAS_CXA_DEMANGLE cannot be directly set
|
|
758
734
|
#elif defined(OS_ANDROID) && (defined(__i386__) || defined(__x86_64__))
|
|
759
|
-
#
|
|
735
|
+
#undef ABSL_INTERNAL_HAS_CXA_DEMANGLE
|
|
760
736
|
#elif defined(__GNUC__)
|
|
761
737
|
#define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1
|
|
762
738
|
#elif defined(__clang__) && !defined(_MSC_VER)
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
#endif
|
|
90
90
|
|
|
91
91
|
// Memory annotations are also made available to LLVM's Memory Sanitizer
|
|
92
|
-
#if defined(ABSL_HAVE_MEMORY_SANITIZER)
|
|
92
|
+
#if defined(ABSL_HAVE_MEMORY_SANITIZER)
|
|
93
93
|
#define ABSL_INTERNAL_MEMORY_ANNOTATIONS_ENABLED 1
|
|
94
94
|
#endif
|
|
95
95
|
|
|
@@ -60,6 +60,10 @@ template <typename IteratorTag, typename Iterator>
|
|
|
60
60
|
using IsAtLeastIterator =
|
|
61
61
|
std::is_convertible<IteratorConcept<Iterator>, IteratorTag>;
|
|
62
62
|
|
|
63
|
+
template <typename Iterator>
|
|
64
|
+
using IsAtLeastInputIterator =
|
|
65
|
+
IsAtLeastIterator<std::input_iterator_tag, Iterator>;
|
|
66
|
+
|
|
63
67
|
template <typename Iterator>
|
|
64
68
|
using IsAtLeastForwardIterator =
|
|
65
69
|
IsAtLeastIterator<std::forward_iterator_tag, Iterator>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Copyright 2025 The Abseil Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#ifndef ABSL_BASE_INTERNAL_NULLABILITY_TRAITS_H_
|
|
16
|
+
#define ABSL_BASE_INTERNAL_NULLABILITY_TRAITS_H_
|
|
17
|
+
|
|
18
|
+
#include <type_traits>
|
|
19
|
+
|
|
20
|
+
#include "absl/base/config.h"
|
|
21
|
+
#include "absl/base/nullability.h"
|
|
22
|
+
|
|
23
|
+
namespace absl {
|
|
24
|
+
ABSL_NAMESPACE_BEGIN
|
|
25
|
+
namespace base_internal {
|
|
26
|
+
|
|
27
|
+
// `value` is true if the type `T` is compatible with nullability annotations
|
|
28
|
+
// (is a raw pointer, a smart pointer, or marked with
|
|
29
|
+
// ABSL_NULLABILITY_COMPATIBLE). Prefer to use the higher-level
|
|
30
|
+
// `AddNonnullIfCompatible` if that is sufficient.
|
|
31
|
+
//
|
|
32
|
+
// NOTE: This should not be used to detect if the compiler is Clang (since
|
|
33
|
+
// Clang is the only compiler that supports nullability annotations).
|
|
34
|
+
#if defined(__clang__) && !defined(__OBJC__) && \
|
|
35
|
+
ABSL_HAVE_FEATURE(nullability_on_classes)
|
|
36
|
+
template <class T, class = void>
|
|
37
|
+
struct IsNullabilityCompatibleType {
|
|
38
|
+
constexpr static bool value = false;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
template <class T>
|
|
42
|
+
struct IsNullabilityCompatibleType<T, std::void_t<absl_nullable T>> {
|
|
43
|
+
constexpr static bool value = true;
|
|
44
|
+
};
|
|
45
|
+
#else
|
|
46
|
+
// False when absl_nullable is a no-op (for non-Clang compilers or Objective-C.)
|
|
47
|
+
template <class T, class = void>
|
|
48
|
+
struct IsNullabilityCompatibleType {
|
|
49
|
+
constexpr static bool value = false;
|
|
50
|
+
};
|
|
51
|
+
#endif
|
|
52
|
+
|
|
53
|
+
// A trait to add `absl_nonnull` to a type if it is compatible with nullability
|
|
54
|
+
// annotations.
|
|
55
|
+
template <typename T, bool ShouldAdd = IsNullabilityCompatibleType<T>::value>
|
|
56
|
+
struct AddNonnullIfCompatible;
|
|
57
|
+
|
|
58
|
+
template <typename T>
|
|
59
|
+
struct AddNonnullIfCompatible<T, false> {
|
|
60
|
+
using type = T;
|
|
61
|
+
};
|
|
62
|
+
template <typename T>
|
|
63
|
+
struct AddNonnullIfCompatible<T, true> {
|
|
64
|
+
using type = absl_nonnull T;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
} // namespace base_internal
|
|
68
|
+
ABSL_NAMESPACE_END
|
|
69
|
+
} // namespace absl
|
|
70
|
+
|
|
71
|
+
#endif // ABSL_BASE_INTERNAL_NULLABILITY_TRAITS_H_
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Copyright 2025 The Abseil Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "absl/base/internal/nullability_traits.h"
|
|
16
|
+
|
|
17
|
+
#include <memory>
|
|
18
|
+
#include <type_traits>
|
|
19
|
+
|
|
20
|
+
#include "gtest/gtest.h"
|
|
21
|
+
#include "absl/base/config.h"
|
|
22
|
+
#include "absl/base/nullability.h"
|
|
23
|
+
|
|
24
|
+
namespace absl {
|
|
25
|
+
ABSL_NAMESPACE_BEGIN
|
|
26
|
+
namespace base_internal {
|
|
27
|
+
namespace {
|
|
28
|
+
|
|
29
|
+
struct NotSmartPtr {
|
|
30
|
+
int* x;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
class ABSL_NULLABILITY_COMPATIBLE MySmartPtr : std::unique_ptr<int> {};
|
|
34
|
+
|
|
35
|
+
// The IsNullabilityCompatibleType trait value can only be true when we define
|
|
36
|
+
// `absl_nullable` (isn't a no-op).
|
|
37
|
+
#if defined(__clang__) && !defined(__OBJC__) && \
|
|
38
|
+
ABSL_HAVE_FEATURE(nullability_on_classes)
|
|
39
|
+
#define EXPECT_TRUE_IF_SUPPORTED EXPECT_TRUE
|
|
40
|
+
#else
|
|
41
|
+
#define EXPECT_TRUE_IF_SUPPORTED EXPECT_FALSE
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
TEST(NullabilityTraitsTest, IsNullabilityEligibleTypePrimitives) {
|
|
45
|
+
EXPECT_FALSE(IsNullabilityCompatibleType<int>::value);
|
|
46
|
+
EXPECT_FALSE(IsNullabilityCompatibleType<int*&>::value);
|
|
47
|
+
|
|
48
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<int*>::value);
|
|
49
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<int**>::value);
|
|
50
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<int* const>::value);
|
|
51
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<const int*>::value);
|
|
52
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<void (*)(int)>::value);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
TEST(NullabilityTraitsTest, IsNullabilityCompatibleTypeAliases) {
|
|
56
|
+
using MyInt = int;
|
|
57
|
+
using MyIntPtr = int*;
|
|
58
|
+
EXPECT_FALSE(IsNullabilityCompatibleType<MyInt>::value);
|
|
59
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<MyIntPtr>::value);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
TEST(NullabilityTraitsTest, IsNullabilityCompatibleTypeSmartPointers) {
|
|
63
|
+
EXPECT_TRUE_IF_SUPPORTED(
|
|
64
|
+
IsNullabilityCompatibleType<std::unique_ptr<int>>::value);
|
|
65
|
+
EXPECT_TRUE_IF_SUPPORTED(
|
|
66
|
+
IsNullabilityCompatibleType<std::shared_ptr<int>>::value);
|
|
67
|
+
|
|
68
|
+
EXPECT_FALSE(IsNullabilityCompatibleType<NotSmartPtr>::value);
|
|
69
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<NotSmartPtr*>::value);
|
|
70
|
+
EXPECT_TRUE_IF_SUPPORTED(IsNullabilityCompatibleType<MySmartPtr>::value);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#undef EXPECT_TRUE_IF_SUPPORTED
|
|
74
|
+
|
|
75
|
+
TEST(NullabilityTraitsTest, AddNonnullIfCompatiblePassThroughPrimitives) {
|
|
76
|
+
EXPECT_TRUE((std::is_same_v<AddNonnullIfCompatible<int>::type, int>));
|
|
77
|
+
EXPECT_TRUE((std::is_same_v<AddNonnullIfCompatible<int*>::type, int*>));
|
|
78
|
+
EXPECT_TRUE(
|
|
79
|
+
(std::is_same_v<AddNonnullIfCompatible<int* const>::type, int* const>));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
TEST(NullabilityTraitsTest, AddNonnullIfCompatiblePassThroughSmartPointers) {
|
|
83
|
+
EXPECT_TRUE(
|
|
84
|
+
(std::is_same_v<AddNonnullIfCompatible<std::unique_ptr<int>>::type,
|
|
85
|
+
std::unique_ptr<int>>));
|
|
86
|
+
EXPECT_TRUE(
|
|
87
|
+
(std::is_same_v<AddNonnullIfCompatible<std::shared_ptr<int>>::type,
|
|
88
|
+
std::shared_ptr<int>>));
|
|
89
|
+
EXPECT_TRUE(
|
|
90
|
+
(std::is_same_v<AddNonnullIfCompatible<NotSmartPtr>::type, NotSmartPtr>));
|
|
91
|
+
EXPECT_TRUE(
|
|
92
|
+
(std::is_same_v<AddNonnullIfCompatible<MySmartPtr>::type, MySmartPtr>));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
} // namespace
|
|
96
|
+
} // namespace base_internal
|
|
97
|
+
ABSL_NAMESPACE_END
|
|
98
|
+
} // namespace absl
|
|
@@ -41,9 +41,8 @@
|
|
|
41
41
|
//
|
|
42
42
|
// This preprocessor token is also defined in raw_io.cc. If you need to copy
|
|
43
43
|
// this, consider moving both to config.h instead.
|
|
44
|
-
#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) ||
|
|
45
|
-
defined(__hexagon__) || defined(__Fuchsia__) ||
|
|
46
|
-
defined(__native_client__) || defined(__OpenBSD__) || \
|
|
44
|
+
#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
|
|
45
|
+
defined(__hexagon__) || defined(__Fuchsia__) || defined(__OpenBSD__) || \
|
|
47
46
|
defined(__EMSCRIPTEN__) || defined(__ASYLO__)
|
|
48
47
|
|
|
49
48
|
#include <unistd.h>
|
|
@@ -158,7 +157,7 @@ void RawLogVA(absl::LogSeverity severity, const char* file, int line,
|
|
|
158
157
|
#endif
|
|
159
158
|
|
|
160
159
|
#ifdef ABSL_MIN_LOG_LEVEL
|
|
161
|
-
if (severity < static_cast<absl::
|
|
160
|
+
if (severity < static_cast<absl::LogSeverityAtLeast>(ABSL_MIN_LOG_LEVEL) &&
|
|
162
161
|
severity < absl::LogSeverity::kFatal) {
|
|
163
162
|
enabled = false;
|
|
164
163
|
}
|
|
@@ -71,17 +71,23 @@ void RegisterSpinLockProfiler(void (*fn)(const void *contendedlock,
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
// Monitor the lock to see if its value changes within some time period
|
|
74
|
-
// (
|
|
74
|
+
// (adaptive_spin_count_ loop iterations). The last value read from the lock
|
|
75
75
|
// is returned from the method.
|
|
76
|
+
ABSL_CONST_INIT std::atomic<int> SpinLock::adaptive_spin_count_{0};
|
|
76
77
|
uint32_t SpinLock::SpinLoop() {
|
|
77
78
|
// We are already in the slow path of SpinLock, initialize the
|
|
78
79
|
// adaptive_spin_count here.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
if (adaptive_spin_count_.load(std::memory_order_relaxed) == 0) {
|
|
81
|
+
int current_spin_count = 0;
|
|
82
|
+
int new_spin_count = NumCPUs() > 1 ? 1000 : 1;
|
|
83
|
+
// If this fails, the value will remain unchanged. We may not spin for the
|
|
84
|
+
// intended duration, but that is still safe. We will try again on the next
|
|
85
|
+
// call to SpinLoop.
|
|
86
|
+
adaptive_spin_count_.compare_exchange_weak(
|
|
87
|
+
current_spin_count, new_spin_count, std::memory_order_relaxed,
|
|
88
|
+
std::memory_order_relaxed);
|
|
89
|
+
}
|
|
90
|
+
int c = adaptive_spin_count_.load(std::memory_order_relaxed);
|
|
85
91
|
uint32_t lock_value;
|
|
86
92
|
do {
|
|
87
93
|
lock_value = lockword_.load(std::memory_order_relaxed);
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
#include <atomic>
|
|
33
33
|
#include <cstdint>
|
|
34
|
+
#include <mutex>
|
|
34
35
|
#include <type_traits>
|
|
35
36
|
|
|
36
37
|
#include "absl/base/attributes.h"
|
|
@@ -47,6 +48,7 @@ namespace tcmalloc {
|
|
|
47
48
|
namespace tcmalloc_internal {
|
|
48
49
|
|
|
49
50
|
class AllocationGuardSpinLockHolder;
|
|
51
|
+
class Static;
|
|
50
52
|
|
|
51
53
|
} // namespace tcmalloc_internal
|
|
52
54
|
} // namespace tcmalloc
|
|
@@ -173,6 +175,16 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED SpinLock {
|
|
|
173
175
|
// Provide access to protected method above. Use for testing only.
|
|
174
176
|
friend struct SpinLockTest;
|
|
175
177
|
friend class tcmalloc::tcmalloc_internal::AllocationGuardSpinLockHolder;
|
|
178
|
+
friend class tcmalloc::tcmalloc_internal::Static;
|
|
179
|
+
|
|
180
|
+
static int GetAdaptiveSpinCount() {
|
|
181
|
+
return adaptive_spin_count_.load(std::memory_order_relaxed);
|
|
182
|
+
}
|
|
183
|
+
static void SetAdaptiveSpinCount(int count) {
|
|
184
|
+
adaptive_spin_count_.store(count, std::memory_order_relaxed);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
static std::atomic<int> adaptive_spin_count_;
|
|
176
188
|
|
|
177
189
|
private:
|
|
178
190
|
// lockword_ is used to store the following:
|
|
@@ -236,25 +248,18 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED SpinLock {
|
|
|
236
248
|
|
|
237
249
|
// Corresponding locker object that arranges to acquire a spinlock for
|
|
238
250
|
// the duration of a C++ scope.
|
|
239
|
-
class ABSL_SCOPED_LOCKABLE [[nodiscard]] SpinLockHolder
|
|
251
|
+
class ABSL_SCOPED_LOCKABLE [[nodiscard]] SpinLockHolder
|
|
252
|
+
: public std::lock_guard<SpinLock> {
|
|
240
253
|
public:
|
|
241
254
|
inline explicit SpinLockHolder(
|
|
242
255
|
SpinLock& l ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
|
|
243
256
|
ABSL_EXCLUSIVE_LOCK_FUNCTION(l)
|
|
244
|
-
:
|
|
245
|
-
l.lock();
|
|
246
|
-
}
|
|
257
|
+
: std::lock_guard<SpinLock>(l) {}
|
|
247
258
|
ABSL_DEPRECATE_AND_INLINE()
|
|
248
259
|
inline explicit SpinLockHolder(SpinLock* l) ABSL_EXCLUSIVE_LOCK_FUNCTION(l)
|
|
249
260
|
: SpinLockHolder(*l) {}
|
|
250
261
|
|
|
251
|
-
inline ~SpinLockHolder() ABSL_UNLOCK_FUNCTION()
|
|
252
|
-
|
|
253
|
-
SpinLockHolder(const SpinLockHolder&) = delete;
|
|
254
|
-
SpinLockHolder& operator=(const SpinLockHolder&) = delete;
|
|
255
|
-
|
|
256
|
-
private:
|
|
257
|
-
SpinLock& lock_;
|
|
262
|
+
inline ~SpinLockHolder() ABSL_UNLOCK_FUNCTION() = default;
|
|
258
263
|
};
|
|
259
264
|
|
|
260
265
|
// Register a hook for profiling support.
|
|
@@ -39,7 +39,8 @@ TEST(StrErrorTest, ValidErrorCode) {
|
|
|
39
39
|
TEST(StrErrorTest, InvalidErrorCode) {
|
|
40
40
|
errno = ERANGE;
|
|
41
41
|
EXPECT_THAT(absl::base_internal::StrError(-1),
|
|
42
|
-
AnyOf(Eq("No error information"), Eq("Unknown error -1")
|
|
42
|
+
AnyOf(Eq("No error information"), Eq("Unknown error -1"),
|
|
43
|
+
Eq("Unknown error")));
|
|
43
44
|
EXPECT_THAT(errno, Eq(ERANGE));
|
|
44
45
|
}
|
|
45
46
|
|
|
@@ -456,15 +456,6 @@ pid_t GetTID() { return getthrid(); }
|
|
|
456
456
|
|
|
457
457
|
pid_t GetTID() { return static_cast<pid_t>(_lwp_self()); }
|
|
458
458
|
|
|
459
|
-
#elif defined(__native_client__)
|
|
460
|
-
|
|
461
|
-
pid_t GetTID() {
|
|
462
|
-
auto* thread = pthread_self();
|
|
463
|
-
static_assert(sizeof(pid_t) == sizeof(thread),
|
|
464
|
-
"In NaCL int expected to be the same size as a pointer");
|
|
465
|
-
return reinterpret_cast<pid_t>(thread);
|
|
466
|
-
}
|
|
467
|
-
|
|
468
459
|
#elif defined(__Fuchsia__)
|
|
469
460
|
|
|
470
461
|
pid_t GetTID() {
|
|
@@ -39,12 +39,6 @@ TEST(SysinfoTest, NumCPUs) {
|
|
|
39
39
|
|
|
40
40
|
TEST(SysinfoTest, GetTID) {
|
|
41
41
|
EXPECT_EQ(GetTID(), GetTID()); // Basic compile and equality test.
|
|
42
|
-
#ifdef __native_client__
|
|
43
|
-
// Native Client has a race condition bug that leads to memory
|
|
44
|
-
// exhaustion when repeatedly creating and joining threads.
|
|
45
|
-
// https://bugs.chromium.org/p/nativeclient/issues/detail?id=1027
|
|
46
|
-
return;
|
|
47
|
-
#endif
|
|
48
42
|
// Test that TIDs are unique to each thread.
|
|
49
43
|
// Uses a few loops to exercise implementations that reallocate IDs.
|
|
50
44
|
for (int i = 0; i < 10; ++i) {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
// CycleClock that runs at atleast 1 MHz. We've found some Android
|
|
35
35
|
// ARM64 devices where this is not the case, so we disable it by
|
|
36
36
|
// default on Android ARM64.
|
|
37
|
-
#if defined(
|
|
37
|
+
#if defined(__APPLE__) || \
|
|
38
38
|
(defined(__ANDROID__) && defined(__aarch64__))
|
|
39
39
|
#define ABSL_USE_UNSCALED_CYCLECLOCK_DEFAULT 0
|
|
40
40
|
#else
|
|
@@ -169,42 +169,65 @@ ABSL_NAMESPACE_END
|
|
|
169
169
|
#define ABSL_INTERNAL_RETHROW do {} while (false)
|
|
170
170
|
#endif // ABSL_HAVE_EXCEPTIONS
|
|
171
171
|
|
|
172
|
-
//
|
|
172
|
+
// ABSL_REFACTOR_INLINE
|
|
173
|
+
//
|
|
174
|
+
// Marks a function or type for automated refactoring by go/cpp-inliner. It can
|
|
175
|
+
// be used on inline function definitions or type aliases in header files and
|
|
176
|
+
// should be combined with the `[[deprecated]]` attribute.
|
|
173
177
|
//
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
// definitions or type aliases. It should only be used within a header file. It
|
|
177
|
-
// differs from `ABSL_DEPRECATED` in the following ways:
|
|
178
|
+
// Using `ABSL_REFACTOR_INLINE` differs from using the `[[deprecated]]` alone in
|
|
179
|
+
// the following ways:
|
|
178
180
|
//
|
|
179
181
|
// 1. New uses of the function or type will be discouraged via Tricorder
|
|
180
182
|
// warnings.
|
|
181
183
|
// 2. If enabled via `METADATA`, automated changes will be sent out inlining the
|
|
182
184
|
// functions's body or replacing the type where it is used.
|
|
183
185
|
//
|
|
184
|
-
//
|
|
186
|
+
// Examples:
|
|
185
187
|
//
|
|
186
|
-
//
|
|
188
|
+
// [[deprecated("Use NewFunc() instead")]] ABSL_REFACTOR_INLINE
|
|
189
|
+
// inline int OldFunc(int x) {
|
|
187
190
|
// return NewFunc(x, 0);
|
|
188
191
|
// }
|
|
189
192
|
//
|
|
190
|
-
//
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
+
// using OldType [[deprecated("Use NewType instead")]] ABSL_REFACTOR_INLINE =
|
|
194
|
+
// NewType;
|
|
195
|
+
//
|
|
196
|
+
// will mark `OldFunc` and `OldType` as deprecated, and the go/cpp-inliner
|
|
197
|
+
// service will replace calls to `OldFunc(x)` with calls to `NewFunc(x, 0)` and
|
|
198
|
+
// `OldType` with `NewType`. Once all replacements have been completed, the old
|
|
199
|
+
// function or type can be deleted.
|
|
193
200
|
//
|
|
194
201
|
// See go/cpp-inliner for more information.
|
|
195
202
|
//
|
|
196
203
|
// Note: go/cpp-inliner is Google-internal service for automated refactoring.
|
|
197
204
|
// While open-source users do not have access to this service, the macro is
|
|
198
|
-
// provided for compatibility
|
|
199
|
-
#if ABSL_HAVE_CPP_ATTRIBUTE(
|
|
200
|
-
|
|
201
|
-
#define ABSL_DEPRECATE_AND_INLINE() [[deprecated, clang::annotate("inline-me")]]
|
|
202
|
-
#elif ABSL_HAVE_CPP_ATTRIBUTE(deprecated)
|
|
203
|
-
#define ABSL_DEPRECATE_AND_INLINE() [[deprecated]]
|
|
205
|
+
// provided for compatibility.
|
|
206
|
+
#if ABSL_HAVE_CPP_ATTRIBUTE(clang::annotate)
|
|
207
|
+
#define ABSL_REFACTOR_INLINE [[clang::annotate("inline-me")]]
|
|
204
208
|
#else
|
|
205
|
-
#define
|
|
209
|
+
#define ABSL_REFACTOR_INLINE
|
|
206
210
|
#endif
|
|
207
211
|
|
|
212
|
+
// ABSL_DEPRECATE_AND_INLINE()
|
|
213
|
+
//
|
|
214
|
+
// This is the original macro used by go/cpp-inliner that combines
|
|
215
|
+
// [[deprecated]] and ABSL_REFACTOR_INLINE.
|
|
216
|
+
//
|
|
217
|
+
// Examples:
|
|
218
|
+
//
|
|
219
|
+
// ABSL_DEPRECATE_AND_INLINE() inline int OldFunc(int x) {
|
|
220
|
+
// return NewFunc(x, 0);
|
|
221
|
+
// }
|
|
222
|
+
//
|
|
223
|
+
// using OldType ABSL_DEPRECATE_AND_INLINE() = NewType;
|
|
224
|
+
//
|
|
225
|
+
// The combination of `[[deprecated("Use X instead")]]` and
|
|
226
|
+
// `ABSL_REFACTOR_INLINE` is preferred because it provides a more informative
|
|
227
|
+
// deprecation message to developers, especially those that do not have access
|
|
228
|
+
// to the automated refactoring capabilities of go/cpp-inliner.
|
|
229
|
+
#define ABSL_DEPRECATE_AND_INLINE() [[deprecated]] ABSL_REFACTOR_INLINE
|
|
230
|
+
|
|
208
231
|
// Requires the compiler to prove that the size of the given object is at least
|
|
209
232
|
// the expected amount.
|
|
210
233
|
#if ABSL_HAVE_ATTRIBUTE(diagnose_if) && ABSL_HAVE_BUILTIN(__builtin_object_size)
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
// const Employee* absl_nonnull e;
|
|
82
82
|
//
|
|
83
83
|
// // A non-null pointer to a const nullable pointer to an `Employee`.
|
|
84
|
-
// Employee* absl_nullable const* absl_nonnull e
|
|
84
|
+
// Employee* absl_nullable const* absl_nonnull e;
|
|
85
85
|
//
|
|
86
86
|
// // A non-null function pointer.
|
|
87
87
|
// void (*absl_nonnull func)(int, double);
|
|
@@ -53,9 +53,7 @@
|
|
|
53
53
|
// ABSL_BLOCK_TAIL_CALL_OPTIMIZATION();
|
|
54
54
|
// return result;
|
|
55
55
|
// }
|
|
56
|
-
#if defined(
|
|
57
|
-
#define ABSL_BLOCK_TAIL_CALL_OPTIMIZATION() if (volatile int x = 0) { (void)x; }
|
|
58
|
-
#elif defined(__clang__)
|
|
56
|
+
#if defined(__clang__)
|
|
59
57
|
// Clang will not tail call given inline volatile assembly.
|
|
60
58
|
#define ABSL_BLOCK_TAIL_CALL_OPTIMIZATION() __asm__ __volatile__("")
|
|
61
59
|
#elif defined(__GNUC__)
|
|
@@ -73,32 +73,6 @@
|
|
|
73
73
|
// Type Compatibility Options
|
|
74
74
|
// -----------------------------------------------------------------------------
|
|
75
75
|
|
|
76
|
-
// ABSL_OPTION_USE_STD_STRING_VIEW
|
|
77
|
-
//
|
|
78
|
-
// This option controls whether absl::string_view is implemented as an alias to
|
|
79
|
-
// std::string_view, or as an independent implementation.
|
|
80
|
-
//
|
|
81
|
-
// A value of 0 means to use Abseil's implementation. This requires only C++11
|
|
82
|
-
// support, and is expected to work on every toolchain we support.
|
|
83
|
-
//
|
|
84
|
-
// A value of 1 means to use an alias to std::string_view. This requires that
|
|
85
|
-
// all code using Abseil is built in C++17 mode or later.
|
|
86
|
-
//
|
|
87
|
-
// A value of 2 means to detect the C++ version being used to compile Abseil,
|
|
88
|
-
// and use an alias only if a working std::string_view is available. This
|
|
89
|
-
// option is useful when you are building your program from source. It should
|
|
90
|
-
// not be used otherwise -- for example, if you are distributing Abseil in a
|
|
91
|
-
// binary package manager -- since in mode 2, absl::string_view will name a
|
|
92
|
-
// different type, with a different mangled name and binary layout, depending on
|
|
93
|
-
// the compiler flags passed by the end user. For more info, see
|
|
94
|
-
// https://abseil.io/about/design/dropin-types.
|
|
95
|
-
//
|
|
96
|
-
// User code should not inspect this macro. To check in the preprocessor if
|
|
97
|
-
// absl::string_view is a typedef of std::string_view, use the feature macro
|
|
98
|
-
// ABSL_USES_STD_STRING_VIEW.
|
|
99
|
-
|
|
100
|
-
#define ABSL_OPTION_USE_STD_STRING_VIEW 2
|
|
101
|
-
|
|
102
76
|
// ABSL_OPTION_USE_STD_ORDERING
|
|
103
77
|
//
|
|
104
78
|
// This option controls whether absl::{partial,weak,strong}_ordering are
|
|
@@ -149,7 +123,7 @@
|
|
|
149
123
|
// allowed.
|
|
150
124
|
|
|
151
125
|
#define ABSL_OPTION_USE_INLINE_NAMESPACE 1
|
|
152
|
-
#define ABSL_OPTION_INLINE_NAMESPACE_NAME
|
|
126
|
+
#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20260107
|
|
153
127
|
|
|
154
128
|
// ABSL_OPTION_HARDENED
|
|
155
129
|
//
|
|
@@ -271,16 +271,13 @@ TEST(SpinLockWithThreads, DoesNotDeadlock) {
|
|
|
271
271
|
}
|
|
272
272
|
};
|
|
273
273
|
|
|
274
|
+
int num_threads = base_internal::NumCPUs() * 2;
|
|
274
275
|
SpinLock stack_cooperative_spinlock;
|
|
275
276
|
SpinLock stack_noncooperative_spinlock(base_internal::SCHEDULE_KERNEL_ONLY);
|
|
276
|
-
Helper::DeadlockTest(&stack_cooperative_spinlock,
|
|
277
|
-
|
|
278
|
-
Helper::DeadlockTest(&
|
|
279
|
-
|
|
280
|
-
Helper::DeadlockTest(&static_cooperative_spinlock,
|
|
281
|
-
base_internal::NumCPUs() * 2);
|
|
282
|
-
Helper::DeadlockTest(&static_noncooperative_spinlock,
|
|
283
|
-
base_internal::NumCPUs() * 2);
|
|
277
|
+
Helper::DeadlockTest(&stack_cooperative_spinlock, num_threads);
|
|
278
|
+
Helper::DeadlockTest(&stack_noncooperative_spinlock, num_threads);
|
|
279
|
+
Helper::DeadlockTest(&static_cooperative_spinlock, num_threads);
|
|
280
|
+
Helper::DeadlockTest(&static_noncooperative_spinlock, num_threads);
|
|
284
281
|
}
|
|
285
282
|
|
|
286
283
|
TEST(SpinLockTest, IsCooperative) {
|
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
// `absl::Cleanup` implements the scope guard idiom, invoking the contained
|
|
20
20
|
// callback's `operator()() &&` on scope exit.
|
|
21
21
|
//
|
|
22
|
+
// This class doesn't allocate or take any locks, and is safe to use in a signal
|
|
23
|
+
// handler. Of course the callback with which it is constructed also must be
|
|
24
|
+
// signal safe in order for this to be useful.
|
|
25
|
+
//
|
|
22
26
|
// Example:
|
|
23
27
|
//
|
|
24
28
|
// ```
|