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
|
@@ -78,8 +78,7 @@ TEST(CivilTime, FieldsConstruction) {
|
|
|
78
78
|
absl::FormatCivilTime(absl::CivilMinute(2015, 1, 2)));
|
|
79
79
|
EXPECT_EQ("2015-01-01T00:00",
|
|
80
80
|
absl::FormatCivilTime(absl::CivilMinute(2015, 1)));
|
|
81
|
-
EXPECT_EQ("2015-01-01T00:00",
|
|
82
|
-
absl::FormatCivilTime(absl::CivilMinute(2015)));
|
|
81
|
+
EXPECT_EQ("2015-01-01T00:00", absl::FormatCivilTime(absl::CivilMinute(2015)));
|
|
83
82
|
|
|
84
83
|
EXPECT_EQ("2015-01-02T03",
|
|
85
84
|
absl::FormatCivilTime(absl::CivilHour(2015, 1, 2, 3, 4, 5)));
|
|
@@ -89,82 +88,63 @@ TEST(CivilTime, FieldsConstruction) {
|
|
|
89
88
|
absl::FormatCivilTime(absl::CivilHour(2015, 1, 2, 3)));
|
|
90
89
|
EXPECT_EQ("2015-01-02T00",
|
|
91
90
|
absl::FormatCivilTime(absl::CivilHour(2015, 1, 2)));
|
|
92
|
-
EXPECT_EQ("2015-01-01T00",
|
|
93
|
-
|
|
94
|
-
EXPECT_EQ("2015-01-01T00",
|
|
95
|
-
absl::FormatCivilTime(absl::CivilHour(2015)));
|
|
91
|
+
EXPECT_EQ("2015-01-01T00", absl::FormatCivilTime(absl::CivilHour(2015, 1)));
|
|
92
|
+
EXPECT_EQ("2015-01-01T00", absl::FormatCivilTime(absl::CivilHour(2015)));
|
|
96
93
|
|
|
97
94
|
EXPECT_EQ("2015-01-02",
|
|
98
95
|
absl::FormatCivilTime(absl::CivilDay(2015, 1, 2, 3, 4, 5)));
|
|
99
96
|
EXPECT_EQ("2015-01-02",
|
|
100
97
|
absl::FormatCivilTime(absl::CivilDay(2015, 1, 2, 3, 4)));
|
|
101
|
-
EXPECT_EQ("2015-01-02",
|
|
102
|
-
|
|
103
|
-
EXPECT_EQ("2015-01-
|
|
104
|
-
|
|
105
|
-
EXPECT_EQ("2015-01-01",
|
|
106
|
-
absl::FormatCivilTime(absl::CivilDay(2015, 1)));
|
|
107
|
-
EXPECT_EQ("2015-01-01",
|
|
108
|
-
absl::FormatCivilTime(absl::CivilDay(2015)));
|
|
98
|
+
EXPECT_EQ("2015-01-02", absl::FormatCivilTime(absl::CivilDay(2015, 1, 2, 3)));
|
|
99
|
+
EXPECT_EQ("2015-01-02", absl::FormatCivilTime(absl::CivilDay(2015, 1, 2)));
|
|
100
|
+
EXPECT_EQ("2015-01-01", absl::FormatCivilTime(absl::CivilDay(2015, 1)));
|
|
101
|
+
EXPECT_EQ("2015-01-01", absl::FormatCivilTime(absl::CivilDay(2015)));
|
|
109
102
|
|
|
110
103
|
EXPECT_EQ("2015-01",
|
|
111
104
|
absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2, 3, 4, 5)));
|
|
112
105
|
EXPECT_EQ("2015-01",
|
|
113
106
|
absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2, 3, 4)));
|
|
114
|
-
EXPECT_EQ("2015-01",
|
|
115
|
-
|
|
116
|
-
EXPECT_EQ("2015-01",
|
|
117
|
-
|
|
118
|
-
EXPECT_EQ("2015-01",
|
|
119
|
-
absl::FormatCivilTime(absl::CivilMonth(2015, 1)));
|
|
120
|
-
EXPECT_EQ("2015-01",
|
|
121
|
-
absl::FormatCivilTime(absl::CivilMonth(2015)));
|
|
107
|
+
EXPECT_EQ("2015-01", absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2, 3)));
|
|
108
|
+
EXPECT_EQ("2015-01", absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2)));
|
|
109
|
+
EXPECT_EQ("2015-01", absl::FormatCivilTime(absl::CivilMonth(2015, 1)));
|
|
110
|
+
EXPECT_EQ("2015-01", absl::FormatCivilTime(absl::CivilMonth(2015)));
|
|
122
111
|
|
|
123
112
|
EXPECT_EQ("2015",
|
|
124
113
|
absl::FormatCivilTime(absl::CivilYear(2015, 1, 2, 3, 4, 5)));
|
|
125
|
-
EXPECT_EQ("2015",
|
|
126
|
-
|
|
127
|
-
EXPECT_EQ("2015",
|
|
128
|
-
|
|
129
|
-
EXPECT_EQ("2015",
|
|
130
|
-
absl::FormatCivilTime(absl::CivilYear(2015, 1, 2)));
|
|
131
|
-
EXPECT_EQ("2015",
|
|
132
|
-
absl::FormatCivilTime(absl::CivilYear(2015, 1)));
|
|
133
|
-
EXPECT_EQ("2015",
|
|
134
|
-
absl::FormatCivilTime(absl::CivilYear(2015)));
|
|
114
|
+
EXPECT_EQ("2015", absl::FormatCivilTime(absl::CivilYear(2015, 1, 2, 3, 4)));
|
|
115
|
+
EXPECT_EQ("2015", absl::FormatCivilTime(absl::CivilYear(2015, 1, 2, 3)));
|
|
116
|
+
EXPECT_EQ("2015", absl::FormatCivilTime(absl::CivilYear(2015, 1, 2)));
|
|
117
|
+
EXPECT_EQ("2015", absl::FormatCivilTime(absl::CivilYear(2015, 1)));
|
|
118
|
+
EXPECT_EQ("2015", absl::FormatCivilTime(absl::CivilYear(2015)));
|
|
135
119
|
}
|
|
136
120
|
|
|
137
121
|
TEST(CivilTime, FieldsConstructionLimits) {
|
|
138
122
|
const int kIntMax = std::numeric_limits<int>::max();
|
|
139
|
-
EXPECT_EQ("2038-01-19T03:14:07",
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
absl::FormatCivilTime(absl::CivilSecond(
|
|
144
|
-
1970, 1, 1, 0, kIntMax, kIntMax)));
|
|
123
|
+
EXPECT_EQ("2038-01-19T03:14:07", absl::FormatCivilTime(absl::CivilSecond(
|
|
124
|
+
1970, 1, 1, 0, 0, kIntMax)));
|
|
125
|
+
EXPECT_EQ("6121-02-11T05:21:07", absl::FormatCivilTime(absl::CivilSecond(
|
|
126
|
+
1970, 1, 1, 0, kIntMax, kIntMax)));
|
|
145
127
|
EXPECT_EQ("251104-11-20T12:21:07",
|
|
146
|
-
absl::FormatCivilTime(
|
|
147
|
-
1970, 1, 1, kIntMax, kIntMax, kIntMax)));
|
|
128
|
+
absl::FormatCivilTime(
|
|
129
|
+
absl::CivilSecond(1970, 1, 1, kIntMax, kIntMax, kIntMax)));
|
|
148
130
|
EXPECT_EQ("6130715-05-30T12:21:07",
|
|
149
|
-
absl::FormatCivilTime(absl::CivilSecond(
|
|
150
|
-
|
|
131
|
+
absl::FormatCivilTime(absl::CivilSecond(1970, 1, kIntMax, kIntMax,
|
|
132
|
+
kIntMax, kIntMax)));
|
|
151
133
|
EXPECT_EQ("185087685-11-26T12:21:07",
|
|
152
134
|
absl::FormatCivilTime(absl::CivilSecond(
|
|
153
135
|
1970, kIntMax, kIntMax, kIntMax, kIntMax, kIntMax)));
|
|
154
136
|
|
|
155
137
|
const int kIntMin = std::numeric_limits<int>::min();
|
|
156
|
-
EXPECT_EQ("1901-12-13T20:45:52",
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
absl::FormatCivilTime(absl::CivilSecond(
|
|
161
|
-
1970, 1, 1, 0, kIntMin, kIntMin)));
|
|
138
|
+
EXPECT_EQ("1901-12-13T20:45:52", absl::FormatCivilTime(absl::CivilSecond(
|
|
139
|
+
1970, 1, 1, 0, 0, kIntMin)));
|
|
140
|
+
EXPECT_EQ("-2182-11-20T18:37:52", absl::FormatCivilTime(absl::CivilSecond(
|
|
141
|
+
1970, 1, 1, 0, kIntMin, kIntMin)));
|
|
162
142
|
EXPECT_EQ("-247165-02-11T10:37:52",
|
|
163
|
-
absl::FormatCivilTime(
|
|
164
|
-
1970, 1, 1, kIntMin, kIntMin, kIntMin)));
|
|
143
|
+
absl::FormatCivilTime(
|
|
144
|
+
absl::CivilSecond(1970, 1, 1, kIntMin, kIntMin, kIntMin)));
|
|
165
145
|
EXPECT_EQ("-6126776-08-01T10:37:52",
|
|
166
|
-
absl::FormatCivilTime(absl::CivilSecond(
|
|
167
|
-
|
|
146
|
+
absl::FormatCivilTime(absl::CivilSecond(1970, 1, kIntMin, kIntMin,
|
|
147
|
+
kIntMin, kIntMin)));
|
|
168
148
|
EXPECT_EQ("-185083747-10-31T10:37:52",
|
|
169
149
|
absl::FormatCivilTime(absl::CivilSecond(
|
|
170
150
|
1970, kIntMin, kIntMin, kIntMin, kIntMin, kIntMin)));
|
|
@@ -173,14 +153,10 @@ TEST(CivilTime, FieldsConstructionLimits) {
|
|
|
173
153
|
TEST(CivilTime, RangeLimits) {
|
|
174
154
|
const absl::civil_year_t kYearMax =
|
|
175
155
|
std::numeric_limits<absl::civil_year_t>::max();
|
|
176
|
-
EXPECT_EQ(absl::CivilYear(kYearMax),
|
|
177
|
-
|
|
178
|
-
EXPECT_EQ(absl::
|
|
179
|
-
|
|
180
|
-
EXPECT_EQ(absl::CivilDay(kYearMax, 12, 31),
|
|
181
|
-
absl::CivilDay::max());
|
|
182
|
-
EXPECT_EQ(absl::CivilHour(kYearMax, 12, 31, 23),
|
|
183
|
-
absl::CivilHour::max());
|
|
156
|
+
EXPECT_EQ(absl::CivilYear(kYearMax), absl::CivilYear::max());
|
|
157
|
+
EXPECT_EQ(absl::CivilMonth(kYearMax, 12), absl::CivilMonth::max());
|
|
158
|
+
EXPECT_EQ(absl::CivilDay(kYearMax, 12, 31), absl::CivilDay::max());
|
|
159
|
+
EXPECT_EQ(absl::CivilHour(kYearMax, 12, 31, 23), absl::CivilHour::max());
|
|
184
160
|
EXPECT_EQ(absl::CivilMinute(kYearMax, 12, 31, 23, 59),
|
|
185
161
|
absl::CivilMinute::max());
|
|
186
162
|
EXPECT_EQ(absl::CivilSecond(kYearMax, 12, 31, 23, 59, 59),
|
|
@@ -188,16 +164,11 @@ TEST(CivilTime, RangeLimits) {
|
|
|
188
164
|
|
|
189
165
|
const absl::civil_year_t kYearMin =
|
|
190
166
|
std::numeric_limits<absl::civil_year_t>::min();
|
|
191
|
-
EXPECT_EQ(absl::CivilYear(kYearMin),
|
|
192
|
-
|
|
193
|
-
EXPECT_EQ(absl::
|
|
194
|
-
|
|
195
|
-
EXPECT_EQ(absl::
|
|
196
|
-
absl::CivilDay::min());
|
|
197
|
-
EXPECT_EQ(absl::CivilHour(kYearMin, 1, 1, 0),
|
|
198
|
-
absl::CivilHour::min());
|
|
199
|
-
EXPECT_EQ(absl::CivilMinute(kYearMin, 1, 1, 0, 0),
|
|
200
|
-
absl::CivilMinute::min());
|
|
167
|
+
EXPECT_EQ(absl::CivilYear(kYearMin), absl::CivilYear::min());
|
|
168
|
+
EXPECT_EQ(absl::CivilMonth(kYearMin, 1), absl::CivilMonth::min());
|
|
169
|
+
EXPECT_EQ(absl::CivilDay(kYearMin, 1, 1), absl::CivilDay::min());
|
|
170
|
+
EXPECT_EQ(absl::CivilHour(kYearMin, 1, 1, 0), absl::CivilHour::min());
|
|
171
|
+
EXPECT_EQ(absl::CivilMinute(kYearMin, 1, 1, 0, 0), absl::CivilMinute::min());
|
|
201
172
|
EXPECT_EQ(absl::CivilSecond(kYearMin, 1, 1, 0, 0, 0),
|
|
202
173
|
absl::CivilSecond::min());
|
|
203
174
|
}
|
|
@@ -250,8 +221,7 @@ TEST(CivilTime, ImplicitCrossAlignment) {
|
|
|
250
221
|
(std::is_convertible<absl::CivilSecond, absl::CivilMinute>::value));
|
|
251
222
|
EXPECT_FALSE(
|
|
252
223
|
(std::is_convertible<absl::CivilSecond, absl::CivilHour>::value));
|
|
253
|
-
EXPECT_FALSE(
|
|
254
|
-
(std::is_convertible<absl::CivilSecond, absl::CivilDay>::value));
|
|
224
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilSecond, absl::CivilDay>::value));
|
|
255
225
|
EXPECT_FALSE(
|
|
256
226
|
(std::is_convertible<absl::CivilSecond, absl::CivilMonth>::value));
|
|
257
227
|
EXPECT_FALSE(
|
|
@@ -259,27 +229,20 @@ TEST(CivilTime, ImplicitCrossAlignment) {
|
|
|
259
229
|
|
|
260
230
|
EXPECT_FALSE(
|
|
261
231
|
(std::is_convertible<absl::CivilMinute, absl::CivilHour>::value));
|
|
262
|
-
EXPECT_FALSE(
|
|
263
|
-
(std::is_convertible<absl::CivilMinute, absl::CivilDay>::value));
|
|
232
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilMinute, absl::CivilDay>::value));
|
|
264
233
|
EXPECT_FALSE(
|
|
265
234
|
(std::is_convertible<absl::CivilMinute, absl::CivilMonth>::value));
|
|
266
235
|
EXPECT_FALSE(
|
|
267
236
|
(std::is_convertible<absl::CivilMinute, absl::CivilYear>::value));
|
|
268
237
|
|
|
269
|
-
EXPECT_FALSE(
|
|
270
|
-
|
|
271
|
-
EXPECT_FALSE(
|
|
272
|
-
(std::is_convertible<absl::CivilHour, absl::CivilMonth>::value));
|
|
273
|
-
EXPECT_FALSE(
|
|
274
|
-
(std::is_convertible<absl::CivilHour, absl::CivilYear>::value));
|
|
238
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilHour, absl::CivilDay>::value));
|
|
239
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilHour, absl::CivilMonth>::value));
|
|
240
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilHour, absl::CivilYear>::value));
|
|
275
241
|
|
|
276
|
-
EXPECT_FALSE(
|
|
277
|
-
|
|
278
|
-
EXPECT_FALSE(
|
|
279
|
-
(std::is_convertible<absl::CivilDay, absl::CivilYear>::value));
|
|
242
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilDay, absl::CivilMonth>::value));
|
|
243
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilDay, absl::CivilYear>::value));
|
|
280
244
|
|
|
281
|
-
EXPECT_FALSE(
|
|
282
|
-
(std::is_convertible<absl::CivilMonth, absl::CivilYear>::value));
|
|
245
|
+
EXPECT_FALSE((std::is_convertible<absl::CivilMonth, absl::CivilYear>::value));
|
|
283
246
|
}
|
|
284
247
|
|
|
285
248
|
TEST(CivilTime, ExplicitCrossAlignment) {
|
|
@@ -417,8 +380,7 @@ TEST(CivilTime, Relational) {
|
|
|
417
380
|
// Tests the relational operators of two different civil-time types.
|
|
418
381
|
TEST_RELATIONAL(absl::CivilDay(2014, 1, 1),
|
|
419
382
|
absl::CivilMinute(2014, 1, 1, 1, 1));
|
|
420
|
-
TEST_RELATIONAL(absl::CivilDay(2014, 1, 1),
|
|
421
|
-
absl::CivilMonth(2014, 2));
|
|
383
|
+
TEST_RELATIONAL(absl::CivilDay(2014, 1, 1), absl::CivilMonth(2014, 2));
|
|
422
384
|
|
|
423
385
|
#undef TEST_RELATIONAL
|
|
424
386
|
}
|
|
@@ -812,8 +774,7 @@ TEST(CivilTime, ParseEdgeCases) {
|
|
|
812
774
|
EXPECT_EQ("-9223372036854775808-01-01T00:00", absl::FormatCivilTime(mm));
|
|
813
775
|
|
|
814
776
|
absl::CivilHour hh;
|
|
815
|
-
EXPECT_TRUE(
|
|
816
|
-
absl::ParseLenientCivilTime("9223372036854775807-12-31T23", &hh));
|
|
777
|
+
EXPECT_TRUE(absl::ParseLenientCivilTime("9223372036854775807-12-31T23", &hh));
|
|
817
778
|
EXPECT_EQ("9223372036854775807-12-31T23", absl::FormatCivilTime(hh));
|
|
818
779
|
EXPECT_TRUE(
|
|
819
780
|
absl::ParseLenientCivilTime("-9223372036854775808-01-01T00", &hh));
|
|
@@ -1181,19 +1142,13 @@ TEST(CivilTime, LeapYears) {
|
|
|
1181
1142
|
int day;
|
|
1182
1143
|
} leap_day; // The date of the day after Feb 28.
|
|
1183
1144
|
} kLeapYearTable[]{
|
|
1184
|
-
{1900, 365, {3, 1}},
|
|
1185
|
-
{1999, 365, {3, 1}},
|
|
1145
|
+
{1900, 365, {3, 1}}, {1999, 365, {3, 1}},
|
|
1186
1146
|
{2000, 366, {2, 29}}, // leap year
|
|
1187
|
-
{2001, 365, {3, 1}},
|
|
1188
|
-
{
|
|
1189
|
-
{
|
|
1190
|
-
{
|
|
1191
|
-
{
|
|
1192
|
-
{2006, 365, {3, 1}},
|
|
1193
|
-
{2007, 365, {3, 1}},
|
|
1194
|
-
{2008, 366, {2, 29}}, // leap year
|
|
1195
|
-
{2009, 365, {3, 1}},
|
|
1196
|
-
{2100, 365, {3, 1}},
|
|
1147
|
+
{2001, 365, {3, 1}}, {2002, 365, {3, 1}},
|
|
1148
|
+
{2003, 365, {3, 1}}, {2004, 366, {2, 29}}, // leap year
|
|
1149
|
+
{2005, 365, {3, 1}}, {2006, 365, {3, 1}},
|
|
1150
|
+
{2007, 365, {3, 1}}, {2008, 366, {2, 29}}, // leap year
|
|
1151
|
+
{2009, 365, {3, 1}}, {2100, 365, {3, 1}},
|
|
1197
1152
|
};
|
|
1198
1153
|
|
|
1199
1154
|
for (int i = 0; i < ABSL_ARRAYSIZE(kLeapYearTable); ++i) {
|
|
@@ -1223,7 +1178,7 @@ TEST(CivilTime, FirstThursdayInMonth) {
|
|
|
1223
1178
|
|
|
1224
1179
|
// Bonus: Date of Thanksgiving in the United States
|
|
1225
1180
|
// Rule: Fourth Thursday of November
|
|
1226
|
-
const absl::CivilDay thanksgiving = thursday +
|
|
1181
|
+
const absl::CivilDay thanksgiving = thursday + 7 * 3;
|
|
1227
1182
|
EXPECT_EQ("2014-11-27", absl::FormatCivilTime(thanksgiving));
|
|
1228
1183
|
}
|
|
1229
1184
|
|
|
@@ -125,7 +125,7 @@ class UnscaledCycleClockWrapperForGetCurrentTime {
|
|
|
125
125
|
// spin-delay tuning.
|
|
126
126
|
|
|
127
127
|
// Acquire seqlock (*seq) and return the value to be written to unlock.
|
|
128
|
-
static inline uint64_t SeqAcquire(std::atomic<uint64_t
|
|
128
|
+
static inline uint64_t SeqAcquire(std::atomic<uint64_t>* seq) {
|
|
129
129
|
uint64_t x = seq->fetch_add(1, std::memory_order_relaxed);
|
|
130
130
|
|
|
131
131
|
// We put a release fence between update to *seq and writes to shared data.
|
|
@@ -140,7 +140,7 @@ static inline uint64_t SeqAcquire(std::atomic<uint64_t> *seq) {
|
|
|
140
140
|
|
|
141
141
|
// Release seqlock (*seq) by writing x to it---a value previously returned by
|
|
142
142
|
// SeqAcquire.
|
|
143
|
-
static inline void SeqRelease(std::atomic<uint64_t
|
|
143
|
+
static inline void SeqRelease(std::atomic<uint64_t>* seq, uint64_t x) {
|
|
144
144
|
// The unlock store to *seq must have release ordering so that all
|
|
145
145
|
// updates to shared data must finish before this store.
|
|
146
146
|
seq->store(x, std::memory_order_release); // release lock for readers
|
|
@@ -218,7 +218,7 @@ ABSL_CONST_INIT static TimeState time_state;
|
|
|
218
218
|
// assumed to be complete resyncs, which shouldn't happen. If they do, a full
|
|
219
219
|
// reinitialization of the outer algorithm should occur.)
|
|
220
220
|
static int64_t GetCurrentTimeNanosFromKernel(uint64_t last_cycleclock,
|
|
221
|
-
uint64_t
|
|
221
|
+
uint64_t* cycleclock)
|
|
222
222
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(time_state.lock) {
|
|
223
223
|
uint64_t local_approx_syscall_time_in_cycles = // local copy
|
|
224
224
|
time_state.approx_syscall_time_in_cycles.load(std::memory_order_relaxed);
|
|
@@ -274,8 +274,8 @@ static int64_t GetCurrentTimeNanosSlowPath() ABSL_ATTRIBUTE_COLD;
|
|
|
274
274
|
// Read the contents of *atomic into *sample.
|
|
275
275
|
// Each field is read atomically, but to maintain atomicity between fields,
|
|
276
276
|
// the access must be done under a lock.
|
|
277
|
-
static void ReadTimeSampleAtomic(const struct TimeSampleAtomic
|
|
278
|
-
struct TimeSample
|
|
277
|
+
static void ReadTimeSampleAtomic(const struct TimeSampleAtomic* atomic,
|
|
278
|
+
struct TimeSample* sample) {
|
|
279
279
|
sample->base_ns = atomic->base_ns.load(std::memory_order_relaxed);
|
|
280
280
|
sample->base_cycles = atomic->base_cycles.load(std::memory_order_relaxed);
|
|
281
281
|
sample->nsscaled_per_cycle =
|
|
@@ -338,18 +338,20 @@ int64_t GetCurrentTimeNanos() {
|
|
|
338
338
|
// to the same shared data.
|
|
339
339
|
seq_read0 = time_state.seq.load(std::memory_order_acquire);
|
|
340
340
|
|
|
341
|
-
|
|
341
|
+
// The algorithm does not require that the following four loads be ordered
|
|
342
|
+
// with respect to one another; it requires only that they precede the load of
|
|
343
|
+
// time_state.seq below them. Nevertheless, we mark each of them as an
|
|
344
|
+
// acquire-load, rather than using a barrier immediately before the
|
|
345
|
+
// time_state.seq load, because the former is likely faster on most CPUs of
|
|
346
|
+
// interest. Architectures that may see a regression because of this approach
|
|
347
|
+
// include PowerPC and MIPS.
|
|
348
|
+
base_ns = time_state.last_sample.base_ns.load(std::memory_order_acquire);
|
|
342
349
|
base_cycles =
|
|
343
|
-
time_state.last_sample.base_cycles.load(std::
|
|
350
|
+
time_state.last_sample.base_cycles.load(std::memory_order_acquire);
|
|
344
351
|
nsscaled_per_cycle =
|
|
345
|
-
time_state.last_sample.nsscaled_per_cycle.load(std::
|
|
352
|
+
time_state.last_sample.nsscaled_per_cycle.load(std::memory_order_acquire);
|
|
346
353
|
min_cycles_per_sample = time_state.last_sample.min_cycles_per_sample.load(
|
|
347
|
-
std::
|
|
348
|
-
|
|
349
|
-
// This acquire fence pairs with the release fence in SeqAcquire. Since it
|
|
350
|
-
// is sequenced between reads of shared data and seq_read1, the reads of
|
|
351
|
-
// shared data are effectively acquiring.
|
|
352
|
-
std::atomic_thread_fence(std::memory_order_acquire);
|
|
354
|
+
std::memory_order_acquire);
|
|
353
355
|
|
|
354
356
|
// The shared-data reads are effectively acquire ordered, and the
|
|
355
357
|
// shared-data writes are effectively release ordered. Therefore if our
|
|
@@ -397,7 +399,7 @@ static uint64_t SafeDivideAndScale(uint64_t a, uint64_t b) {
|
|
|
397
399
|
|
|
398
400
|
static uint64_t UpdateLastSample(
|
|
399
401
|
uint64_t now_cycles, uint64_t now_ns, uint64_t delta_cycles,
|
|
400
|
-
const struct TimeSample
|
|
402
|
+
const struct TimeSample* sample) ABSL_ATTRIBUTE_COLD;
|
|
401
403
|
|
|
402
404
|
// The slow path of GetCurrentTimeNanos(). This is taken while gathering
|
|
403
405
|
// initial samples, when enough time has elapsed since the last sample, and if
|
|
@@ -454,7 +456,7 @@ static int64_t GetCurrentTimeNanosSlowPath()
|
|
|
454
456
|
// for readers. Returns the new estimated time.
|
|
455
457
|
static uint64_t UpdateLastSample(uint64_t now_cycles, uint64_t now_ns,
|
|
456
458
|
uint64_t delta_cycles,
|
|
457
|
-
const struct TimeSample
|
|
459
|
+
const struct TimeSample* sample)
|
|
458
460
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(time_state.lock) {
|
|
459
461
|
uint64_t estimated_base_ns = now_ns;
|
|
460
462
|
uint64_t lock_value =
|
|
@@ -114,8 +114,8 @@ TEST(SleepFor, Bounded) {
|
|
|
114
114
|
EXPECT_TRUE(AssertSleepForBounded(d, early, late, timeout,
|
|
115
115
|
AlarmPolicy::kWithoutAlarm));
|
|
116
116
|
#if defined(ABSL_HAVE_ALARM)
|
|
117
|
-
EXPECT_TRUE(
|
|
118
|
-
|
|
117
|
+
EXPECT_TRUE(
|
|
118
|
+
AssertSleepForBounded(d, early, late, timeout, AlarmPolicy::kWithAlarm));
|
|
119
119
|
#endif
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -358,6 +358,150 @@ void BM_Duration_ToInt64Hours(benchmark::State& state) {
|
|
|
358
358
|
}
|
|
359
359
|
BENCHMARK(BM_Duration_ToInt64Hours);
|
|
360
360
|
|
|
361
|
+
//
|
|
362
|
+
// ToDoubleXYZ
|
|
363
|
+
//
|
|
364
|
+
void BM_Duration_ToDoubleNanoseconds(benchmark::State& state) {
|
|
365
|
+
absl::Duration d = absl::Seconds(100000);
|
|
366
|
+
while (state.KeepRunning()) {
|
|
367
|
+
benchmark::DoNotOptimize(d);
|
|
368
|
+
double result = absl::ToDoubleNanoseconds(d);
|
|
369
|
+
benchmark::DoNotOptimize(result);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
BENCHMARK(BM_Duration_ToDoubleNanoseconds);
|
|
373
|
+
|
|
374
|
+
void BM_Duration_ToDoubleMicroseconds(benchmark::State& state) {
|
|
375
|
+
absl::Duration d = absl::Seconds(100000);
|
|
376
|
+
while (state.KeepRunning()) {
|
|
377
|
+
benchmark::DoNotOptimize(d);
|
|
378
|
+
double result = absl::ToDoubleMicroseconds(d);
|
|
379
|
+
benchmark::DoNotOptimize(result);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
BENCHMARK(BM_Duration_ToDoubleMicroseconds);
|
|
383
|
+
|
|
384
|
+
void BM_Duration_ToDoubleMilliseconds(benchmark::State& state) {
|
|
385
|
+
absl::Duration d = absl::Seconds(100000);
|
|
386
|
+
while (state.KeepRunning()) {
|
|
387
|
+
benchmark::DoNotOptimize(d);
|
|
388
|
+
double result = absl::ToDoubleMilliseconds(d);
|
|
389
|
+
benchmark::DoNotOptimize(result);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
BENCHMARK(BM_Duration_ToDoubleMilliseconds);
|
|
393
|
+
|
|
394
|
+
void BM_Duration_ToDoubleSeconds(benchmark::State& state) {
|
|
395
|
+
absl::Duration d = absl::Seconds(100000);
|
|
396
|
+
while (state.KeepRunning()) {
|
|
397
|
+
benchmark::DoNotOptimize(d);
|
|
398
|
+
double result = absl::ToDoubleSeconds(d);
|
|
399
|
+
benchmark::DoNotOptimize(result);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
BENCHMARK(BM_Duration_ToDoubleSeconds);
|
|
403
|
+
|
|
404
|
+
void BM_Duration_ToDoubleMinutes(benchmark::State& state) {
|
|
405
|
+
absl::Duration d = absl::Seconds(100000);
|
|
406
|
+
while (state.KeepRunning()) {
|
|
407
|
+
benchmark::DoNotOptimize(d);
|
|
408
|
+
double result = absl::ToDoubleMinutes(d);
|
|
409
|
+
benchmark::DoNotOptimize(result);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
BENCHMARK(BM_Duration_ToDoubleMinutes);
|
|
413
|
+
|
|
414
|
+
void BM_Duration_ToDoubleHours(benchmark::State& state) {
|
|
415
|
+
absl::Duration d = absl::Seconds(100000);
|
|
416
|
+
while (state.KeepRunning()) {
|
|
417
|
+
benchmark::DoNotOptimize(d);
|
|
418
|
+
double result = absl::ToDoubleHours(d);
|
|
419
|
+
benchmark::DoNotOptimize(result);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
BENCHMARK(BM_Duration_ToDoubleHours);
|
|
423
|
+
|
|
424
|
+
//
|
|
425
|
+
// ToDoubleXYZ Latency
|
|
426
|
+
//
|
|
427
|
+
void BM_Duration_ToDoubleNanoseconds_Latency(benchmark::State& state) {
|
|
428
|
+
absl::Duration d1 = absl::Seconds(100000);
|
|
429
|
+
absl::Duration d2 = absl::Seconds(100000);
|
|
430
|
+
double result = 1;
|
|
431
|
+
while (state.KeepRunning()) {
|
|
432
|
+
benchmark::DoNotOptimize(d1);
|
|
433
|
+
benchmark::DoNotOptimize(d2);
|
|
434
|
+
benchmark::DoNotOptimize(result);
|
|
435
|
+
result = absl::ToDoubleNanoseconds(result < 0 ? d1 : d2);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
BENCHMARK(BM_Duration_ToDoubleNanoseconds_Latency);
|
|
439
|
+
|
|
440
|
+
void BM_Duration_ToDoubleMicroseconds_Latency(benchmark::State& state) {
|
|
441
|
+
absl::Duration d1 = absl::Seconds(100000);
|
|
442
|
+
absl::Duration d2 = absl::Seconds(100000);
|
|
443
|
+
double result = 1;
|
|
444
|
+
while (state.KeepRunning()) {
|
|
445
|
+
benchmark::DoNotOptimize(d1);
|
|
446
|
+
benchmark::DoNotOptimize(d2);
|
|
447
|
+
benchmark::DoNotOptimize(result);
|
|
448
|
+
result = absl::ToDoubleMicroseconds(result < 0 ? d1 : d2);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
BENCHMARK(BM_Duration_ToDoubleMicroseconds_Latency);
|
|
452
|
+
|
|
453
|
+
void BM_Duration_ToDoubleMilliseconds_Latency(benchmark::State& state) {
|
|
454
|
+
absl::Duration d1 = absl::Seconds(100000);
|
|
455
|
+
absl::Duration d2 = absl::Seconds(100000);
|
|
456
|
+
double result = 1;
|
|
457
|
+
while (state.KeepRunning()) {
|
|
458
|
+
benchmark::DoNotOptimize(d1);
|
|
459
|
+
benchmark::DoNotOptimize(d2);
|
|
460
|
+
benchmark::DoNotOptimize(result);
|
|
461
|
+
result = absl::ToDoubleMilliseconds(result < 0 ? d1 : d2);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
BENCHMARK(BM_Duration_ToDoubleMilliseconds_Latency);
|
|
465
|
+
|
|
466
|
+
void BM_Duration_ToDoubleSeconds_Latency(benchmark::State& state) {
|
|
467
|
+
absl::Duration d1 = absl::Seconds(100000);
|
|
468
|
+
absl::Duration d2 = absl::Seconds(100000);
|
|
469
|
+
double result = 1;
|
|
470
|
+
while (state.KeepRunning()) {
|
|
471
|
+
benchmark::DoNotOptimize(d1);
|
|
472
|
+
benchmark::DoNotOptimize(d2);
|
|
473
|
+
benchmark::DoNotOptimize(result);
|
|
474
|
+
result = absl::ToDoubleSeconds(result < 0 ? d1 : d2);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
BENCHMARK(BM_Duration_ToDoubleSeconds_Latency);
|
|
478
|
+
|
|
479
|
+
void BM_Duration_ToDoubleMinutes_Latency(benchmark::State& state) {
|
|
480
|
+
absl::Duration d1 = absl::Seconds(100000);
|
|
481
|
+
absl::Duration d2 = absl::Seconds(100000);
|
|
482
|
+
double result = 1;
|
|
483
|
+
while (state.KeepRunning()) {
|
|
484
|
+
benchmark::DoNotOptimize(d1);
|
|
485
|
+
benchmark::DoNotOptimize(d2);
|
|
486
|
+
benchmark::DoNotOptimize(result);
|
|
487
|
+
result = absl::ToDoubleMinutes(result < 0 ? d1 : d2);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
BENCHMARK(BM_Duration_ToDoubleMinutes_Latency);
|
|
491
|
+
|
|
492
|
+
void BM_Duration_ToDoubleHours_Latency(benchmark::State& state) {
|
|
493
|
+
absl::Duration d1 = absl::Seconds(100000);
|
|
494
|
+
absl::Duration d2 = absl::Seconds(100000);
|
|
495
|
+
double result = 1;
|
|
496
|
+
while (state.KeepRunning()) {
|
|
497
|
+
benchmark::DoNotOptimize(d1);
|
|
498
|
+
benchmark::DoNotOptimize(d2);
|
|
499
|
+
benchmark::DoNotOptimize(result);
|
|
500
|
+
result = absl::ToDoubleHours(result < 0 ? d1 : d2);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
BENCHMARK(BM_Duration_ToDoubleHours_Latency);
|
|
504
|
+
|
|
361
505
|
//
|
|
362
506
|
// To/FromTimespec
|
|
363
507
|
//
|
|
@@ -57,8 +57,7 @@ absl::Duration ApproxYears(int64_t n) { return absl::Hours(n) * 365 * 24; }
|
|
|
57
57
|
// timespec ts1, ts2;
|
|
58
58
|
// EXPECT_THAT(ts1, TimespecMatcher(ts2));
|
|
59
59
|
MATCHER_P(TimespecMatcher, ts, "") {
|
|
60
|
-
if (ts.tv_sec == arg.tv_sec && ts.tv_nsec == arg.tv_nsec)
|
|
61
|
-
return true;
|
|
60
|
+
if (ts.tv_sec == arg.tv_sec && ts.tv_nsec == arg.tv_nsec) return true;
|
|
62
61
|
*result_listener << "expected: {" << ts.tv_sec << ", " << ts.tv_nsec << "} ";
|
|
63
62
|
*result_listener << "actual: {" << arg.tv_sec << ", " << arg.tv_nsec << "}";
|
|
64
63
|
return false;
|
|
@@ -68,8 +67,7 @@ MATCHER_P(TimespecMatcher, ts, "") {
|
|
|
68
67
|
// timeval tv1, tv2;
|
|
69
68
|
// EXPECT_THAT(tv1, TimevalMatcher(tv2));
|
|
70
69
|
MATCHER_P(TimevalMatcher, tv, "") {
|
|
71
|
-
if (tv.tv_sec == arg.tv_sec && tv.tv_usec == arg.tv_usec)
|
|
72
|
-
return true;
|
|
70
|
+
if (tv.tv_sec == arg.tv_sec && tv.tv_usec == arg.tv_usec) return true;
|
|
73
71
|
*result_listener << "expected: {" << tv.tv_sec << ", " << tv.tv_usec << "} ";
|
|
74
72
|
*result_listener << "actual: {" << arg.tv_sec << ", " << arg.tv_usec << "}";
|
|
75
73
|
return false;
|
|
@@ -223,12 +221,12 @@ TEST(Duration, ToConversionDeprecated) {
|
|
|
223
221
|
|
|
224
222
|
template <int64_t N>
|
|
225
223
|
void TestFromChronoBasicEquality() {
|
|
226
|
-
using std::chrono::
|
|
224
|
+
using std::chrono::hours;
|
|
227
225
|
using std::chrono::microseconds;
|
|
228
226
|
using std::chrono::milliseconds;
|
|
229
|
-
using std::chrono::seconds;
|
|
230
227
|
using std::chrono::minutes;
|
|
231
|
-
using std::chrono::
|
|
228
|
+
using std::chrono::nanoseconds;
|
|
229
|
+
using std::chrono::seconds;
|
|
232
230
|
|
|
233
231
|
static_assert(absl::Nanoseconds(N) == absl::FromChrono(nanoseconds(N)), "");
|
|
234
232
|
static_assert(absl::Microseconds(N) == absl::FromChrono(microseconds(N)), "");
|
|
@@ -288,12 +286,12 @@ TEST(Duration, FromChrono) {
|
|
|
288
286
|
|
|
289
287
|
template <int64_t N>
|
|
290
288
|
void TestToChrono() {
|
|
291
|
-
using std::chrono::
|
|
289
|
+
using std::chrono::hours;
|
|
292
290
|
using std::chrono::microseconds;
|
|
293
291
|
using std::chrono::milliseconds;
|
|
294
|
-
using std::chrono::seconds;
|
|
295
292
|
using std::chrono::minutes;
|
|
296
|
-
using std::chrono::
|
|
293
|
+
using std::chrono::nanoseconds;
|
|
294
|
+
using std::chrono::seconds;
|
|
297
295
|
|
|
298
296
|
EXPECT_EQ(nanoseconds(N), absl::ToChronoNanoseconds(absl::Nanoseconds(N)));
|
|
299
297
|
EXPECT_EQ(microseconds(N), absl::ToChronoMicroseconds(absl::Microseconds(N)));
|
|
@@ -320,12 +318,12 @@ void TestToChrono() {
|
|
|
320
318
|
}
|
|
321
319
|
|
|
322
320
|
TEST(Duration, ToChrono) {
|
|
323
|
-
using std::chrono::
|
|
321
|
+
using std::chrono::hours;
|
|
324
322
|
using std::chrono::microseconds;
|
|
325
323
|
using std::chrono::milliseconds;
|
|
326
|
-
using std::chrono::seconds;
|
|
327
324
|
using std::chrono::minutes;
|
|
328
|
-
using std::chrono::
|
|
325
|
+
using std::chrono::nanoseconds;
|
|
326
|
+
using std::chrono::seconds;
|
|
329
327
|
|
|
330
328
|
TestToChrono<kint64min>();
|
|
331
329
|
TestToChrono<-1>();
|
|
@@ -546,18 +544,18 @@ TEST(Duration, InfinityMultiplication) {
|
|
|
546
544
|
const absl::Duration sec_min = absl::Seconds(kint64min);
|
|
547
545
|
const absl::Duration inf = absl::InfiniteDuration();
|
|
548
546
|
|
|
549
|
-
#define TEST_INF_MUL_WITH_TYPE(T)
|
|
550
|
-
EXPECT_EQ(inf, inf
|
|
551
|
-
EXPECT_EQ(-inf, inf
|
|
552
|
-
EXPECT_EQ(-inf, -inf
|
|
553
|
-
EXPECT_EQ(inf, -inf
|
|
554
|
-
EXPECT_EQ(inf, inf
|
|
555
|
-
EXPECT_EQ(-inf, -inf
|
|
556
|
-
EXPECT_EQ(inf, sec_max
|
|
557
|
-
EXPECT_EQ(inf, sec_min
|
|
558
|
-
EXPECT_EQ(inf, (sec_max / static_cast<T>(2)) * static_cast<T>(3));
|
|
559
|
-
EXPECT_EQ(-inf, sec_max
|
|
560
|
-
EXPECT_EQ(-inf, sec_min
|
|
547
|
+
#define TEST_INF_MUL_WITH_TYPE(T) \
|
|
548
|
+
EXPECT_EQ(inf, inf* static_cast<T>(2)); \
|
|
549
|
+
EXPECT_EQ(-inf, inf* static_cast<T>(-2)); \
|
|
550
|
+
EXPECT_EQ(-inf, -inf* static_cast<T>(2)); \
|
|
551
|
+
EXPECT_EQ(inf, -inf* static_cast<T>(-2)); \
|
|
552
|
+
EXPECT_EQ(inf, inf* static_cast<T>(0)); \
|
|
553
|
+
EXPECT_EQ(-inf, -inf* static_cast<T>(0)); \
|
|
554
|
+
EXPECT_EQ(inf, sec_max* static_cast<T>(2)); \
|
|
555
|
+
EXPECT_EQ(inf, sec_min* static_cast<T>(-2)); \
|
|
556
|
+
EXPECT_EQ(inf, (sec_max / static_cast<T>(2)) * static_cast<T>(3)); \
|
|
557
|
+
EXPECT_EQ(-inf, sec_max* static_cast<T>(-2)); \
|
|
558
|
+
EXPECT_EQ(-inf, sec_min* static_cast<T>(2)); \
|
|
561
559
|
EXPECT_EQ(-inf, (sec_min / static_cast<T>(2)) * static_cast<T>(3));
|
|
562
560
|
|
|
563
561
|
TEST_INF_MUL_WITH_TYPE(int64_t); // NOLINT(readability/function)
|
|
@@ -932,9 +930,9 @@ TEST(Duration, RelationalOperators) {
|
|
|
932
930
|
#ifdef ABSL_INTERNAL_TIME_HAS_THREE_WAY_COMPARISON
|
|
933
931
|
|
|
934
932
|
TEST(Duration, SpaceshipOperators) {
|
|
935
|
-
#define TEST_REL_OPS(UNIT)
|
|
933
|
+
#define TEST_REL_OPS(UNIT) \
|
|
936
934
|
static_assert(UNIT(2) <=> UNIT(2) == std::strong_ordering::equal, ""); \
|
|
937
|
-
static_assert(UNIT(1) <=> UNIT(2) == std::strong_ordering::less, "");
|
|
935
|
+
static_assert(UNIT(1) <=> UNIT(2) == std::strong_ordering::less, ""); \
|
|
938
936
|
static_assert(UNIT(3) <=> UNIT(2) == std::strong_ordering::greater, "");
|
|
939
937
|
|
|
940
938
|
TEST_REL_OPS(absl::Nanoseconds);
|
|
@@ -1159,8 +1157,7 @@ TEST(Duration, Multiplication) {
|
|
|
1159
1157
|
EXPECT_EQ(0, absl::Nanoseconds(-1) / absl::Seconds(1)); // Actual -1e-9
|
|
1160
1158
|
|
|
1161
1159
|
// Tests identity a = (a/b)*b + a%b
|
|
1162
|
-
#define TEST_MOD_IDENTITY(a, b)
|
|
1163
|
-
EXPECT_EQ((a), ((a) / (b))*(b) + ((a)%(b)))
|
|
1160
|
+
#define TEST_MOD_IDENTITY(a, b) EXPECT_EQ((a), ((a) / (b)) * (b) + ((a) % (b)))
|
|
1164
1161
|
|
|
1165
1162
|
TEST_MOD_IDENTITY(absl::Seconds(0), absl::Seconds(2));
|
|
1166
1163
|
TEST_MOD_IDENTITY(absl::Seconds(1), absl::Seconds(1));
|
|
@@ -59,7 +59,13 @@ cc_library(
|
|
|
59
59
|
"src/time_zone_posix.h",
|
|
60
60
|
"src/tzfile.h",
|
|
61
61
|
"src/zone_info_source.cc",
|
|
62
|
-
]
|
|
62
|
+
] + select({
|
|
63
|
+
"@platforms//os:windows": [
|
|
64
|
+
"src/time_zone_name_win.cc",
|
|
65
|
+
"src/time_zone_name_win.h",
|
|
66
|
+
],
|
|
67
|
+
"//conditions:default": [],
|
|
68
|
+
}),
|
|
63
69
|
hdrs = [
|
|
64
70
|
"include/cctz/time_zone.h",
|
|
65
71
|
"include/cctz/zone_info_source.h",
|
|
@@ -13,12 +13,14 @@
|
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
15
|
#if !defined(HAS_STRPTIME)
|
|
16
|
-
#if
|
|
16
|
+
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__VXWORKS__)
|
|
17
|
+
#define HAS_STRPTIME 0
|
|
18
|
+
#else
|
|
17
19
|
#define HAS_STRPTIME 1 // Assume everyone else has strptime().
|
|
18
20
|
#endif
|
|
19
21
|
#endif
|
|
20
22
|
|
|
21
|
-
#if
|
|
23
|
+
#if HAS_STRPTIME
|
|
22
24
|
#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
|
|
23
25
|
#define _XOPEN_SOURCE 500 // Exposes definitions for SUSv2 (UNIX 98).
|
|
24
26
|
#endif
|