Revert "Roll abseil_revision 635c53fd9d..b273c22a80" This reverts commit 1e0a30b3ece784455b8d53361397e1d141998708. Reason for revert: LUCI Bisection has identified this change as the culprit of a build failure. See the analysis: https://ci.chromium.org/ui/p/chromium/bisection/compile-analysis/b/8679840456788012977 Sample failed build: https://ci.chromium.org/b/8679840456788012977 If this is a false positive, please report it at http://b.corp.google.com/createIssue?component=1199205&description=Analysis%3A+https%3A%2F%2Fchromium-review.googlesource.com%2Fc%2Fchromium%2Fsrc%2F%2B%2F7899461&format=PLAIN&priority=P3&title=Wrongly+blamed+https%3A%2F%2Fci.chromium.org%2Fui%2Fp%2Fchromium%2Fbisection%2Fcompile-analysis%2Fb%2F8679840456788012977&type=BUG Original change's description: > Roll abseil_revision 635c53fd9d..b273c22a80 > > Change Log: > https://chromium.googlesource.com/external/github.com/abseil/abseil-cpp/+log/635c53fd9d..b273c22a80 > Full diff: > https://chromium.googlesource.com/external/github.com/abseil/abseil-cpp/+/635c53fd9d..b273c22a80 > > Bug: None > Change-Id: I52022fde3a11cd9ecb25ef69d77edafa0017b83f > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7899461 > Commit-Queue: Mirko Bonadei <mbonadei@chromium.org> > Reviewed-by: Danil Chapovalov <danilchap@chromium.org> > Cr-Commit-Position: refs/heads/main@{#1642247} > Bug: None No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Ib98c75c3b50211ed97c7116e117fca0b21f4a9a3 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7905204 Commit-Queue: luci-bisection@appspot.gserviceaccount.com <luci-bisection@appspot.gserviceaccount.com> Bot-Commit: luci-bisection@appspot.gserviceaccount.com <luci-bisection@appspot.gserviceaccount.com> Owners-Override: luci-bisection@appspot.gserviceaccount.com <luci-bisection@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#1642250} NOKEYCHECK=True GitOrigin-RevId: 2193c98bcd126caaacfc33a654f491ee2fa2d060
diff --git a/CMake/AbseilDll.cmake b/CMake/AbseilDll.cmake index 94af16a..97dd3ad 100644 --- a/CMake/AbseilDll.cmake +++ b/CMake/AbseilDll.cmake
@@ -13,8 +13,6 @@ "base/dynamic_annotations.h" "base/fast_type_id.h" "base/internal/atomic_hook.h" - "base/internal/cpu_detect.cc" - "base/internal/cpu_detect.h" "base/internal/cycleclock.cc" "base/internal/cycleclock.h" "base/internal/cycleclock_config.h" @@ -106,6 +104,8 @@ "container/node_hash_set.h" "crc/crc32c.cc" "crc/crc32c.h" + "crc/internal/cpu_detect.cc" + "crc/internal/cpu_detect.h" "crc/internal/crc.cc" "crc/internal/crc.h" "crc/internal/crc32_x86_arm_combined_simd.h"
diff --git a/README.chromium b/README.chromium index 0157870..6d747c7 100644 --- a/README.chromium +++ b/README.chromium
@@ -4,7 +4,7 @@ License: Apache-2.0 License File: LICENSE Version: N/A -Revision: b273c22a80f397ea55d047768e5b94bed323e00c +Revision: 635c53fd9d77d90c926cb74b29a719aaeb5d4eed Update Mechanism: Manual Security Critical: yes Shipped: yes
diff --git a/absl/algorithm/algorithm.h b/absl/algorithm/algorithm.h index 0b75908..4e2ebf4 100644 --- a/absl/algorithm/algorithm.h +++ b/absl/algorithm/algorithm.h
@@ -85,8 +85,8 @@ // n = (`last` - `first`) comparisons. A linear search over short containers // may be faster than a binary search, even when the container is sorted. template <typename InputIterator, typename EqualityComparable> -constexpr bool linear_search(InputIterator first, InputIterator last, - const EqualityComparable& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool linear_search( + InputIterator first, InputIterator last, const EqualityComparable& value) { return std::find(first, last, value) != last; }
diff --git a/absl/algorithm/container.h b/absl/algorithm/container.h index 3361e71..c0934f7 100644 --- a/absl/algorithm/container.h +++ b/absl/algorithm/container.h
@@ -99,20 +99,21 @@ // These are meant for internal use only. template <typename C> -constexpr ContainerIter<C> c_begin(C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 ContainerIter<C> c_begin(C& c) { return begin(c); } template <typename C> -constexpr ContainerIter<C> c_end(C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 ContainerIter<C> c_end(C& c) { return end(c); } // Helper to check that the `OutputRange` has enough space. // Only performs the check if the iterators are ForwardIterators or better. template <typename InputSequence, typename Size, typename OutputRange> -constexpr void AssertCopyNSize(InputSequence& input, Size n, - OutputRange& output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 void AssertCopyNSize(InputSequence& input, + Size n, + OutputRange& output) { using InputIter = ContainerIter<InputSequence>; using OutputIter = ContainerIter<OutputRange>; @@ -129,7 +130,8 @@ } template <typename InputSequence, typename OutputRange> -constexpr void AssertCopySize(InputSequence& input, OutputRange& output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 void AssertCopySize(InputSequence& input, + OutputRange& output) { using InputIter = ContainerIter<InputSequence>; using OutputIter = ContainerIter<OutputRange>; if constexpr (base_internal::IsAtLeastForwardIterator<InputIter>::value && @@ -174,25 +176,6 @@ struct IsIterator< Iter, std::void_t<typename std::iterator_traits<Iter>::iterator_category>> : std::true_type {}; - -template <typename C, typename OutputIterator> -using ResultOfRangeToIteratorTransfer = - std::enable_if_t<container_algorithm_internal::IsIterator< - absl::remove_cvref_t<OutputIterator>>::value && - !container_algorithm_internal::IsMultidimensionalArray< - std::remove_reference_t<C>>::value, - std::decay_t<OutputIterator>>; - -template <typename C, typename OutputRange> -using ResultOfRangeToRangeTransfer = - std::enable_if_t<container_algorithm_internal::HasBeginEnd< - std::add_lvalue_reference_t<OutputRange>>::value && - !container_algorithm_internal::IsMultidimensionalArray< - std::remove_reference_t<OutputRange>>::value && - !container_algorithm_internal::IsMultidimensionalArray< - std::remove_reference_t<C>>::value, - void>; - } // namespace container_algorithm_internal // PUBLIC API @@ -208,7 +191,8 @@ // // For a generalization that uses a predicate, see absl::c_any_of(). template <typename C, typename EqualityComparable> -constexpr bool c_linear_search(const C& c, EqualityComparable&& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_linear_search( + const C& c, EqualityComparable&& value) { return absl::linear_search(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<EqualityComparable>(value)); @@ -223,8 +207,9 @@ // Container-based version of the <iterator> `std::distance()` function to // return the number of elements within a container. template <typename C> -constexpr container_algorithm_internal::ContainerDifferenceType<const C> -c_distance(const C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerDifferenceType<const C> + c_distance(const C& c) { return std::distance(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -238,7 +223,7 @@ // Container-based version of the <algorithm> `std::all_of()` function to // test if all elements within a container satisfy a condition. template <typename C, typename Pred> -constexpr bool c_all_of(const C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_all_of(const C& c, Pred&& pred) { return std::all_of(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -249,7 +234,7 @@ // Container-based version of the <algorithm> `std::any_of()` function to // test if any element in a container fulfills a condition. template <typename C, typename Pred> -constexpr bool c_any_of(const C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_any_of(const C& c, Pred&& pred) { return std::any_of(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -260,7 +245,7 @@ // Container-based version of the <algorithm> `std::none_of()` function to // test if no elements in a container fulfill a condition. template <typename C, typename Pred> -constexpr bool c_none_of(const C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_none_of(const C& c, Pred&& pred) { return std::none_of(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -271,7 +256,8 @@ // Container-based version of the <algorithm> `std::for_each()` function to // apply a function to a container's elements. template <typename C, typename Function> -constexpr std::decay_t<Function> c_for_each(C&& c, Function&& f) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<Function> c_for_each( + C&& c, Function&& f) { return std::for_each(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Function>(f)); @@ -282,8 +268,9 @@ // Container-based version of the <algorithm> `std::find()` function to find // the first element containing the passed value within a container value. template <typename C, typename T> -constexpr container_algorithm_internal::ContainerIter<C> c_find(C& c, - T&& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_find(C& c, T&& value) { return std::find(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<T>(value)); @@ -294,7 +281,8 @@ // Container-based version of the <algorithm> `std::ranges::contains()` C++23 // function to search a container for a value. template <typename Sequence, typename T> -constexpr bool c_contains(const Sequence& sequence, T&& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_contains(const Sequence& sequence, + T&& value) { return absl::c_find(sequence, std::forward<T>(value)) != container_algorithm_internal::c_end(sequence); } @@ -304,8 +292,9 @@ // Container-based version of the <algorithm> `std::find_if()` function to find // the first element in a container matching the given condition. template <typename C, typename Pred> -constexpr container_algorithm_internal::ContainerIter<C> c_find_if( - C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_find_if(C& c, Pred&& pred) { return std::find_if(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -316,8 +305,9 @@ // Container-based version of the <algorithm> `std::find_if_not()` function to // find the first element in a container not matching the given condition. template <typename C, typename Pred> -constexpr container_algorithm_internal::ContainerIter<C> c_find_if_not( - C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_find_if_not(C& c, Pred&& pred) { return std::find_if_not(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -328,8 +318,9 @@ // Container-based version of the <algorithm> `std::find_end()` function to // find the last subsequence within a container. template <typename Sequence1, typename Sequence2> -constexpr container_algorithm_internal::ContainerIter<Sequence1> c_find_end( - Sequence1& sequence, Sequence2& subsequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence1> + c_find_end(Sequence1& sequence, Sequence2& subsequence) { return std::find_end(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), container_algorithm_internal::c_begin(subsequence), @@ -339,8 +330,10 @@ // Overload of c_find_end() for using a predicate evaluation other than `==` as // the function's test condition. template <typename Sequence1, typename Sequence2, typename BinaryPredicate> -constexpr container_algorithm_internal::ContainerIter<Sequence1> c_find_end( - Sequence1& sequence, Sequence2& subsequence, BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence1> + c_find_end(Sequence1& sequence, Sequence2& subsequence, + BinaryPredicate&& pred) { return std::find_end(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), container_algorithm_internal::c_begin(subsequence), @@ -354,8 +347,9 @@ // find the first element within the container that is also within the options // container. template <typename C1, typename C2> -constexpr container_algorithm_internal::ContainerIter<C1> c_find_first_of( - C1& container, const C2& options) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C1> + c_find_first_of(C1& container, const C2& options) { return std::find_first_of(container_algorithm_internal::c_begin(container), container_algorithm_internal::c_end(container), container_algorithm_internal::c_begin(options), @@ -365,8 +359,9 @@ // Overload of c_find_first_of() for using a predicate evaluation other than // `==` as the function's test condition. template <typename C1, typename C2, typename BinaryPredicate> -constexpr container_algorithm_internal::ContainerIter<C1> c_find_first_of( - C1& container, const C2& options, BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C1> + c_find_first_of(C1& container, const C2& options, BinaryPredicate&& pred) { return std::find_first_of(container_algorithm_internal::c_begin(container), container_algorithm_internal::c_end(container), container_algorithm_internal::c_begin(options), @@ -379,8 +374,9 @@ // Container-based version of the <algorithm> `std::adjacent_find()` function to // find equal adjacent elements within a container. template <typename Sequence> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_adjacent_find( - Sequence& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_adjacent_find(Sequence& sequence) { return std::adjacent_find(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -388,8 +384,9 @@ // Overload of c_adjacent_find() for using a predicate evaluation other than // `==` as the function's test condition. template <typename Sequence, typename BinaryPredicate> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_adjacent_find( - Sequence& sequence, BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_adjacent_find(Sequence& sequence, BinaryPredicate&& pred) { return std::adjacent_find(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<BinaryPredicate>(pred)); @@ -400,8 +397,9 @@ // Container-based version of the <algorithm> `std::count()` function to count // values that match within a container. template <typename C, typename T> -constexpr container_algorithm_internal::ContainerDifferenceType<const C> -c_count(const C& c, T&& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerDifferenceType<const C> + c_count(const C& c, T&& value) { return std::count(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<T>(value)); @@ -412,8 +410,9 @@ // Container-based version of the <algorithm> `std::count_if()` function to // count values matching a condition within a container. template <typename C, typename Pred> -constexpr container_algorithm_internal::ContainerDifferenceType<const C> -c_count_if(const C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerDifferenceType<const C> + c_count_if(const C& c, Pred&& pred) { return std::count_if(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -425,8 +424,9 @@ // return the first element where two ordered containers differ. Applies `==` to // the first N elements of `c1` and `c2`, where N = min(size(c1), size(c2)). template <typename C1, typename C2> -constexpr container_algorithm_internal::ContainerIterPairType<C1, C2> -c_mismatch(C1& c1, C2& c2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIterPairType<C1, C2> + c_mismatch(C1& c1, C2& c2) { return std::mismatch(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -437,8 +437,9 @@ // the function's test condition. Applies `pred`to the first N elements of `c1` // and `c2`, where N = min(size(c1), size(c2)). template <typename C1, typename C2, typename BinaryPredicate> -constexpr container_algorithm_internal::ContainerIterPairType<C1, C2> -c_mismatch(C1& c1, C2& c2, BinaryPredicate pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIterPairType<C1, C2> + c_mismatch(C1& c1, C2& c2, BinaryPredicate pred) { return std::mismatch(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -450,7 +451,7 @@ // Container-based version of the <algorithm> `std::equal()` function to // test whether two containers are equal. template <typename C1, typename C2> -constexpr bool c_equal(const C1& c1, const C2& c2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_equal(const C1& c1, const C2& c2) { return std::equal(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -460,7 +461,8 @@ // Overload of c_equal() for using a predicate evaluation other than `==` as // the function's test condition. template <typename C1, typename C2, typename BinaryPredicate> -constexpr bool c_equal(const C1& c1, const C2& c2, BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_equal(const C1& c1, const C2& c2, + BinaryPredicate&& pred) { return std::equal(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -473,7 +475,8 @@ // Container-based version of the <algorithm> `std::is_permutation()` function // to test whether a container is a permutation of another. template <typename C1, typename C2> -constexpr bool c_is_permutation(const C1& c1, const C2& c2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_permutation(const C1& c1, + const C2& c2) { return std::is_permutation(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -483,8 +486,8 @@ // Overload of c_is_permutation() for using a predicate evaluation other than // `==` as the function's test condition. template <typename C1, typename C2, typename BinaryPredicate> -constexpr bool c_is_permutation(const C1& c1, const C2& c2, - BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_permutation( + const C1& c1, const C2& c2, BinaryPredicate&& pred) { return std::is_permutation(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -497,8 +500,9 @@ // Container-based version of the <algorithm> `std::search()` function to search // a container for a subsequence. template <typename Sequence1, typename Sequence2> -constexpr container_algorithm_internal::ContainerIter<Sequence1> c_search( - Sequence1& sequence, Sequence2& subsequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence1> + c_search(Sequence1& sequence, Sequence2& subsequence) { return std::search(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), container_algorithm_internal::c_begin(subsequence), @@ -508,8 +512,10 @@ // Overload of c_search() for using a predicate evaluation other than // `==` as the function's test condition. template <typename Sequence1, typename Sequence2, typename BinaryPredicate> -constexpr container_algorithm_internal::ContainerIter<Sequence1> c_search( - Sequence1& sequence, Sequence2& subsequence, BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence1> + c_search(Sequence1& sequence, Sequence2& subsequence, + BinaryPredicate&& pred) { return std::search(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), container_algorithm_internal::c_begin(subsequence), @@ -522,8 +528,8 @@ // Container-based version of the <algorithm> `std::ranges::contains_subrange()` // C++23 function to search a container for a subsequence. template <typename Sequence1, typename Sequence2> -constexpr bool c_contains_subrange(Sequence1& sequence, - Sequence2& subsequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_contains_subrange( + Sequence1& sequence, Sequence2& subsequence) { return absl::c_search(sequence, subsequence) != container_algorithm_internal::c_end(sequence); } @@ -531,8 +537,8 @@ // Overload of c_contains_subrange() for using a predicate evaluation other than // `==` as the function's test condition. template <typename Sequence1, typename Sequence2, typename BinaryPredicate> -constexpr bool c_contains_subrange(Sequence1& sequence, Sequence2& subsequence, - BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_contains_subrange( + Sequence1& sequence, Sequence2& subsequence, BinaryPredicate&& pred) { return absl::c_search(sequence, subsequence, std::forward<BinaryPredicate>(pred)) != container_algorithm_internal::c_end(sequence); @@ -543,8 +549,9 @@ // Container-based version of the <algorithm> `std::search_n()` function to // search a container for the first sequence of N elements. template <typename Sequence, typename Size, typename T> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_search_n( - Sequence& sequence, Size count, T&& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_search_n(Sequence& sequence, Size count, T&& value) { return std::search_n(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), count, std::forward<T>(value)); @@ -554,8 +561,10 @@ // `==` as the function's test condition. template <typename Sequence, typename Size, typename T, typename BinaryPredicate> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_search_n( - Sequence& sequence, Size count, T&& value, BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_search_n(Sequence& sequence, Size count, T&& value, + BinaryPredicate&& pred) { return std::search_n(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), count, std::forward<T>(value), @@ -571,9 +580,13 @@ // Container-based version of the <algorithm> `std::copy()` function to copy a // container's elements into an iterator. template <typename InputSequence, typename OutputIterator> -constexpr container_algorithm_internal::ResultOfRangeToIteratorTransfer< - InputSequence, OutputIterator> -c_copy(const InputSequence& input, OutputIterator&& output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + std::enable_if_t<container_algorithm_internal::IsIterator< + absl::remove_cvref_t<OutputIterator>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + InputSequence>::value, + std::decay_t<OutputIterator>> + c_copy(const InputSequence& input, OutputIterator&& output) { return std::copy(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), std::forward<OutputIterator>(output)); @@ -590,9 +603,15 @@ // If `std::size(output) > std::size(input)`, only `std::size(input)` elements // are copied, and `output` is not truncated. template <typename InputSequence, typename OutputRange> -constexpr container_algorithm_internal::ResultOfRangeToRangeTransfer< - InputSequence, OutputRange> -c_copy(const InputSequence& input, OutputRange&& output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + std::enable_if_t<container_algorithm_internal::HasBeginEnd< + std::add_lvalue_reference_t<OutputRange>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + std::remove_reference_t<OutputRange>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + InputSequence>::value, + void> + c_copy(const InputSequence& input, OutputRange&& output) { container_algorithm_internal::AssertCopySize(input, output); absl::c_copy(input, container_algorithm_internal::c_begin( std::forward<OutputRange>(output))); @@ -603,8 +622,11 @@ // Container-based version of the <algorithm> `std::copy_n()` function to copy a // container's first N elements into an iterator. template <typename C, typename Size, typename OutputIterator> -constexpr container_algorithm_internal::ResultOfRangeToIteratorTransfer< - C, OutputIterator> +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::enable_if_t< + container_algorithm_internal::IsIterator< + absl::remove_cvref_t<OutputIterator>>::value && + !container_algorithm_internal::IsMultidimensionalArray<C>::value, + std::decay_t<OutputIterator>> c_copy_n(const C& input, Size n, OutputIterator&& output) { return std::copy_n(container_algorithm_internal::c_begin(input), n, std::forward<OutputIterator>(output)); @@ -622,8 +644,13 @@ // If `std::size(output) > n`, only `n` elements are copied, and `output` is not // truncated. template <typename C, typename Size, typename OutputRange> -constexpr container_algorithm_internal::ResultOfRangeToRangeTransfer< - C, OutputRange> +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::enable_if_t< + container_algorithm_internal::HasBeginEnd< + std::add_lvalue_reference_t<OutputRange>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + std::remove_reference_t<OutputRange>>::value && + !container_algorithm_internal::IsMultidimensionalArray<C>::value, + void> c_copy_n(const C& input, Size n, OutputRange&& output) { container_algorithm_internal::AssertCopyNSize(input, n, output); absl::c_copy_n( @@ -636,8 +663,8 @@ // Container-based version of the <algorithm> `std::copy_if()` function to copy // a container's elements satisfying some condition into an iterator. template <typename InputSequence, typename OutputIterator, typename Pred> -constexpr OutputIterator c_copy_if(const InputSequence& input, - OutputIterator output, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_copy_if(const InputSequence& input, OutputIterator output, Pred&& pred) { return std::copy_if(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), output, std::forward<Pred>(pred)); @@ -648,8 +675,8 @@ // Container-based version of the <algorithm> `std::copy_backward()` function to // copy a container's elements in reverse order into an iterator. template <typename C, typename BidirectionalIterator> -constexpr BidirectionalIterator c_copy_backward(const C& src, - BidirectionalIterator dest) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 BidirectionalIterator +c_copy_backward(const C& src, BidirectionalIterator dest) { return std::copy_backward(container_algorithm_internal::c_begin(src), container_algorithm_internal::c_end(src), dest); } @@ -659,9 +686,13 @@ // Container-based version of the <algorithm> `std::move()` function to move // a container's elements into an iterator. template <typename C, typename OutputIterator> -constexpr container_algorithm_internal::ResultOfRangeToIteratorTransfer< - C, OutputIterator> -c_move(C&& src, OutputIterator&& dest) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + std::enable_if_t<container_algorithm_internal::IsIterator< + absl::remove_cvref_t<OutputIterator>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + std::remove_reference_t<C>>::value, + std::decay_t<OutputIterator>> + c_move(C&& src, OutputIterator&& dest) { return std::move(container_algorithm_internal::c_begin(src), container_algorithm_internal::c_end(src), std::forward<OutputIterator>(dest)); @@ -673,9 +704,15 @@ // The `dest` container must be large enough to hold all elements of `src`; // this function does not resize `dest`. template <typename C, typename OutputRange> -constexpr container_algorithm_internal::ResultOfRangeToRangeTransfer< - C, OutputRange> -c_move(C&& src, OutputRange&& dest) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + std::enable_if_t<container_algorithm_internal::HasBeginEnd< + std::add_lvalue_reference_t<OutputRange>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + std::remove_reference_t<OutputRange>>::value && + !container_algorithm_internal::IsMultidimensionalArray< + std::remove_reference_t<C>>::value, + void> + c_move(C&& src, OutputRange&& dest) { container_algorithm_internal::AssertCopySize(src, dest); absl::c_move(std::forward<C>(src), container_algorithm_internal::c_begin( std::forward<OutputRange>(dest))); @@ -686,8 +723,8 @@ // Container-based version of the <algorithm> `std::move_backward()` function to // move a container's elements into an iterator in reverse order. template <typename C, typename BidirectionalIterator> -constexpr BidirectionalIterator c_move_backward(C&& src, - BidirectionalIterator dest) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 BidirectionalIterator +c_move_backward(C&& src, BidirectionalIterator dest) { return std::move_backward(container_algorithm_internal::c_begin(src), container_algorithm_internal::c_end(src), dest); } @@ -698,8 +735,9 @@ // swap a container's elements with another container's elements. Swaps the // first N elements of `c1` and `c2`, where N = min(size(c1), size(c2)). template <typename C1, typename C2> -constexpr container_algorithm_internal::ContainerIter<C2> c_swap_ranges( - C1& c1, C2& c2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C2> + c_swap_ranges(C1& c1, C2& c2) { auto first1 = container_algorithm_internal::c_begin(c1); auto last1 = container_algorithm_internal::c_end(c1); auto first2 = container_algorithm_internal::c_begin(c2); @@ -719,9 +757,8 @@ // result in an iterator pointing to the last transformed element in the output // range. template <typename InputSequence, typename OutputIterator, typename UnaryOp> -constexpr OutputIterator c_transform(const InputSequence& input, - OutputIterator output, - UnaryOp&& unary_op) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_transform( + const InputSequence& input, OutputIterator output, UnaryOp&& unary_op) { return std::transform(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), output, std::forward<UnaryOp>(unary_op)); @@ -732,10 +769,9 @@ // where N = min(size(c1), size(c2)). template <typename InputSequence1, typename InputSequence2, typename OutputIterator, typename BinaryOp> -constexpr OutputIterator c_transform(const InputSequence1& input1, - const InputSequence2& input2, - OutputIterator output, - BinaryOp&& binary_op) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_transform(const InputSequence1& input1, const InputSequence2& input2, + OutputIterator output, BinaryOp&& binary_op) { auto first1 = container_algorithm_internal::c_begin(input1); auto last1 = container_algorithm_internal::c_end(input1); auto first2 = container_algorithm_internal::c_begin(input2); @@ -754,8 +790,9 @@ // replace a container's elements of some value with a new value. The container // is modified in place. template <typename Sequence, typename T> -constexpr void c_replace(Sequence& sequence, const T& old_value, - const T& new_value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_replace(Sequence& sequence, + const T& old_value, + const T& new_value) { std::replace(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), old_value, new_value); @@ -767,7 +804,8 @@ // replace a container's elements of some value with a new value based on some // condition. The container is modified in place. template <typename C, typename Pred, typename T> -constexpr void c_replace_if(C& c, Pred&& pred, T&& new_value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_replace_if(C& c, Pred&& pred, + T&& new_value) { std::replace_if(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred), std::forward<T>(new_value)); @@ -779,8 +817,8 @@ // replace a container's elements of some value with a new value and return the // results within an iterator. template <typename C, typename OutputIterator, typename T> -constexpr OutputIterator c_replace_copy(const C& c, OutputIterator result, - T&& old_value, T&& new_value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_replace_copy( + const C& c, OutputIterator result, T&& old_value, T&& new_value) { return std::replace_copy(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), result, std::forward<T>(old_value), @@ -793,8 +831,8 @@ // to replace a container's elements of some value with a new value based on // some condition, and return the results within an iterator. template <typename C, typename OutputIterator, typename Pred, typename T> -constexpr OutputIterator c_replace_copy_if(const C& c, OutputIterator result, - Pred&& pred, const T& new_value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_replace_copy_if( + const C& c, OutputIterator result, Pred&& pred, const T& new_value) { return std::replace_copy_if(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), result, std::forward<Pred>(pred), new_value); @@ -805,7 +843,7 @@ // Container-based version of the <algorithm> `std::fill()` function to fill a // container with some value. template <typename C, typename T> -constexpr void c_fill(C& c, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_fill(C& c, const T& value) { std::fill(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), value); } @@ -815,7 +853,8 @@ // Container-based version of the <algorithm> `std::fill_n()` function to fill // the first N elements in a container with some value. template <typename C, typename Size, typename T> -constexpr void c_fill_n(C& c, Size n, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_fill_n(C& c, Size n, + const T& value) { std::fill_n(container_algorithm_internal::c_begin(c), n, value); } @@ -824,7 +863,7 @@ // Container-based version of the <algorithm> `std::generate()` function to // assign a container's elements to the values provided by the given generator. template <typename C, typename Generator> -constexpr void c_generate(C& c, Generator&& gen) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_generate(C& c, Generator&& gen) { std::generate(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Generator>(gen)); @@ -836,8 +875,9 @@ // assign a container's first N elements to the values provided by the given // generator. template <typename C, typename Size, typename Generator> -constexpr container_algorithm_internal::ContainerIter<C> c_generate_n( - C& c, Size n, Generator&& gen) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_generate_n(C& c, Size n, Generator&& gen) { return std::generate_n(container_algorithm_internal::c_begin(c), n, std::forward<Generator>(gen)); } @@ -853,8 +893,8 @@ // copy a container's elements while removing any elements matching the given // `value`. template <typename C, typename OutputIterator, typename T> -constexpr OutputIterator c_remove_copy(const C& c, OutputIterator result, - const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_remove_copy(const C& c, OutputIterator result, const T& value) { return std::remove_copy(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), result, value); @@ -866,8 +906,8 @@ // to copy a container's elements while removing any elements matching the given // condition. template <typename C, typename OutputIterator, typename Pred> -constexpr OutputIterator c_remove_copy_if(const C& c, OutputIterator result, - Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_remove_copy_if(const C& c, OutputIterator result, Pred&& pred) { return std::remove_copy_if(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), result, std::forward<Pred>(pred)); @@ -879,7 +919,8 @@ // copy a container's elements while removing any elements containing duplicate // values. template <typename C, typename OutputIterator> -constexpr OutputIterator c_unique_copy(const C& c, OutputIterator result) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_unique_copy(const C& c, OutputIterator result) { return std::unique_copy(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), result); } @@ -887,8 +928,8 @@ // Overload of c_unique_copy() for using a predicate evaluation other than // `==` for comparing uniqueness of the element values. template <typename C, typename OutputIterator, typename BinaryPredicate> -constexpr OutputIterator c_unique_copy(const C& c, OutputIterator result, - BinaryPredicate&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_unique_copy(const C& c, OutputIterator result, BinaryPredicate&& pred) { return std::unique_copy(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), result, std::forward<BinaryPredicate>(pred)); @@ -899,7 +940,7 @@ // Container-based version of the <algorithm> `std::reverse()` function to // reverse a container's elements. template <typename Sequence> -constexpr void c_reverse(Sequence& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_reverse(Sequence& sequence) { std::reverse(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -909,8 +950,8 @@ // Container-based version of the <algorithm> `std::reverse()` function to // reverse a container's elements and write them to an iterator range. template <typename C, typename OutputIterator> -constexpr OutputIterator c_reverse_copy(const C& sequence, - OutputIterator result) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_reverse_copy(const C& sequence, OutputIterator result) { return std::reverse_copy(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), result); @@ -923,9 +964,10 @@ // the first element in the container. template <typename C, typename Iterator = container_algorithm_internal::ContainerIter<C>> -constexpr Iterator c_rotate(C& sequence, Iterator middle) { - return std::rotate(container_algorithm_internal::c_begin(sequence), middle, - container_algorithm_internal::c_end(sequence)); +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 Iterator c_rotate(C& sequence, + Iterator middle) { + return absl::rotate(container_algorithm_internal::c_begin(sequence), middle, + container_algorithm_internal::c_end(sequence)); } // c_rotate_copy() @@ -934,10 +976,10 @@ // shift a container's elements leftward such that the `middle` element becomes // the first element in a new iterator range. template <typename C, typename OutputIterator> -constexpr OutputIterator c_rotate_copy( - const C& sequence, - container_algorithm_internal::ContainerIter<const C> middle, - OutputIterator result) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_rotate_copy(const C& sequence, + container_algorithm_internal::ContainerIter<const C> middle, + OutputIterator result) { return std::rotate_copy(container_algorithm_internal::c_begin(sequence), middle, container_algorithm_internal::c_end(sequence), result); @@ -979,7 +1021,8 @@ // to test whether all elements in the container for which `pred` returns `true` // precede those for which `pred` is `false`. template <typename C, typename Pred> -constexpr bool c_is_partitioned(const C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_partitioned(const C& c, + Pred&& pred) { return std::is_partitioned(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -992,8 +1035,9 @@ // which `pred` returns `true` precede all those for which it returns `false`, // returning an iterator to the first element of the second group. template <typename C, typename Pred> -constexpr container_algorithm_internal::ContainerIter<C> c_partition( - C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_partition(C& c, Pred&& pred) { return std::partition(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -1022,9 +1066,9 @@ template <typename C, typename OutputIterator1, typename OutputIterator2, typename Pred> -constexpr std::pair<OutputIterator1, OutputIterator2> c_partition_copy( - const C& c, OutputIterator1 out_true, OutputIterator2 out_false, - Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::pair<OutputIterator1, OutputIterator2> +c_partition_copy(const C& c, OutputIterator1 out_true, + OutputIterator2 out_false, Pred&& pred) { return std::partition_copy(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), out_true, out_false, std::forward<Pred>(pred)); @@ -1036,8 +1080,9 @@ // to return the first element of an already partitioned container for which // the given `pred` is not `true`. template <typename C, typename Pred> -constexpr container_algorithm_internal::ContainerIter<C> c_partition_point( - C& c, Pred&& pred) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_partition_point(C& c, Pred&& pred) { return std::partition_point(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<Pred>(pred)); @@ -1052,7 +1097,7 @@ // Container-based version of the <algorithm> `std::sort()` function // to sort elements in ascending order of their values. template <typename C> -constexpr void c_sort(C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort(C& c) { std::sort(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -1060,7 +1105,7 @@ // Overload of c_sort() for performing a `comp` comparison other than the // default `operator<`. template <typename C, typename LessThan> -constexpr void c_sort(C& c, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort(C& c, LessThan&& comp) { std::sort(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<LessThan>(comp)); @@ -1091,7 +1136,7 @@ // Container-based version of the <algorithm> `std::is_sorted()` function // to evaluate whether the given container is sorted in ascending order. template <typename C> -constexpr bool c_is_sorted(const C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_sorted(const C& c) { return std::is_sorted(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -1099,7 +1144,8 @@ // c_is_sorted() overload for performing a `comp` comparison other than the // default `operator<`. template <typename C, typename LessThan> -constexpr bool c_is_sorted(const C& c, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_sorted(const C& c, + LessThan&& comp) { return std::is_sorted(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<LessThan>(comp)); @@ -1111,7 +1157,7 @@ // to rearrange elements within a container such that elements before `middle` // are sorted in ascending order. template <typename RandomAccessContainer> -constexpr void c_partial_sort( +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_partial_sort( RandomAccessContainer& sequence, container_algorithm_internal::ContainerIter<RandomAccessContainer> middle) { std::partial_sort(container_algorithm_internal::c_begin(sequence), middle, @@ -1121,7 +1167,7 @@ // Overload of c_partial_sort() for performing a `comp` comparison other than // the default `operator<`. template <typename RandomAccessContainer, typename LessThan> -constexpr void c_partial_sort( +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_partial_sort( RandomAccessContainer& sequence, container_algorithm_internal::ContainerIter<RandomAccessContainer> middle, LessThan&& comp) { @@ -1138,8 +1184,9 @@ // At most min(result.last - result.first, sequence.last - sequence.first) // elements from the sequence will be stored in the result. template <typename C, typename RandomAccessContainer> -constexpr container_algorithm_internal::ContainerIter<RandomAccessContainer> -c_partial_sort_copy(const C& sequence, RandomAccessContainer& result) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<RandomAccessContainer> + c_partial_sort_copy(const C& sequence, RandomAccessContainer& result) { return std::partial_sort_copy(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), container_algorithm_internal::c_begin(result), @@ -1149,9 +1196,10 @@ // Overload of c_partial_sort_copy() for performing a `comp` comparison other // than the default `operator<`. template <typename C, typename RandomAccessContainer, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<RandomAccessContainer> -c_partial_sort_copy(const C& sequence, RandomAccessContainer& result, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<RandomAccessContainer> + c_partial_sort_copy(const C& sequence, RandomAccessContainer& result, + LessThan&& comp) { return std::partial_sort_copy(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), container_algorithm_internal::c_begin(result), @@ -1165,8 +1213,9 @@ // to return the first element within a container that is not sorted in // ascending order as an iterator. template <typename C> -constexpr container_algorithm_internal::ContainerIter<C> c_is_sorted_until( - C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_is_sorted_until(C& c) { return std::is_sorted_until(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -1174,8 +1223,9 @@ // Overload of c_is_sorted_until() for performing a `comp` comparison other than // the default `operator<`. template <typename C, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<C> c_is_sorted_until( - C& c, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<C> + c_is_sorted_until(C& c, LessThan&& comp) { return std::is_sorted_until(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<LessThan>(comp)); @@ -1189,7 +1239,7 @@ // any order, except that all preceding `nth` will be less than that element, // and all following `nth` will be greater than that element. template <typename RandomAccessContainer> -constexpr void c_nth_element( +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_nth_element( RandomAccessContainer& sequence, container_algorithm_internal::ContainerIter<RandomAccessContainer> nth) { std::nth_element(container_algorithm_internal::c_begin(sequence), nth, @@ -1199,7 +1249,7 @@ // Overload of c_nth_element() for performing a `comp` comparison other than // the default `operator<`. template <typename RandomAccessContainer, typename LessThan> -constexpr void c_nth_element( +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_nth_element( RandomAccessContainer& sequence, container_algorithm_internal::ContainerIter<RandomAccessContainer> nth, LessThan&& comp) { @@ -1218,8 +1268,9 @@ // to return an iterator pointing to the first element in a sorted container // which does not compare less than `value`. template <typename Sequence, typename T> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_lower_bound( - Sequence& sequence, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_lower_bound(Sequence& sequence, const T& value) { return std::lower_bound(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value); } @@ -1227,8 +1278,9 @@ // Overload of c_lower_bound() for performing a `comp` comparison other than // the default `operator<`. template <typename Sequence, typename T, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_lower_bound( - Sequence& sequence, const T& value, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_lower_bound(Sequence& sequence, const T& value, LessThan&& comp) { return std::lower_bound(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value, std::forward<LessThan>(comp)); @@ -1240,8 +1292,9 @@ // to return an iterator pointing to the first element in a sorted container // which is greater than `value`. template <typename Sequence, typename T> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_upper_bound( - Sequence& sequence, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_upper_bound(Sequence& sequence, const T& value) { return std::upper_bound(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value); } @@ -1249,8 +1302,9 @@ // Overload of c_upper_bound() for performing a `comp` comparison other than // the default `operator<`. template <typename Sequence, typename T, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_upper_bound( - Sequence& sequence, const T& value, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<Sequence> + c_upper_bound(Sequence& sequence, const T& value, LessThan&& comp) { return std::upper_bound(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value, std::forward<LessThan>(comp)); @@ -1262,9 +1316,9 @@ // to return an iterator pair pointing to the first and last elements in a // sorted container which compare equal to `value`. template <typename Sequence, typename T> -constexpr container_algorithm_internal::ContainerIterPairType<Sequence, - Sequence> -c_equal_range(Sequence& sequence, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIterPairType<Sequence, Sequence> + c_equal_range(Sequence& sequence, const T& value) { return std::equal_range(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value); } @@ -1272,9 +1326,9 @@ // Overload of c_equal_range() for performing a `comp` comparison other than // the default `operator<`. template <typename Sequence, typename T, typename LessThan> -constexpr container_algorithm_internal::ContainerIterPairType<Sequence, - Sequence> -c_equal_range(Sequence& sequence, const T& value, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIterPairType<Sequence, Sequence> + c_equal_range(Sequence& sequence, const T& value, LessThan&& comp) { return std::equal_range(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value, std::forward<LessThan>(comp)); @@ -1286,7 +1340,8 @@ // to test if any element in the sorted container contains a value equivalent to // 'value'. template <typename Sequence, typename T> -constexpr bool c_binary_search(const Sequence& sequence, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_binary_search( + const Sequence& sequence, const T& value) { return std::binary_search(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value); @@ -1295,8 +1350,8 @@ // Overload of c_binary_search() for performing a `comp` comparison other than // the default `operator<`. template <typename Sequence, typename T, typename LessThan> -constexpr bool c_binary_search(const Sequence& sequence, const T& value, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_binary_search( + const Sequence& sequence, const T& value, LessThan&& comp) { return std::binary_search(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value, std::forward<LessThan>(comp)); @@ -1311,8 +1366,8 @@ // Container-based version of the <algorithm> `std::merge()` function // to merge two sorted containers into a single sorted iterator. template <typename C1, typename C2, typename OutputIterator> -constexpr OutputIterator c_merge(const C1& c1, const C2& c2, - OutputIterator result) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_merge(const C1& c1, const C2& c2, OutputIterator result) { return std::merge(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1322,8 +1377,8 @@ // Overload of c_merge() for performing a `comp` comparison other than // the default `operator<`. template <typename C1, typename C2, typename OutputIterator, typename LessThan> -constexpr OutputIterator c_merge(const C1& c1, const C2& c2, - OutputIterator result, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_merge(const C1& c1, const C2& c2, OutputIterator result, LessThan&& comp) { return std::merge(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1359,7 +1414,8 @@ // to test whether a sorted container `c1` entirely contains another sorted // container `c2`. template <typename C1, typename C2> -constexpr bool c_includes(const C1& c1, const C2& c2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_includes(const C1& c1, + const C2& c2) { return std::includes(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1369,7 +1425,8 @@ // Overload of c_includes() for performing a merge using a `comp` other than // `operator<`. template <typename C1, typename C2, typename LessThan> -constexpr bool c_includes(const C1& c1, const C2& c2, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_includes(const C1& c1, const C2& c2, + LessThan&& comp) { return std::includes(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1389,8 +1446,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_union(const C1& c1, const C2& c2, - OutputIterator output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_set_union(const C1& c1, const C2& c2, OutputIterator output) { return std::set_union(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1406,8 +1463,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_union(const C1& c1, const C2& c2, - OutputIterator output, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_union( + const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) { return std::set_union(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1426,8 +1483,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_intersection(const C1& c1, const C2& c2, - OutputIterator output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_set_intersection(const C1& c1, const C2& c2, OutputIterator output) { // In debug builds, ensure that both containers are sorted with respect to the // default comparator. std::set_intersection requires the containers be sorted // using operator<. @@ -1448,9 +1505,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_intersection(const C1& c1, const C2& c2, - OutputIterator output, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_intersection( + const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) { // In debug builds, ensure that both containers are sorted with respect to the // default comparator. std::set_intersection requires the containers be sorted // using the same comparator. @@ -1475,8 +1531,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_difference(const C1& c1, const C2& c2, - OutputIterator output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_set_difference(const C1& c1, const C2& c2, OutputIterator output) { return std::set_difference(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1492,9 +1548,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_difference(const C1& c1, const C2& c2, - OutputIterator output, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_difference( + const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) { return std::set_difference(container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), container_algorithm_internal::c_begin(c2), @@ -1514,8 +1569,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_symmetric_difference(const C1& c1, const C2& c2, - OutputIterator output) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator +c_set_symmetric_difference(const C1& c1, const C2& c2, OutputIterator output) { return std::set_symmetric_difference( container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), @@ -1532,9 +1587,8 @@ typename = typename std::enable_if< !container_algorithm_internal::IsUnorderedContainer<C2>::value, void>::type> -constexpr OutputIterator c_set_symmetric_difference(const C1& c1, const C2& c2, - OutputIterator output, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIterator c_set_symmetric_difference( + const C1& c1, const C2& c2, OutputIterator output, LessThan&& comp) { return std::set_symmetric_difference( container_algorithm_internal::c_begin(c1), container_algorithm_internal::c_end(c1), @@ -1552,7 +1606,8 @@ // Container-based version of the <algorithm> `std::push_heap()` function // to push a value onto a container heap. template <typename RandomAccessContainer> -constexpr void c_push_heap(RandomAccessContainer& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_push_heap( + RandomAccessContainer& sequence) { std::push_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1560,7 +1615,8 @@ // Overload of c_push_heap() for performing a push operation on a heap using a // `comp` other than `operator<`. template <typename RandomAccessContainer, typename LessThan> -constexpr void c_push_heap(RandomAccessContainer& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_push_heap( + RandomAccessContainer& sequence, LessThan&& comp) { std::push_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1571,7 +1627,8 @@ // Container-based version of the <algorithm> `std::pop_heap()` function // to pop a value from a heap container. template <typename RandomAccessContainer> -constexpr void c_pop_heap(RandomAccessContainer& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_pop_heap( + RandomAccessContainer& sequence) { std::pop_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1579,7 +1636,8 @@ // Overload of c_pop_heap() for performing a pop operation on a heap using a // `comp` other than `operator<`. template <typename RandomAccessContainer, typename LessThan> -constexpr void c_pop_heap(RandomAccessContainer& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_pop_heap( + RandomAccessContainer& sequence, LessThan&& comp) { std::pop_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1590,7 +1648,8 @@ // Container-based version of the <algorithm> `std::make_heap()` function // to make a container a heap. template <typename RandomAccessContainer> -constexpr void c_make_heap(RandomAccessContainer& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_make_heap( + RandomAccessContainer& sequence) { std::make_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1598,7 +1657,8 @@ // Overload of c_make_heap() for performing heap comparisons using a // `comp` other than `operator<` template <typename RandomAccessContainer, typename LessThan> -constexpr void c_make_heap(RandomAccessContainer& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_make_heap( + RandomAccessContainer& sequence, LessThan&& comp) { std::make_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1609,7 +1669,8 @@ // Container-based version of the <algorithm> `std::sort_heap()` function // to sort a heap into ascending order (after which it is no longer a heap). template <typename RandomAccessContainer> -constexpr void c_sort_heap(RandomAccessContainer& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort_heap( + RandomAccessContainer& sequence) { std::sort_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1617,7 +1678,8 @@ // Overload of c_sort_heap() for performing heap comparisons using a // `comp` other than `operator<` template <typename RandomAccessContainer, typename LessThan> -constexpr void c_sort_heap(RandomAccessContainer& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_sort_heap( + RandomAccessContainer& sequence, LessThan&& comp) { std::sort_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1628,7 +1690,8 @@ // Container-based version of the <algorithm> `std::is_heap()` function // to check whether the given container is a heap. template <typename RandomAccessContainer> -constexpr bool c_is_heap(const RandomAccessContainer& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_heap( + const RandomAccessContainer& sequence) { return std::is_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1636,8 +1699,8 @@ // Overload of c_is_heap() for performing heap comparisons using a // `comp` other than `operator<` template <typename RandomAccessContainer, typename LessThan> -constexpr bool c_is_heap(const RandomAccessContainer& sequence, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_is_heap( + const RandomAccessContainer& sequence, LessThan&& comp) { return std::is_heap(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1648,8 +1711,9 @@ // Container-based version of the <algorithm> `std::is_heap_until()` function // to find the first element in a given container which is not in heap order. template <typename RandomAccessContainer> -constexpr container_algorithm_internal::ContainerIter<RandomAccessContainer> -c_is_heap_until(RandomAccessContainer& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<RandomAccessContainer> + c_is_heap_until(RandomAccessContainer& sequence) { return std::is_heap_until(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1657,8 +1721,9 @@ // Overload of c_is_heap_until() for performing heap comparisons using a // `comp` other than `operator<` template <typename RandomAccessContainer, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<RandomAccessContainer> -c_is_heap_until(RandomAccessContainer& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 + container_algorithm_internal::ContainerIter<RandomAccessContainer> + c_is_heap_until(RandomAccessContainer& sequence, LessThan&& comp) { return std::is_heap_until(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1674,8 +1739,9 @@ // to return an iterator pointing to the element with the smallest value, using // `operator<` to make the comparisons. template <typename Sequence> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_min_element( - Sequence& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerIter<Sequence> + c_min_element(Sequence& sequence) { return std::min_element(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1683,8 +1749,9 @@ // Overload of c_min_element() for performing a `comp` comparison other than // `operator<`. template <typename Sequence, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_min_element( - Sequence& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerIter<Sequence> + c_min_element(Sequence& sequence, LessThan&& comp) { return std::min_element(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1696,8 +1763,9 @@ // to return an iterator pointing to the element with the largest value, using // `operator<` to make the comparisons. template <typename Sequence> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_max_element( - Sequence& sequence) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerIter<Sequence> + c_max_element(Sequence& sequence) { return std::max_element(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence)); } @@ -1705,8 +1773,9 @@ // Overload of c_max_element() for performing a `comp` comparison other than // `operator<`. template <typename Sequence, typename LessThan> -constexpr container_algorithm_internal::ContainerIter<Sequence> c_max_element( - Sequence& sequence, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerIter<Sequence> + c_max_element(Sequence& sequence, LessThan&& comp) { return std::max_element(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<LessThan>(comp)); @@ -1719,8 +1788,9 @@ // smallest and largest values, respectively, using `operator<` to make the // comparisons. template <typename C> -constexpr container_algorithm_internal::ContainerIterPairType<C, C> -c_minmax_element(C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerIterPairType<C, C> + c_minmax_element(C& c) { return std::minmax_element(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -1728,8 +1798,9 @@ // Overload of c_minmax_element() for performing `comp` comparisons other than // `operator<`. template <typename C, typename LessThan> -constexpr container_algorithm_internal::ContainerIterPairType<C, C> -c_minmax_element(C& c, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 + container_algorithm_internal::ContainerIterPairType<C, C> + c_minmax_element(C& c, LessThan&& comp) { return std::minmax_element(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<LessThan>(comp)); @@ -1747,8 +1818,8 @@ // that capital letters ("A-Z") have ASCII values less than lowercase letters // ("a-z"). template <typename Sequence1, typename Sequence2> -constexpr bool c_lexicographical_compare(const Sequence1& sequence1, - const Sequence2& sequence2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_lexicographical_compare( + const Sequence1& sequence1, const Sequence2& sequence2) { return std::lexicographical_compare( container_algorithm_internal::c_begin(sequence1), container_algorithm_internal::c_end(sequence1), @@ -1759,9 +1830,8 @@ // Overload of c_lexicographical_compare() for performing a lexicographical // comparison using a `comp` operator instead of `operator<`. template <typename Sequence1, typename Sequence2, typename LessThan> -constexpr bool c_lexicographical_compare(const Sequence1& sequence1, - const Sequence2& sequence2, - LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_lexicographical_compare( + const Sequence1& sequence1, const Sequence2& sequence2, LessThan&& comp) { return std::lexicographical_compare( container_algorithm_internal::c_begin(sequence1), container_algorithm_internal::c_end(sequence1), @@ -1776,7 +1846,7 @@ // to rearrange a container's elements into the next lexicographically greater // permutation. template <typename C> -constexpr bool c_next_permutation(C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_next_permutation(C& c) { return std::next_permutation(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -1784,7 +1854,8 @@ // Overload of c_next_permutation() for performing a lexicographical // comparison using a `comp` operator instead of `operator<`. template <typename C, typename LessThan> -constexpr bool c_next_permutation(C& c, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_next_permutation(C& c, + LessThan&& comp) { return std::next_permutation(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<LessThan>(comp)); @@ -1796,7 +1867,7 @@ // to rearrange a container's elements into the next lexicographically lesser // permutation. template <typename C> -constexpr bool c_prev_permutation(C& c) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_prev_permutation(C& c) { return std::prev_permutation(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c)); } @@ -1804,7 +1875,8 @@ // Overload of c_prev_permutation() for performing a lexicographical // comparison using a `comp` operator instead of `operator<`. template <typename C, typename LessThan> -constexpr bool c_prev_permutation(C& c, LessThan&& comp) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool c_prev_permutation(C& c, + LessThan&& comp) { return std::prev_permutation(container_algorithm_internal::c_begin(c), container_algorithm_internal::c_end(c), std::forward<LessThan>(comp)); @@ -1820,7 +1892,8 @@ // to compute successive values of `value`, as if incremented with `++value` // after each element is written, and write them to the container. template <typename Sequence, typename T> -constexpr void c_iota(Sequence& sequence, const T& value) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 void c_iota(Sequence& sequence, + const T& value) { std::iota(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), value); } @@ -1835,7 +1908,8 @@ // std::decay_t<T>. As a user of this function you can casually read // this as "returns T by value" and assume it does the right thing. template <typename Sequence, typename T> -constexpr std::decay_t<T> c_accumulate(const Sequence& sequence, T&& init) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_accumulate( + const Sequence& sequence, T&& init) { return std::accumulate(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<T>(init)); @@ -1844,8 +1918,8 @@ // Overload of c_accumulate() for using a binary operations other than // addition for computing the accumulation. template <typename Sequence, typename T, typename BinaryOp> -constexpr std::decay_t<T> c_accumulate(const Sequence& sequence, T&& init, - BinaryOp&& binary_op) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_accumulate( + const Sequence& sequence, T&& init, BinaryOp&& binary_op) { return std::accumulate(container_algorithm_internal::c_begin(sequence), container_algorithm_internal::c_end(sequence), std::forward<T>(init), @@ -1861,8 +1935,8 @@ // std::decay_t<T>. As a user of this function you can casually read // this as "returns T by value" and assume it does the right thing. template <typename Sequence1, typename Sequence2, typename T> -constexpr std::decay_t<T> c_inner_product(const Sequence1& factors1, - const Sequence2& factors2, T&& sum) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_inner_product( + const Sequence1& factors1, const Sequence2& factors2, T&& sum) { return std::inner_product(container_algorithm_internal::c_begin(factors1), container_algorithm_internal::c_end(factors1), container_algorithm_internal::c_begin(factors2), @@ -1874,9 +1948,9 @@ // the product between the two container's element pair). template <typename Sequence1, typename Sequence2, typename T, typename BinaryOp1, typename BinaryOp2> -constexpr std::decay_t<T> c_inner_product(const Sequence1& factors1, - const Sequence2& factors2, T&& sum, - BinaryOp1&& op1, BinaryOp2&& op2) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 std::decay_t<T> c_inner_product( + const Sequence1& factors1, const Sequence2& factors2, T&& sum, + BinaryOp1&& op1, BinaryOp2&& op2) { return std::inner_product(container_algorithm_internal::c_begin(factors1), container_algorithm_internal::c_end(factors1), container_algorithm_internal::c_begin(factors2), @@ -1890,8 +1964,8 @@ // function to compute the difference between each element and the one preceding // it and write it to an iterator. template <typename InputSequence, typename OutputIt> -constexpr OutputIt c_adjacent_difference(const InputSequence& input, - OutputIt output_first) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt +c_adjacent_difference(const InputSequence& input, OutputIt output_first) { return std::adjacent_difference(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), output_first); @@ -1900,8 +1974,8 @@ // Overload of c_adjacent_difference() for using a binary operation other than // subtraction to compute the adjacent difference. template <typename InputSequence, typename OutputIt, typename BinaryOp> -constexpr OutputIt c_adjacent_difference(const InputSequence& input, - OutputIt output_first, BinaryOp&& op) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt c_adjacent_difference( + const InputSequence& input, OutputIt output_first, BinaryOp&& op) { return std::adjacent_difference(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), output_first, std::forward<BinaryOp>(op)); @@ -1914,8 +1988,8 @@ // to an iterator. The partial sum is the sum of all element values so far in // the sequence. template <typename InputSequence, typename OutputIt> -constexpr OutputIt c_partial_sum(const InputSequence& input, - OutputIt output_first) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt +c_partial_sum(const InputSequence& input, OutputIt output_first) { return std::partial_sum(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), output_first); @@ -1924,8 +1998,8 @@ // Overload of c_partial_sum() for using a binary operation other than addition // to compute the "partial sum". template <typename InputSequence, typename OutputIt, typename BinaryOp> -constexpr OutputIt c_partial_sum(const InputSequence& input, - OutputIt output_first, BinaryOp&& op) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 OutputIt c_partial_sum( + const InputSequence& input, OutputIt output_first, BinaryOp&& op) { return std::partial_sum(container_algorithm_internal::c_begin(input), container_algorithm_internal::c_end(input), output_first, std::forward<BinaryOp>(op));
diff --git a/absl/algorithm/container_test.cc b/absl/algorithm/container_test.cc index 887c5ce..6bacb1e 100644 --- a/absl/algorithm/container_test.cc +++ b/absl/algorithm/container_test.cc
@@ -2536,15 +2536,15 @@ struct CanCopy : std::false_type {}; template <typename Container, typename Output> struct CanCopy<Container, Output, - std::void_t<decltype(absl::c_copy(std::declval<Container>(), - std::declval<Output>()))>> + absl::void_t<decltype(absl::c_copy(std::declval<Container>(), + std::declval<Output>()))>> : std::true_type {}; template <typename Container, typename Output, typename = void> struct CanCopyN : std::false_type {}; template <typename Container, typename Output> struct CanCopyN<Container, Output, - std::void_t<decltype(absl::c_copy_n( + absl::void_t<decltype(absl::c_copy_n( std::declval<Container>(), std::declval<ptrdiff_t>(), std::declval<Output>()))>> : std::true_type {}; @@ -2552,8 +2552,8 @@ struct CanMove : std::false_type {}; template <typename Container, typename Output> struct CanMove<Container, Output, - std::void_t<decltype(absl::c_move(std::declval<Container>(), - std::declval<Output>()))>> + absl::void_t<decltype(absl::c_move(std::declval<Container>(), + std::declval<Output>()))>> : std::true_type {}; TEST(CanCopyTest, CopyToMultiDimArray) {
diff --git a/absl/base/BUILD.bazel b/absl/base/BUILD.bazel index 7046a4e..9548368 100644 --- a/absl/base/BUILD.bazel +++ b/absl/base/BUILD.bazel
@@ -62,23 +62,6 @@ ) cc_library( - name = "cpu_detect", - srcs = [ - "internal/cpu_detect.cc", - ], - hdrs = ["internal/cpu_detect.h"], - copts = ABSL_DEFAULT_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, - visibility = [ - "//absl:__subpackages__", - "//absl:friends", - ], - deps = [ - ":config", - ], -) - -cc_library( name = "hardening", hdrs = [ "internal/hardening.h",
diff --git a/absl/base/BUILD.gn b/absl/base/BUILD.gn index d7febcb..ea59cd8 100644 --- a/absl/base/BUILD.gn +++ b/absl/base/BUILD.gn
@@ -19,15 +19,6 @@ visibility = [ "//third_party/abseil-cpp/absl/*" ] } -absl_source_set("cpu_detect") { - public = [ "internal/cpu_detect.h" ] - sources = [ "internal/cpu_detect.cc" ] - deps = [ - ":config", - ] - visibility = [ "//third_party/abseil-cpp/absl/*" ] -} - absl_source_set("hardening") { public = [ "internal/hardening.h" ] deps = [
diff --git a/absl/base/CMakeLists.txt b/absl/base/CMakeLists.txt index e16014a..0608fe3 100644 --- a/absl/base/CMakeLists.txt +++ b/absl/base/CMakeLists.txt
@@ -32,21 +32,6 @@ # Internal-only target, do not depend on directly. absl_cc_library( NAME - base_cpu_detect - HDRS - "internal/cpu_detect.h" - SRCS - "internal/cpu_detect.cc" - DEPS - absl::base - absl::config - COPTS - ${ABSL_DEFAULT_COPTS} -) - -# Internal-only target, do not depend on directly. -absl_cc_library( - NAME errno_saver HDRS "internal/errno_saver.h"
diff --git a/absl/base/config.h b/absl/base/config.h index 4a35ff1..d4a7bfb 100644 --- a/absl/base/config.h +++ b/absl/base/config.h
@@ -493,6 +493,34 @@ #error "absl endian detection needs to be set up for your compiler" #endif +// macOS < 10.13 and iOS < 12 don't support <any>, <optional>, or <variant> +// because the libc++ shared library shipped on the system doesn't have the +// requisite exported symbols. See +// https://github.com/abseil/abseil-cpp/issues/207 and +// https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes +// +// libc++ spells out the availability requirements in the file +// llvm-project/libcxx/include/__config via the #define +// _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS. The set of versions has been +// modified a few times, via +// https://github.com/llvm/llvm-project/commit/7fb40e1569dd66292b647f4501b85517e9247953 +// and +// https://github.com/llvm/llvm-project/commit/0bc451e7e137c4ccadcd3377250874f641ca514a +// The second has the actually correct versions, thus, is what we copy here. +#if defined(__APPLE__) && \ + ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101300) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000)) +#define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 1 +#else +#define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 0 +#endif + // Deprecated macros for polyfill detection. #define ABSL_HAVE_STD_ANY 1 #define ABSL_USES_STD_ANY 1 @@ -826,6 +854,27 @@ #define ABSL_HAVE_CONSTANT_EVALUATED 1 #endif +// ABSL_INTERNAL_CONSTEXPR_SINCE_CXXYY is used to conditionally define constexpr +// for different C++ versions. +// +// These macros are an implementation detail and will be unconditionally removed +// once the minimum supported C++ version catches up to a given version. +// +// For this reason, this symbol is considered INTERNAL and code outside of +// Abseil must not use it. +#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \ + ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L +#define ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 constexpr +#else +#define ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 +#endif +#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \ + ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L +#define ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 constexpr +#else +#define ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 +#endif + // ABSL_INTERNAL_EMSCRIPTEN_VERSION combines Emscripten's three version macros // into an integer that can be compared against. #ifdef ABSL_INTERNAL_EMSCRIPTEN_VERSION
diff --git a/absl/base/internal/hardening.h b/absl/base/internal/hardening.h index 188c8f3..31b25d9 100644 --- a/absl/base/internal/hardening.h +++ b/absl/base/internal/hardening.h
@@ -45,7 +45,7 @@ ABSL_ASSERT(cond); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (ABSL_PREDICT_FALSE(!cond)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -59,7 +59,7 @@ ABSL_ASSERT(cond); #if (ABSL_OPTION_HARDENED == 1) && defined(NDEBUG) if (ABSL_PREDICT_FALSE(!cond)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -69,7 +69,7 @@ ABSL_ASSERT(val1 > val2); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (!ABSL_PREDICT_TRUE(val1 > val2)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -79,7 +79,7 @@ ABSL_ASSERT(val1 >= val2); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (!ABSL_PREDICT_TRUE(val1 >= val2)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -89,7 +89,7 @@ ABSL_ASSERT(val1 < val2); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (!ABSL_PREDICT_TRUE(val1 < val2)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -99,7 +99,7 @@ ABSL_ASSERT(val1 <= val2); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (!ABSL_PREDICT_TRUE(val1 <= val2)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -113,7 +113,7 @@ ABSL_ASSERT(!container.empty()); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (ABSL_PREDICT_FALSE(container.empty())) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif } @@ -123,7 +123,7 @@ ABSL_ASSERT(ptr != nullptr); #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) if (ABSL_PREDICT_FALSE(ptr == nullptr)) { - ABSL_INTERNAL_HARDENING_ABORT(); + base_internal::HardeningAbort(); } #endif }
diff --git a/absl/base/macros.h b/absl/base/macros.h index 3e60a97..225e2f3 100644 --- a/absl/base/macros.h +++ b/absl/base/macros.h
@@ -135,15 +135,7 @@ // aborts the program in release mode (when NDEBUG is defined). The // implementation should abort the program as quickly as possible and ideally it // should not be possible to ignore the abort request. -#if defined(__CUDACC__) || defined(__CUDA_ARCH__) || defined(__CUDA__) -#define ABSL_INTERNAL_HARDENING_ABORT() \ - do { \ - ABSL_INTERNAL_IMMEDIATE_ABORT_IMPL(); \ - ABSL_INTERNAL_UNREACHABLE_IMPL(); \ - } while (false) -#else #define ABSL_INTERNAL_HARDENING_ABORT() ::absl::base_internal::HardeningAbort() -#endif // ABSL_HARDENING_ASSERT() // @@ -157,12 +149,9 @@ // See `ABSL_OPTION_HARDENED` in `absl/base/options.h` for more information on // hardened mode. #if (ABSL_OPTION_HARDENED == 1 || ABSL_OPTION_HARDENED == 2) && defined(NDEBUG) -#define ABSL_HARDENING_ASSERT(expr) \ - do { \ - if (!ABSL_PREDICT_TRUE((expr))) { \ - ABSL_INTERNAL_HARDENING_ABORT(); \ - } \ - } while (false) +#define ABSL_HARDENING_ASSERT(expr) \ + (ABSL_PREDICT_TRUE((expr)) ? static_cast<void>(0) \ + : ABSL_INTERNAL_HARDENING_ABORT()) #else #define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr) #endif @@ -179,7 +168,9 @@ // See `ABSL_OPTION_HARDENED` in `absl/base/options.h` for more information on // hardened mode. #if ABSL_OPTION_HARDENED == 1 && defined(NDEBUG) -#define ABSL_HARDENING_ASSERT_SLOW(expr) ABSL_HARDENING_ASSERT(expr) +#define ABSL_HARDENING_ASSERT_SLOW(expr) \ + (ABSL_PREDICT_TRUE((expr)) ? static_cast<void>(0) \ + : ABSL_INTERNAL_HARDENING_ABORT()) #else #define ABSL_HARDENING_ASSERT_SLOW(expr) ABSL_ASSERT(expr) #endif
diff --git a/absl/container/internal/btree_container.h b/absl/container/internal/btree_container.h index 5261b6f..d4ce523 100644 --- a/absl/container/internal/btree_container.h +++ b/absl/container/internal/btree_container.h
@@ -501,7 +501,7 @@ IfRRef<int KQual>::AddPtr<K>, \ IfRRef<int MQual>::AddPtr<M>>>()), \ ABSL_INTERNAL_SINGLE_ARG( \ - int&..., \ + int &..., \ decltype(EnableIf<LifetimeBoundKV<K, KValue, M, MValue>>()) = \ 0))> \ decltype(auto) Func( \ @@ -515,7 +515,7 @@ __VA_ARGS__ std::forward<decltype(k)>(k), \ std::forward<decltype(obj)>(obj)); \ } \ - static_assert(true, "this assertion forces a semicolon") + friend struct std::enable_if<false> /* just to force a semicolon */ // Insertion routines. // Note: the nullptr template arguments and extra `const M&` overloads allow // for supporting bitfield arguments. @@ -609,12 +609,12 @@ decltype(auto) Func( \ __VA_ARGS__ key_arg<K> KQual k ABSL_INTERNAL_IF_##KValue( \ ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)), \ - Args&&... args) ABSL_ATTRIBUTE_LIFETIME_BOUND { \ + Args &&...args) ABSL_ATTRIBUTE_LIFETIME_BOUND { \ return ABSL_INTERNAL_IF_##KValue((this->template Func<K, 0>), Callee)( \ __VA_ARGS__ std::forward<decltype(k)>(k), \ std::forward<decltype(args)>(args)...); \ } \ - static_assert(true, "this assertion forces a semicolon") + friend struct std::enable_if<false> /* just to force a semicolon */ ABSL_INTERNAL_X(try_emplace, try_emplace_impl, const &, false); ABSL_INTERNAL_X(try_emplace, try_emplace_impl, const &, true); ABSL_INTERNAL_X(try_emplace, try_emplace_impl, &&, false);
diff --git a/absl/container/internal/raw_hash_set.cc b/absl/container/internal/raw_hash_set.cc index 5a2c08a..6ab06e4 100644 --- a/absl/container/internal/raw_hash_set.cc +++ b/absl/container/internal/raw_hash_set.cc
@@ -367,23 +367,6 @@ SetCtrl(c, i, static_cast<ctrl_t>(h), slot_size); } -inline void SetCtrlInSingleGroupTableNoSanitizeImpl(const CommonFields& c, - size_t i, ctrl_t h) { - ABSL_SWISSTABLE_ASSERT(!c.is_small()); - ABSL_SWISSTABLE_ASSERT(is_single_group(c.capacity())); - ctrl_t* ctrl = c.control(); - ctrl[i] = h; - ctrl[i + c.capacity() + 1] = h; -} - -// Sets `ctrl[i]` to `ctrl_t::kSentinel` in single group table. -// -// Unlike setting it directly, this function will perform bounds checks and -// mirror the value to the cloned tail if necessary. -inline void BlockCtrlInSingleGroupTable(const CommonFields& c, size_t i) { - SetCtrlInSingleGroupTableNoSanitizeImpl(c, i, ctrl_t::kSentinel); -} - // Like SetCtrl, but in a single group table, we can save some operations when // setting the cloned control byte. inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, ctrl_t h, @@ -391,7 +374,9 @@ ABSL_SWISSTABLE_ASSERT(!c.is_small()); ABSL_SWISSTABLE_ASSERT(is_single_group(c.capacity())); DoSanitizeOnSetCtrl(c, i, h, slot_size); - SetCtrlInSingleGroupTableNoSanitizeImpl(c, i, h); + ctrl_t* ctrl = c.control(); + ctrl[i] = h; + ctrl[i + c.capacity() + 1] = h; } // Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`. inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, h2_t h, @@ -543,13 +528,8 @@ } // Updates the control bytes to indicate a completely empty table such that all -// control bytes are kEmpty except for the kSentinel bytes. -// If the table has blocked elements, last `blocked_element_count` are set to -// kSentinel. -void ResetCtrl(CommonFields& common, size_t slot_size, - size_t blocked_element_count) { - ABSL_SWISSTABLE_ASSERT(IsCapacityValidForBlockedElements(common.capacity()) || - blocked_element_count == 0); +// control bytes are kEmpty except for the kSentinel byte. +void ResetCtrl(CommonFields& common, size_t slot_size) { const size_t capacity = common.capacity(); ctrl_t* ctrl = common.control(); static constexpr size_t kTwoGroupCapacity = 2 * Group::kWidth - 1; @@ -567,12 +547,7 @@ capacity + 1 + NumClonedBytes()); } ctrl[capacity] = ctrl_t::kSentinel; - SanitizerPoisonMemoryRegion(common.slot_array(), - slot_size * (capacity - blocked_element_count)); - while (blocked_element_count > 0) { - BlockCtrlInSingleGroupTable(common, capacity - blocked_element_count); - --blocked_element_count; - } + SanitizerPoisonMemoryRegion(common.slot_array(), slot_size * capacity); } // Initializes control bytes for growing from capacity 1 to 3. @@ -654,8 +629,7 @@ c.infoz().RecordStorageChanged(0, policy.soo_capacity()); c.infoz().Unregister(); (*policy.dealloc)(alloc, c.capacity(), c.control(), policy.slot_size, - policy.slot_align, c.has_infoz(), - c.blocked_element_count()); + policy.slot_align, c.has_infoz()); c = policy.soo_enabled ? CommonFields{soo_tag_t{}} : CommonFields{non_soo_tag_t{}}; } @@ -696,77 +670,22 @@ bool reuse) { ABSL_SWISSTABLE_ASSERT(c.capacity() > MaxSmallCapacity()); if (reuse) { - size_t blocked_element_count = c.blocked_element_count(); c.set_size_to_zero(); - ABSL_SWISSTABLE_ASSERT(c.capacity() > policy.soo_capacity()); - ResetCtrl(c, policy.slot_size, blocked_element_count); + ResetCtrl(c, policy.slot_size); ResetGrowthLeft(c); - c.growth_info().OverwriteManyEmptyAsFull(blocked_element_count); - ABSL_SWISSTABLE_ASSERT(c.blocked_element_count() == blocked_element_count); c.infoz().RecordStorageChanged(0, c.capacity()); } else { ClearBackingArrayNoReuse(c, policy, alloc); } } -void DestroySlots(CommonFields& c, size_t slot_size, - DestroySlotFn destroy_slot) { - ABSL_SWISSTABLE_ASSERT(!c.is_small()); - ABSL_SWISSTABLE_ASSERT(destroy_slot != nullptr); - auto destroy_slot_wrapper = [&](const ctrl_t*, void* slot) { - destroy_slot(&c, slot); - }; - if constexpr (SwisstableAssertAccessToDestroyedTable()) { - CommonFields common_copy(non_soo_tag_t{}, c); - c.set_capacity(HashtableCapacity::CreateDestroyed()); - IterateOverFullSlotsImpl(common_copy, slot_size, destroy_slot_wrapper); - c.set_capacity(common_copy.capacity()); - } else { - IterateOverFullSlotsImpl(c, slot_size, destroy_slot_wrapper); - } -} - -void DeallocBackingArray(CommonFields& c, size_t slot_size, size_t slot_align, - DeallocBackingArrayFn dealloc, void* alloc) { - const size_t cap = c.capacity(); - c.infoz().Unregister(); - dealloc(alloc, cap, c.control(), slot_size, slot_align, c.has_infoz(), - c.blocked_element_count()); -} - -void DestructSoo(CommonFields& c, size_t slot_size, size_t slot_align, - DestroySlotFn destroy_slot, DeallocBackingArrayFn dealloc, - void* alloc) { - ABSL_SWISSTABLE_ASSERT(!c.is_small() || !c.empty()); - if (c.is_small()) { - ABSL_SWISSTABLE_ASSERT(destroy_slot != nullptr); - destroy_slot(&c, c.soo_data()); - return; - } - if (destroy_slot != nullptr) { - DestroySlots(c, slot_size, destroy_slot); - } - DeallocBackingArray(c, slot_size, slot_align, dealloc, alloc); -} - -void DestructNonSoo(CommonFields& c, size_t slot_size, size_t slot_align, - DestroySlotFn destroy_slot, DeallocBackingArrayFn dealloc, - void* alloc) { - ABSL_SWISSTABLE_ASSERT(c.capacity() > 0); - if (destroy_slot != nullptr) { - if (c.is_small()) { - if (!c.empty()) { - destroy_slot(&c, c.slot_array()); - } - } else { - DestroySlots(c, slot_size, destroy_slot); - } - } - DeallocBackingArray(c, slot_size, slot_align, dealloc, alloc); -} - namespace { +enum class ResizeNonSooMode { + kGuaranteedEmpty, + kGuaranteedAllocated, +}; + // Iterates over full slots in old table, finds new positions for them and // transfers the slots. // This function is used for reserving or rehashing non-empty tables. @@ -854,9 +773,9 @@ BackingArrayPtrs AllocBackingArray(CommonFields& common, const PolicyFunctions& __restrict policy, size_t new_capacity, bool has_infoz, - void* alloc, size_t blocked_element_count) { + void* alloc) { RawHashSetLayout layout(new_capacity, policy.slot_size, policy.slot_align, - has_infoz, blocked_element_count); + has_infoz); // Perform a direct call in the common case to allow for profile-guided // heap optimization (PGHO) to understand which allocation function is used. constexpr size_t kDefaultAlignment = BackingArrayAlignment(alignof(size_t)); @@ -876,15 +795,67 @@ mem + layout.slot_offset()}; } +template <ResizeNonSooMode kMode> +void ResizeNonSooImpl(CommonFields& common, + const PolicyFunctions& __restrict policy, + size_t new_capacity, HashtablezInfoHandle infoz) { + ABSL_SWISSTABLE_ASSERT(IsValidCapacity(new_capacity)); + ABSL_SWISSTABLE_ASSERT(new_capacity > policy.soo_capacity()); + + [[maybe_unused]] const size_t old_capacity = common.capacity(); + [[maybe_unused]] ctrl_t* old_ctrl; + [[maybe_unused]] void* old_slots; + if constexpr (kMode == ResizeNonSooMode::kGuaranteedAllocated) { + old_ctrl = common.control(); + old_slots = common.slot_array(); + } + + const size_t slot_size = policy.slot_size; + [[maybe_unused]] const size_t slot_align = policy.slot_align; + const bool has_infoz = infoz.IsSampled(); + void* alloc = policy.get_char_alloc(common); + + common.set_capacity(new_capacity); + const auto [new_ctrl, new_slots] = + AllocBackingArray(common, policy, new_capacity, has_infoz, alloc); + common.set_control(new_ctrl); + common.set_slots(new_slots); + common.generate_new_seed(has_infoz); + + size_t total_probe_length = 0; + ResetCtrl(common, slot_size); + ABSL_SWISSTABLE_ASSERT(kMode != ResizeNonSooMode::kGuaranteedEmpty || + old_capacity == policy.soo_capacity()); + ABSL_SWISSTABLE_ASSERT(kMode != ResizeNonSooMode::kGuaranteedAllocated || + old_capacity > 0); + if constexpr (kMode == ResizeNonSooMode::kGuaranteedAllocated) { + total_probe_length = FindNewPositionsAndTransferSlots( + common, policy, old_ctrl, old_slots, old_capacity); + (*policy.dealloc)(alloc, old_capacity, old_ctrl, slot_size, slot_align, + has_infoz); + if (HasGrowthInfoForCapacity(new_capacity)) { + ResetGrowthLeft(GetGrowthInfoFromControl(new_ctrl), new_capacity, + common.size()); + } + } else { + if (HasGrowthInfoForCapacity(new_capacity)) { + GetGrowthInfoFromControl(new_ctrl).InitGrowthLeftNoDeleted( + CapacityToGrowth(new_capacity)); + } + } + + if (ABSL_PREDICT_FALSE(has_infoz)) { + ReportResizeToInfoz(common, infoz, total_probe_length); + } +} + void ResizeEmptyNonAllocatedTableImpl(CommonFields& common, const PolicyFunctions& __restrict policy, - size_t new_capacity, - size_t blocked_element_count, - bool force_infoz) { + size_t new_capacity, bool force_infoz) { ABSL_SWISSTABLE_ASSERT(IsValidCapacity(new_capacity)); ABSL_SWISSTABLE_ASSERT(new_capacity > policy.soo_capacity()); ABSL_SWISSTABLE_ASSERT(!force_infoz || policy.soo_enabled); - ABSL_SWISSTABLE_ASSERT(common.capacity() == policy.soo_capacity()); + ABSL_SWISSTABLE_ASSERT(common.capacity() <= policy.soo_capacity()); ABSL_SWISSTABLE_ASSERT(common.empty()); const size_t slot_size = policy.slot_size; HashtablezInfoHandle infoz; @@ -894,25 +865,8 @@ infoz = ForcedTrySample(slot_size, policy.key_size, policy.value_size, policy.soo_capacity()); } - const bool has_infoz = infoz.IsSampled(); - void* alloc = policy.get_char_alloc(common); - - common.set_capacity(new_capacity); - const auto [new_ctrl, new_slots] = AllocBackingArray( - common, policy, new_capacity, has_infoz, alloc, blocked_element_count); - common.set_control(new_ctrl); - common.set_slots(new_slots); - common.generate_new_seed(has_infoz); - - ResetCtrl(common, slot_size, blocked_element_count); - if (HasGrowthInfoForCapacity(new_capacity)) { - GetGrowthInfoFromControl(new_ctrl).InitGrowthLeftNoDeleted( - CapacityToGrowth(new_capacity) - blocked_element_count); - } - - if (ABSL_PREDICT_FALSE(has_infoz)) { - ReportResizeToInfoz(common, infoz, 0); - } + ResizeNonSooImpl<ResizeNonSooMode::kGuaranteedEmpty>(common, policy, + new_capacity, infoz); } // If the table was SOO, initializes new control bytes and transfers slot. @@ -938,7 +892,7 @@ policy.transfer_n(&c, target_slot, c.soo_data(), 1); c.set_control(new_ctrl); c.set_slots(new_slots); - ResetCtrl(c, policy.slot_size, /*blocked_element_count=*/0); + ResetCtrl(c, policy.slot_size); SetCtrl(c, offset, H2(soo_slot_hash), policy.slot_size); } @@ -985,8 +939,7 @@ // We do not set control and slots in CommonFields yet to avoid overriding // SOO data. const auto [new_ctrl, new_slots] = - AllocBackingArray(common, policy, new_capacity, has_infoz, alloc, - /*blocked_element_count=*/0); + AllocBackingArray(common, policy, new_capacity, has_infoz, alloc); InsertOldSooSlotAndInitializeControlBytes(common, policy, new_ctrl, new_slots, has_infoz); @@ -1000,7 +953,6 @@ void GrowIntoSingleGroupShuffleControlBytes(ctrl_t* __restrict old_ctrl, size_t old_capacity, - size_t old_blocked_element_count, ctrl_t* __restrict new_ctrl, size_t new_capacity) { ABSL_SWISSTABLE_ASSERT(is_single_group(new_capacity)); @@ -1020,9 +972,6 @@ // Example: // old_ctrl = 012S012EEEEEEEEE... // copied_bytes = S012EEEE - // Example with blocked elements: - // old_ctrl = 01SS01SEEEEEEEEE... - // copied_bytes = S01SEEEE uint64_t copied_bytes = absl::little_endian::Load64(old_ctrl + old_capacity); // We change the sentinel byte to kEmpty before storing to both the start of @@ -1042,22 +991,6 @@ // after = E012EEEE copied_bytes ^= kEmptyXorSentinel; - if (ABSL_PREDICT_FALSE(old_blocked_element_count > 0)) { - // Replacing blocked sentinel elements with kEmpty. - static constexpr uint64_t kAllBytesEmptyXorSentinel = - kEmptyXorSentinel * uint64_t{0x0101010101010101}; - uint64_t blocked_mask = kAllBytesEmptyXorSentinel; - // Keep old_blocked_element_count bytes in the mask. - blocked_mask >>= 64 - old_blocked_element_count * 8; - // Shift the mask to the start of the blocked elements bytes. - blocked_mask <<= (old_capacity - old_blocked_element_count + 1) * 8; - // Example with blocked elements: - // old_ctrl = 0SSS0SSEEEEEEEEE... - // before = E0SSEEEE - // after = E0EEEEEE - copied_bytes ^= blocked_mask; - } - if (Group::kWidth == 8) { // With group size 8, we can grow with two write operations. ABSL_SWISSTABLE_ASSERT(old_capacity < 8 && @@ -1485,8 +1418,6 @@ ABSL_SWISSTABLE_ASSERT(common.capacity() == 1); ABSL_SWISSTABLE_ASSERT(!common.empty()); ABSL_SWISSTABLE_ASSERT(!policy.soo_enabled); - // 1-element tables can't have any blocked elements. - ABSL_SWISSTABLE_ASSERT(common.blocked_element_count() == 0); constexpr size_t kOldCapacity = 1; constexpr size_t kNewCapacity = NextCapacity(kOldCapacity); ctrl_t* old_ctrl = common.control(); @@ -1500,8 +1431,7 @@ common.set_capacity(kNewCapacity); const auto [new_ctrl, new_slots] = - AllocBackingArray(common, policy, kNewCapacity, has_infoz, alloc, - /*blocked_element_count=*/0); + AllocBackingArray(common, policy, kNewCapacity, has_infoz, alloc); common.set_control(new_ctrl); common.set_slots(new_slots); SanitizerPoisonMemoryRegion(new_slots, kNewCapacity * slot_size); @@ -1525,8 +1455,7 @@ SanitizerUnpoisonMemoryRegion(new_element_target_slot, slot_size); policy.dealloc(alloc, kOldCapacity, old_ctrl, slot_size, slot_align, - has_infoz, - /*blocked_element_count=*/0); + has_infoz); PrepareInsertCommon(common); ABSL_SWISSTABLE_ASSERT(common.size() == 2); GetGrowthInfoFromControl(new_ctrl).InitGrowthLeftNoDeleted(kNewCapacity - 2); @@ -1550,7 +1479,6 @@ const size_t new_capacity = NextCapacity(old_capacity); ctrl_t* old_ctrl = common.control(); void* old_slots = common.slot_array(); - size_t old_blocked_element_count = common.blocked_element_count(); common.set_capacity(new_capacity); const size_t slot_size = policy.slot_size; @@ -1560,8 +1488,7 @@ const bool has_infoz = infoz.IsSampled(); const auto [new_ctrl, new_slots] = - AllocBackingArray(common, policy, new_capacity, has_infoz, alloc, - /*blocked_element_count=*/0); + AllocBackingArray(common, policy, new_capacity, has_infoz, alloc); common.set_control(new_ctrl); common.set_slots(new_slots); SanitizerPoisonMemoryRegion(new_slots, new_capacity * slot_size); @@ -1571,9 +1498,7 @@ FindInfo find_info; if (ABSL_PREDICT_TRUE(is_single_group(new_capacity))) { size_t offset; - const size_t old_size = common.size(); - GrowIntoSingleGroupShuffleControlBytes(old_ctrl, old_capacity, - old_blocked_element_count, new_ctrl, + GrowIntoSingleGroupShuffleControlBytes(old_ctrl, old_capacity, new_ctrl, new_capacity); // We put the new element either at the beginning or at the end of the // table with approximately equal probability. @@ -1585,11 +1510,10 @@ find_info = FindInfo{offset, 0}; // Single group tables have all slots full on resize. So we can transfer // all slots without checking the control bytes. - ABSL_SWISSTABLE_ASSERT(common.size() + old_blocked_element_count == - old_capacity); + ABSL_SWISSTABLE_ASSERT(common.size() == old_capacity); void* target = NextSlot(new_slots, slot_size); - SanitizerUnpoisonMemoryRegion(target, old_size * slot_size); - policy.transfer_n(&common, target, old_slots, old_size); + SanitizerUnpoisonMemoryRegion(target, old_capacity * slot_size); + policy.transfer_n(&common, target, old_slots, old_capacity); } else { total_probe_length = GrowToNextCapacityDispatch(common, policy, old_ctrl, old_slots); @@ -1598,7 +1522,7 @@ } ABSL_SWISSTABLE_ASSERT(old_capacity > policy.soo_capacity()); (*policy.dealloc)(alloc, old_capacity, old_ctrl, slot_size, slot_align, - has_infoz, old_blocked_element_count); + has_infoz); PrepareInsertCommon(common); ResetGrowthLeft(GetGrowthInfoFromControl(new_ctrl), new_capacity, common.size()); @@ -1646,8 +1570,7 @@ void* alloc = policy.get_char_alloc(common); const auto [new_ctrl, new_slots] = - AllocBackingArray(common, policy, kNewCapacity, has_infoz, alloc, - /*blocked_element_count=*/0); + AllocBackingArray(common, policy, kNewCapacity, has_infoz, alloc); common.set_control(new_ctrl); common.set_slots(new_slots); @@ -1725,7 +1648,6 @@ // Slow path for PrepareInsertLarge that is called when the table has deleted // slots or need to be resized or rehashed. -ABSL_ATTRIBUTE_NOINLINE size_t PrepareInsertLargeSlow(CommonFields& common, const PolicyFunctions& __restrict policy, size_t hash) { @@ -1761,7 +1683,6 @@ CommonFields& common, const PolicyFunctions& __restrict policy, absl::FunctionRef<size_t(size_t)> get_hash) { ResizeEmptyNonAllocatedTableImpl(common, policy, NextCapacity(SooCapacity()), - /*blocked_element_count=*/0, /*force_infoz=*/true); PrepareInsertCommon(common); common.growth_info().OverwriteEmptyAsFull(); @@ -1772,16 +1693,6 @@ return SooSlotIndex(); } -// Returns the number of elements to block for the given capacity and reserved -// size. -size_t BlockedElementCount(size_t capacity, size_t reserved_size) { - if (!IsCapacityValidForBlockedElements(capacity)) { - return 0; - } - ABSL_SWISSTABLE_ASSERT(is_single_group(capacity)); - return CapacityToGrowth(capacity) - reserved_size; -} - // Resizes empty non-allocated table to the capacity to fit new_size elements. // Requires: // 1. `c.capacity() == policy.soo_capacity()`. @@ -1793,9 +1704,7 @@ size_t new_size) { ValidateMaxSize(new_size, policy.key_size, policy.slot_size); ABSL_ASSUME(new_size > 0); - const size_t new_capacity = SizeToCapacity(new_size); - ResizeEmptyNonAllocatedTableImpl(common, policy, new_capacity, - BlockedElementCount(new_capacity, new_size), + ResizeEmptyNonAllocatedTableImpl(common, policy, SizeToCapacity(new_size), /*force_infoz=*/false); // This is after resize, to ensure that we have completed the allocation // and have potentially sampled the hashtable. @@ -1851,43 +1760,8 @@ void ResizeAllocatedTableWithSeedChange( CommonFields& common, const PolicyFunctions& __restrict policy, size_t new_capacity) { - ABSL_SWISSTABLE_ASSERT(IsValidCapacity(new_capacity)); - ABSL_SWISSTABLE_ASSERT(new_capacity > policy.soo_capacity()); - - const size_t old_capacity = common.capacity(); - ctrl_t* const old_ctrl = common.control(); - void* const old_slots = common.slot_array(); - const size_t old_blocked_element_count = common.blocked_element_count(); - - const size_t slot_size = policy.slot_size; - const size_t slot_align = policy.slot_align; - HashtablezInfoHandle infoz = common.infoz(); - const bool has_infoz = infoz.IsSampled(); - void* alloc = policy.get_char_alloc(common); - - common.set_capacity(new_capacity); - const auto [new_ctrl, new_slots] = - AllocBackingArray(common, policy, new_capacity, has_infoz, alloc, - /*blocked_element_count=*/0); - common.set_control(new_ctrl); - common.set_slots(new_slots); - common.generate_new_seed(has_infoz); - - size_t total_probe_length = 0; - ResetCtrl(common, slot_size, /*blocked_element_count=*/0); - ABSL_SWISSTABLE_ASSERT(old_capacity > 0); - total_probe_length = FindNewPositionsAndTransferSlots( - common, policy, old_ctrl, old_slots, old_capacity); - (*policy.dealloc)(alloc, old_capacity, old_ctrl, slot_size, slot_align, - has_infoz, old_blocked_element_count); - if (HasGrowthInfoForCapacity(new_capacity)) { - ResetGrowthLeft(GetGrowthInfoFromControl(new_ctrl), new_capacity, - common.size()); - } - - if (ABSL_PREDICT_FALSE(has_infoz)) { - ReportResizeToInfoz(common, infoz, total_probe_length); - } + ResizeNonSooImpl<ResizeNonSooMode::kGuaranteedAllocated>( + common, policy, new_capacity, common.infoz()); } void ReserveEmptyNonAllocatedTableToFitBucketCount( @@ -1896,7 +1770,6 @@ size_t new_capacity = NormalizeCapacity(bucket_count); ValidateMaxCapacity(new_capacity, policy.key_size, policy.slot_size); ResizeEmptyNonAllocatedTableImpl(common, policy, new_capacity, - /*blocked_element_count=*/0, /*force_infoz=*/false); } @@ -1923,8 +1796,7 @@ // We do not set control and slots in CommonFields yet to avoid overriding // SOO data. const auto [new_ctrl, new_slots] = AllocBackingArray( - common, policy, kNewCapacity, /*has_infoz=*/false, alloc, - /*blocked_element_count=*/0); + common, policy, kNewCapacity, /*has_infoz=*/false, alloc); PrepareInsertCommon(common); ABSL_SWISSTABLE_ASSERT(common.size() == 2); @@ -2022,7 +1894,6 @@ if (cap == policy.soo_capacity()) { if (common.empty()) { ResizeEmptyNonAllocatedTableImpl(common, policy, new_capacity, - /*blocked_element_count=*/0, /*force_infoz=*/false); } else { ResizeFullSooTable(common, policy, new_capacity, @@ -2232,7 +2103,7 @@ template void DeallocateBackingArray<BackingArrayAlignment(alignof(size_t)), std::allocator<char>>( void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, - size_t slot_align, bool had_infoz, size_t blocked_element_count); + size_t slot_align, bool had_infoz); } // namespace container_internal ABSL_NAMESPACE_END
diff --git a/absl/container/internal/raw_hash_set.h b/absl/container/internal/raw_hash_set.h index affe395..a50a488 100644 --- a/absl/container/internal/raw_hash_set.h +++ b/absl/container/internal/raw_hash_set.h
@@ -13,7 +13,6 @@ // limitations under the License. // // An open-addressing -// [https://en.wikipedia.org/wiki/Open_addressing] // hashtable with quadratic probing. // // This is a low level hashtable on top of which different interfaces can be @@ -365,10 +364,6 @@ constexpr size_t SooCapacity() { return 1; } // Maximum capacity of a table where we don't need to hash any keys. constexpr size_t MaxSmallCapacity() { return 1; } -// Maximum capacity of a table where we can use blocked elements. -constexpr size_t MaxCapacityWithBlockedElements() { - return Group::kWidth - 1; -} // Sentinel type to indicate SOO CommonFields construction. struct soo_tag_t {}; // Sentinel type to indicate SOO CommonFields construction with full size. @@ -390,18 +385,6 @@ return capacity <= MaxSmallCapacity(); } -// Whether a table fits entirely into a probing group. -// Arbitrary order of elements in such tables is correct. -constexpr bool is_single_group(size_t capacity) { - return capacity <= Group::kWidth; -} - -// Whether `cap` is a valid capacity for a table that can store blocked -// elements. -constexpr bool IsCapacityValidForBlockedElements(size_t cap) { - return !IsSmallCapacity(cap) && cap <= MaxCapacityWithBlockedElements(); -} - // Converts `n` into the next valid capacity, per `IsValidCapacity`. constexpr size_t NormalizeCapacity(size_t n) { return n ? ~size_t{} >> countl_zero(n) : 1; @@ -1032,15 +1015,13 @@ class RawHashSetLayout { public: explicit RawHashSetLayout(size_t capacity, size_t slot_size, - size_t slot_align, bool has_infoz, - size_t blocked_element_count) + size_t slot_align, bool has_infoz) : control_offset_( ControlOffset(has_infoz, HasGrowthInfoForCapacity(capacity))), generation_offset_(control_offset_ + NumControlBytes(capacity)), slot_offset_( AlignUpTo(generation_offset_ + NumGenerationBytes(), slot_align)), - alloc_size_(slot_offset_ + - (capacity - blocked_element_count) * slot_size) { + alloc_size_(slot_offset_ + capacity * slot_size) { ABSL_SWISSTABLE_ASSERT(IsValidCapacity(capacity)); ABSL_SWISSTABLE_ASSERT( slot_size <= @@ -1316,26 +1297,9 @@ CommonFieldsGenerationInfo::reset_reserved_growth(reservation, size()); } - // Returns the number of blocked elements in the table. - // Blocked elements are located at the end of the table and do not have - // corresponding slots. - // Control bytes are set to kSentinel for blocked elements. - size_t blocked_element_count() const { - size_t cap = capacity(); - if (!IsCapacityValidForBlockedElements(cap)) { - return 0; - } - ABSL_SWISSTABLE_ASSERT(is_single_group(cap)); - // Formula is valid because MaxCapacityWithBlockedElements is less than - // group width. On erase for single group tables, we always increment the - // growth left. - return CapacityToGrowth(cap) - size() - growth_left(); - } - // The size of the backing array allocation. size_t alloc_size(size_t slot_size, size_t slot_align) const { - return RawHashSetLayout(capacity(), slot_size, slot_align, has_infoz(), - blocked_element_count()) + return RawHashSetLayout(capacity(), slot_size, slot_align, has_infoz()) .alloc_size(); } @@ -1602,6 +1566,12 @@ size_t probe_length; }; +// Whether a table fits entirely into a probing group. +// Arbitrary order of elements in such tables is correct. +constexpr bool is_single_group(size_t capacity) { + return capacity <= Group::kWidth; +} + // The state for a probe sequence. // // Currently, the sequence is a triangular progression of the form @@ -1753,12 +1723,13 @@ return Allocate<AlignOfBackingArray>(static_cast<Alloc*>(alloc), n); } +// Note: we mark this function as ABSL_ATTRIBUTE_NOINLINE because we don't want +// it to be inlined into e.g. the destructor to save code size. template <size_t AlignOfBackingArray, typename Alloc> -void DeallocateBackingArray(void* alloc, size_t capacity, ctrl_t* ctrl, - size_t slot_size, size_t slot_align, bool had_infoz, - size_t blocked_element_count) { - RawHashSetLayout layout(capacity, slot_size, slot_align, had_infoz, - blocked_element_count); +ABSL_ATTRIBUTE_NOINLINE void DeallocateBackingArray( + void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, + size_t slot_align, bool had_infoz) { + RawHashSetLayout layout(capacity, slot_size, slot_align, had_infoz); void* backing_array = ctrl - layout.control_offset(); // Unpoison before returning the memory to the allocator. SanitizerUnpoisonMemoryRegion(backing_array, layout.alloc_size()); @@ -1766,9 +1737,6 @@ layout.alloc_size()); } -using DeallocBackingArrayFn = - decltype(&DeallocateBackingArray<8, std::allocator<char>>); - // PolicyFunctions bundles together some information for a particular // raw_hash_set<T, ...> instantiation. This information is passed to // type-erased functions that want to do small amounts of type-specific @@ -1798,7 +1766,8 @@ void* (*alloc)(void* alloc, size_t n); // Deallocates the backing store from common. - DeallocBackingArrayFn dealloc; + void (*dealloc)(void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, + size_t slot_align, bool had_infoz); // Implementation detail of GrowToNextCapacity. // Iterates over all full slots and transfers unprobed elements. @@ -1973,37 +1942,6 @@ void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy, void* alloc, bool reuse); -using DestroySlotFn = void (*)(void* set, void* slot); - -// Destroys all full slots in the backing array. -// REQUIRES: !is_small(c.capacity()). -// REQUIRES: destroy_slot != nullptr. -void DestroySlots(CommonFields& c, size_t slot_size, - DestroySlotFn destroy_slot); - -// Deallocates the backing array and unregister infoz if necessary. -// REQUIRES: c.capacity > raw_hash_set::DefaultCapacity(). -void DeallocBackingArray(CommonFields& c, size_t slot_size, size_t slot_align, - DeallocBackingArrayFn dealloc, void* alloc); - -// NOTE: Destruct* functions couldn't use PolicyFunctions in order to support -// incomplete types. -// TODO(b/515666499): try to use PolicyFunctions since it makes code simpler and -// binary size smaller. - -// Destructs all elements and deallocates the backing array for SOO tables. -// REQUIRES: !c.is_small || !c.empty() -// REQUIRES: !c.is_small || destroy_slot != nullptr -void DestructSoo(CommonFields& c, size_t slot_size, size_t slot_align, - DestroySlotFn destroy_slot, DeallocBackingArrayFn dealloc, - void* alloc); - -// Destructs all elements and deallocates the backing array for non-SOO tables. -// REQUIRES: c.capacity > 0. -void DestructNonSoo(CommonFields& c, size_t slot_size, size_t slot_align, - DestroySlotFn destroy_slot, DeallocBackingArrayFn dealloc, - void* alloc); - // Type-erased versions of raw_hash_set::erase_meta_only_{small,large}. void EraseMetaOnlySmall(CommonFields& c, bool soo_enabled, size_t slot_size); void EraseMetaOnlyLarge(CommonFields& c, const ctrl_t* ctrl, size_t slot_size); @@ -2673,7 +2611,6 @@ } size_t max_size() const { return MaxValidSize(); } - // TODO(b/515666499): Type erase clear(). ABSL_ATTRIBUTE_REINITIALIZES void clear() { if (SwisstableGenerationsEnabled() && maybe_invalid_capacity().IsMovedFrom()) { @@ -2977,7 +2914,6 @@ erase_meta_only(it); } - // TODO(b/515666499): Type erase entire function or begin/end case. iterator erase(const_iterator first, const_iterator last) ABSL_ATTRIBUTE_LIFETIME_BOUND { AssertNotDebugCapacity(); @@ -3266,19 +3202,19 @@ }; template <typename... Args> - void construct(slot_type* slot, Args&&... args) { + inline void construct(slot_type* slot, Args&&... args) { common().RunWithReentrancyGuard([&] { allocator_type alloc(char_alloc_ref()); PolicyTraits::construct(&alloc, slot, std::forward<Args>(args)...); }); } - void destroy(slot_type* slot) { + inline void destroy(slot_type* slot) { common().RunWithReentrancyGuard([&] { allocator_type alloc(char_alloc_ref()); PolicyTraits::destroy(&alloc, slot); }); } - void transfer(slot_type* to, slot_type* from) { + inline void transfer(slot_type* to, slot_type* from) { common().RunWithReentrancyGuard([&] { allocator_type alloc(char_alloc_ref()); PolicyTraits::transfer(&alloc, to, from); @@ -3344,13 +3280,28 @@ void destroy_slots() { ABSL_SWISSTABLE_ASSERT(!is_small()); if (PolicyTraits::template destroy_is_trivial<Alloc>()) return; - DestroySlots(common(), sizeof(slot_type), get_destroy_slot_fn()); + auto destroy_slot = [&](const ctrl_t*, void* slot) { + this->destroy(static_cast<slot_type*>(slot)); + }; + if constexpr (SwisstableAssertAccessToDestroyedTable()) { + CommonFields common_copy(non_soo_tag_t{}, this->common()); + common().set_capacity(HashtableCapacity::CreateDestroyed()); + IterateOverFullSlots(common_copy, sizeof(slot_type), destroy_slot); + common().set_capacity(common_copy.capacity()); + } else { + IterateOverFullSlots(common(), sizeof(slot_type), destroy_slot); + } } void dealloc() { ABSL_SWISSTABLE_ASSERT(capacity() > DefaultCapacity()); - DeallocBackingArray(common(), sizeof(slot_type), alignof(slot_type), - get_dealloc_backing_array_fn(), &char_alloc_ref()); + // Unpoison before returning the memory to the allocator. + SanitizerUnpoisonMemoryRegion(slot_array(), sizeof(slot_type) * capacity()); + infoz().Unregister(); + DeallocateBackingArray<BackingArrayAlignment(alignof(slot_type)), + CharAlloc>(&char_alloc_ref(), capacity(), control(), + sizeof(slot_type), alignof(slot_type), + common().has_infoz()); } void destructor_impl() { @@ -3358,20 +3309,16 @@ maybe_invalid_capacity().IsMovedFrom()) { return; } - if constexpr (SooEnabled()) { - if (is_small() && - (PolicyTraits::template destroy_is_trivial<Alloc>() || empty())) { - return; + if (capacity() == 0) return; + if (is_small()) { + if (!empty()) { + ABSL_SWISSTABLE_IGNORE_UNINITIALIZED(destroy(single_slot())); } - DestructSoo(common(), sizeof(slot_type), alignof(slot_type), - get_destroy_slot_fn(), get_dealloc_backing_array_fn(), - &char_alloc_ref()); + if constexpr (SooEnabled()) return; } else { - if (capacity() == 0) return; - DestructNonSoo(common(), sizeof(slot_type), alignof(slot_type), - get_destroy_slot_fn(), get_dealloc_backing_array_fn(), - &char_alloc_ref()); + destroy_slots(); } + dealloc(); } // Erases, but does not destroy, the value pointed to by `it`. @@ -3847,16 +3794,6 @@ } } - static void destroy_slot_fn_impl(void* set, void* slot) { - auto* h = static_cast<raw_hash_set*>(set); - h->destroy(to_slot(slot)); - } - static constexpr DestroySlotFn get_destroy_slot_fn() { - return PolicyTraits::template destroy_is_trivial<Alloc>() - ? nullptr - : &raw_hash_set::destroy_slot_fn_impl; - } - // TODO(b/382423690): Try to type erase entire function or at least type erase // by GetKey + Hash for memcpyable types. // TODO(b/382423690): Try to type erase for big slots: sizeof(slot_type) > 16. @@ -3911,11 +3848,6 @@ } } - static constexpr DeallocBackingArrayFn get_dealloc_backing_array_fn() { - return &DeallocateBackingArray<BackingArrayAlignment(alignof(slot_type)), - CharAlloc>; - } - static const PolicyFunctions& GetPolicyFunctions() { static_assert(sizeof(slot_type) <= (std::numeric_limits<uint32_t>::max)(), "Slot size is too large. Use std::unique_ptr for value type " @@ -3945,7 +3877,7 @@ std::is_empty_v<Alloc> ? &GetRefForEmptyClass : &raw_hash_set::get_char_alloc_ref_fn, &AllocateBackingArray<kBackingArrayAlignment, CharAlloc>, - get_dealloc_backing_array_fn(), + &DeallocateBackingArray<kBackingArrayAlignment, CharAlloc>, &raw_hash_set::transfer_unprobed_elements_to_next_capacity_fn}; return value; } @@ -4110,13 +4042,15 @@ extern template void DeallocateBackingArray< BackingArrayAlignment(alignof(size_t)), std::allocator<char>>( void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size, - size_t slot_align, bool had_infoz, size_t blocked_element_count); + size_t slot_align, bool had_infoz); } // namespace container_internal ABSL_NAMESPACE_END } // namespace absl #undef ABSL_SWISSTABLE_ENABLE_GENERATIONS +#undef ABSL_SWISSTABLE_IGNORE_UNINITIALIZED +#undef ABSL_SWISSTABLE_IGNORE_UNINITIALIZED_RETURN #undef ABSL_SWISSTABLE_ASSERT #endif // ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_
diff --git a/absl/container/internal/raw_hash_set_test.cc b/absl/container/internal/raw_hash_set_test.cc index 59492ab..332f99d 100644 --- a/absl/container/internal/raw_hash_set_test.cc +++ b/absl/container/internal/raw_hash_set_test.cc
@@ -1117,116 +1117,6 @@ EXPECT_TRUE(t.empty()); } -TEST(Table, ReservedTableWithTombstonesDestructWell) { - constexpr int64_t kCoef = 17; - for (size_t capacity = Group::kWidth * 2 - 1; capacity < 256; - capacity = NextCapacity(capacity)) { - int64_t reserve_size = - static_cast<int64_t>(CapacityToGrowth(capacity) - capacity / 16); - IntTable t; - t.reserve(static_cast<size_t>(reserve_size)); - for (int64_t i = 0; i < reserve_size; ++i) { - ASSERT_TRUE(t.insert(i * kCoef).second); - } - ASSERT_EQ(t.size(), reserve_size); - ASSERT_EQ(t.capacity(), capacity); - // Erase and insert values until we get a tombstone. - for (int64_t i = reserve_size; i < static_cast<int64_t>(capacity) * 1000; - ++i) { - ASSERT_EQ(t.erase((i - reserve_size) * kCoef), 1); - if (RawHashSetTestOnlyAccess::CountTombstones(t) > 0) { - break; - } - ASSERT_TRUE(t.insert(i * kCoef).second); - } - ASSERT_GT(RawHashSetTestOnlyAccess::CountTombstones(t), 0); - } -} - -struct BadTwoValuesHash { - explicit BadTwoValuesHash(size_t other_value) : other_value(other_value) {} - size_t operator()(int64_t x) const { return x >= 0 ? 0 : other_value; } - size_t other_value; -}; - -struct BadTwoValuesHashTable - : raw_hash_set<IntPolicy, BadTwoValuesHash, std::equal_to<int64_t>, - std::allocator<int>> { - using Base = typename BadTwoValuesHashTable::raw_hash_set; - BadTwoValuesHashTable() = default; - using Base::Base; -}; - -TEST(Table, ReservedTableRehashWithoutGrowthWorksWell) { - if (SwisstableGenerationsEnabled()) { - GTEST_SKIP() << "Generations enabled, so rehash happening earlier."; - } - constexpr int64_t kCoef = 17; - int retries = 0; - for (size_t capacity = 31; capacity < 256; - capacity = NextCapacity(capacity)) { - SCOPED_TRACE(absl::StrCat("capacity: ", capacity)); - // Number of elements we keep empty in order to force a rehash without - // growth. RehashOrGrowToNextCapacityAndPrepareInsert grow if number of full - // slots is greater than 25/32 of capacity, so we leave 7/32 + 5 empty to - // have extra margin. - size_t empty_till_full = (capacity + 1) / 32 * 7 + 5; - int64_t reserve_size = - static_cast<int64_t>(CapacityToGrowth(capacity) - empty_till_full); - - BadTwoValuesHashTable t( - 0, - // Negative number goes to the end of the table. - // Positive numbers hash is 0, so the first Group::kWidth * 2 elements - // will be placed at the beginning of the table. - BadTwoValuesHash(static_cast<size_t>(reserve_size))); - // Remove seed to make table layout deterministic. - RawHashSetTestOnlyAccess::GetCommon(t).set_no_seed_for_testing(); - - t.reserve(static_cast<size_t>(reserve_size)); - for (int64_t i = 1; i <= reserve_size; ++i) { - ASSERT_TRUE(t.insert(i * kCoef).second); - } - ASSERT_EQ(t.size(), reserve_size); - ASSERT_EQ(t.capacity(), capacity); - bool rehashed = false; - int64_t last_erased = 0; - // We erase and insert until we get a lot of tombstones to force a rehash - // without growth. It happens relatively quickly because of the - // intentionally bad hash function that place numbers to the same slot - // depending on the sign. - for (int64_t i = 1; i <= reserve_size; ++i) { - SCOPED_TRACE(absl::StrCat("i: ", i)); - ASSERT_EQ(t.erase(i * kCoef), 1); - size_t tombstones_before = RawHashSetTestOnlyAccess::CountTombstones(t); - ASSERT_TRUE(t.insert(-i * kCoef).second); - size_t tombstones_after = RawHashSetTestOnlyAccess::CountTombstones(t); - if (tombstones_before > 1 && tombstones_after == 0) { - ASSERT_EQ(t.capacity(), capacity) << "capacity must be preserved"; - rehashed = true; - last_erased = i; - break; - } - } - if (!rehashed) { - // In debug mode rehashing may happen earlier with some probability. - // See ShouldRehashForBugDetection for details. - capacity = PreviousCapacity(capacity); - ++retries; - ASSERT_LT(retries, 50) << "Too many retries"; - continue; - } - // Verify that all elements are still in the table after rehash. - for (int64_t i = 1; i <= reserve_size; ++i) { - if (i <= last_erased) { - ASSERT_TRUE(t.contains(-i * kCoef)) << i; - } else { - ASSERT_TRUE(t.contains(i * kCoef)) << i; - } - } - } -} - TYPED_TEST(SooTest, EraseInSmallTables) { for (int64_t size = 0; size < 64; ++size) { TypeParam t; @@ -1303,51 +1193,46 @@ } TYPED_TEST(SooTest, ReserveTwice) { - for (int reserve_size = 0; reserve_size < 32; ++reserve_size) { - for (int reserve_size2 = reserve_size; reserve_size2 < 32; + for (size_t reserve_size = 0; reserve_size < 32; ++reserve_size) { + for (size_t reserve_size2 = reserve_size; reserve_size2 < 32; ++reserve_size2) { SCOPED_TRACE(absl::StrCat("reserve_size: ", reserve_size, ", reserve_size2: ", reserve_size2)); TypeParam t; - t.reserve(static_cast<size_t>(reserve_size)); + t.reserve(reserve_size); { // Insert first batch of elements. size_t cap = t.capacity(); - for (int i = 1; i <= reserve_size; ++i) { - ASSERT_TRUE(t.insert(i).second) << i; + for (size_t i = 0; i < reserve_size; ++i) { + ASSERT_TRUE(t.insert(static_cast<int>(i)).second) << i; } ASSERT_EQ(t.capacity(), cap); } - t.reserve(static_cast<size_t>(reserve_size2)); + t.reserve(reserve_size2); { // Insert second batch of elements. size_t cap = t.capacity(); - for (int i = reserve_size + 1; i <= reserve_size2; ++i) { - ASSERT_TRUE(t.insert(i).second) << i; + for (size_t i = reserve_size; i < reserve_size2; ++i) { + ASSERT_TRUE(t.insert(static_cast<int>(i)).second) << i; } ASSERT_EQ(t.capacity(), cap); } - for (int i = 1; i <= reserve_size2; ++i) { - ASSERT_TRUE(t.contains(i)) << i; - // Testing missing value to verify that we correctly have empty slots. - ASSERT_FALSE(t.contains(-i)) << i; + for (size_t i = 0; i < reserve_size2; ++i) { + ASSERT_TRUE(t.contains(static_cast<int>(i))) << i; } } } } TYPED_TEST(SooTest, GrowAfterReserve) { - for (int reserve_size = 1; reserve_size <= 150; ++reserve_size) { + for (size_t reserve_size = 1; reserve_size <= 150; ++reserve_size) { + size_t size = reserve_size + 1; TypeParam s; - s.reserve(static_cast<size_t>(reserve_size)); - int size = reserve_size + 1; - for (int i = 1; i <= size; ++i) { - ASSERT_TRUE(s.insert(i).second) << i; - // Testing missing value to verify that we correctly have empty slots. - ASSERT_FALSE(s.contains(-i)) << i; + s.reserve(reserve_size); + for (size_t i = 0; i < size; ++i) { + ASSERT_TRUE(s.insert(static_cast<int>(i)).second) << i; } EXPECT_EQ(s.size(), size); - for (int i = 1; i <= size; ++i) { - ASSERT_TRUE(s.contains(i)) << i; - ASSERT_FALSE(s.contains(-i)) << i; + for (size_t i = 0; i < size; ++i) { + ASSERT_TRUE(s.contains(static_cast<int>(i))) << i; } } } @@ -1428,23 +1313,23 @@ } TYPED_TEST(SmallTableResizeTest, ResizeGrowSmallTables) { - for (int source_size = 0; source_size < 32; ++source_size) { - for (int target_size = source_size; target_size < 32; ++target_size) { + for (size_t source_size = 0; source_size < 32; ++source_size) { + for (size_t target_size = source_size; target_size < 32; ++target_size) { for (bool rehash : {false, true}) { SCOPED_TRACE(absl::StrCat("source_size: ", source_size, ", target_size: ", target_size, ", rehash: ", rehash)); TypeParam t; - for (int i = 0; i < source_size; ++i) { - t.insert(i); + for (size_t i = 0; i < source_size; ++i) { + t.insert(static_cast<int>(i)); } if (rehash) { - t.rehash(static_cast<size_t>(target_size)); + t.rehash(target_size); } else { - t.reserve(static_cast<size_t>(target_size)); + t.reserve(target_size); } - for (int i = 0; i < source_size; ++i) { - ASSERT_TRUE(t.contains(i)); + for (size_t i = 0; i < source_size; ++i) { + ASSERT_TRUE(t.find(static_cast<int>(i)) != t.end()); EXPECT_EQ(*t.find(static_cast<int>(i)), static_cast<int>(i)); } }
diff --git a/absl/crc/BUILD.bazel b/absl/crc/BUILD.bazel index 88b9ea2..49e916c 100644 --- a/absl/crc/BUILD.bazel +++ b/absl/crc/BUILD.bazel
@@ -34,6 +34,21 @@ licenses(["notice"]) cc_library( + name = "cpu_detect", + srcs = [ + "internal/cpu_detect.cc", + ], + hdrs = ["internal/cpu_detect.h"], + copts = ABSL_DEFAULT_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + visibility = ["//visibility:private"], + deps = [ + "//absl/base", + "//absl/base:config", + ], +) + +cc_library( name = "crc_internal", srcs = [ "internal/crc.cc", @@ -48,9 +63,9 @@ linkopts = ABSL_DEFAULT_LINKOPTS, visibility = ["//visibility:private"], deps = [ + ":cpu_detect", "//absl/base:config", "//absl/base:core_headers", - "//absl/base:cpu_detect", "//absl/base:endian", "//absl/base:prefetch", "//absl/base:raw_logging_internal", @@ -77,11 +92,11 @@ linkopts = ABSL_DEFAULT_LINKOPTS, visibility = ["//visibility:public"], deps = [ + ":cpu_detect", ":crc_internal", ":non_temporal_memcpy", "//absl/base:config", "//absl/base:core_headers", - "//absl/base:cpu_detect", "//absl/base:endian", "//absl/base:prefetch", "//absl/strings",
diff --git a/absl/crc/BUILD.gn b/absl/crc/BUILD.gn index 98ae3af..ac64d92 100644 --- a/absl/crc/BUILD.gn +++ b/absl/crc/BUILD.gn
@@ -4,6 +4,16 @@ import("//third_party/abseil-cpp/absl.gni") +absl_source_set("cpu_detect") { + public = [ "internal/cpu_detect.h" ] + sources = [ "internal/cpu_detect.cc" ] + deps = [ + "//third_party/abseil-cpp/absl/base", + "//third_party/abseil-cpp/absl/base:config", + ] + visibility = [ ":*" ] +} + absl_source_set("crc_internal") { public = [ "internal/crc.h", @@ -15,9 +25,9 @@ "internal/crc_x86_arm_combined.cc", ] deps = [ + ":cpu_detect", "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:core_headers", - "//third_party/abseil-cpp/absl/base:cpu_detect", "//third_party/abseil-cpp/absl/base:endian", "//third_party/abseil-cpp/absl/base:prefetch", "//third_party/abseil-cpp/absl/base:raw_logging_internal", @@ -41,11 +51,11 @@ "internal/crc_non_temporal_memcpy.cc", ] deps = [ + ":cpu_detect", ":crc_internal", ":non_temporal_memcpy", "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:core_headers", - "//third_party/abseil-cpp/absl/base:cpu_detect", "//third_party/abseil-cpp/absl/base:endian", "//third_party/abseil-cpp/absl/base:prefetch", "//third_party/abseil-cpp/absl/strings:str_format",
diff --git a/absl/crc/CMakeLists.txt b/absl/crc/CMakeLists.txt index 28f0bab..034d0d0 100644 --- a/absl/crc/CMakeLists.txt +++ b/absl/crc/CMakeLists.txt
@@ -15,6 +15,21 @@ # Internal-only target, do not depend on directly. absl_cc_library( NAME + crc_cpu_detect + HDRS + "internal/cpu_detect.h" + SRCS + "internal/cpu_detect.cc" + COPTS + ${ABSL_DEFAULT_COPTS} + DEPS + absl::base + absl::config +) + +# Internal-only target, do not depend on directly. +absl_cc_library( + NAME crc_internal HDRS "internal/crc.h" @@ -26,7 +41,7 @@ COPTS ${ABSL_DEFAULT_COPTS} DEPS - absl::base_cpu_detect + absl::crc_cpu_detect absl::bits absl::config absl::core_headers @@ -52,7 +67,7 @@ COPTS ${ABSL_DEFAULT_COPTS} DEPS - absl::base_cpu_detect + absl::crc_cpu_detect absl::crc_internal absl::non_temporal_memcpy absl::config
diff --git a/absl/base/internal/cpu_detect.cc b/absl/crc/internal/cpu_detect.cc similarity index 82% rename from absl/base/internal/cpu_detect.cc rename to absl/crc/internal/cpu_detect.cc index c08637c..86f55d0 100644 --- a/absl/base/internal/cpu_detect.cc +++ b/absl/crc/internal/cpu_detect.cc
@@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "absl/base/internal/cpu_detect.h" +#include "absl/crc/internal/cpu_detect.h" #include <cstdint> #include <optional> // IWYU pragma: keep @@ -42,7 +42,6 @@ // MSVC-equivalent __cpuid intrinsic declaration for clang-like compilers // for non-Windows build environments. extern void __cpuid(int[4], int); -extern void __cpuidex(int[4], int, int); #elif !defined(_WIN32) && !defined(_WIN64) // MSVC defines this function for us. // https://learn.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex @@ -52,18 +51,12 @@ "=d"(cpu_info[3]) : "a"(info_type), "c"(0)); } -static void __cpuidex(int cpu_info[4], int info_type, int ecx) { - __asm__ volatile("cpuid \n\t" - : "=a"(cpu_info[0]), "=b"(cpu_info[1]), "=c"(cpu_info[2]), - "=d"(cpu_info[3]) - : "a"(info_type), "c"(ecx)); -} #endif // !defined(_WIN32) && !defined(_WIN64) #endif // defined(__x86_64__) || defined(_M_X64) namespace absl { ABSL_NAMESPACE_BEGIN -namespace base_internal { +namespace crc_internal { #if defined(__x86_64__) || defined(_M_X64) @@ -144,7 +137,7 @@ case 0x4f: // Broadwell case 0x56: // BroadwellDE return CpuType::kIntelBroadwell; - case 0x55: // Skylake Xeon + case 0x55: // Skylake Xeon if ((cpu_info[0] & 0x0f) < 5) { // stepping < 5 is skylake return CpuType::kIntelSkylakeXeon; } else { // stepping >= 5 is cascadelake @@ -159,7 +152,7 @@ case 0xcf: // Emerald Rapids return CpuType::kIntelEmeraldrapids; case 0xad: // Granite Rapids - return CpuType::kIntelGraniterapids; + return CpuType::kIntelGraniterapidsap; default: return CpuType::kUnknown; } @@ -278,30 +271,18 @@ switch (implementer) { case 0x41: switch (part_number) { - case 0xd0c: - return CpuType::kArmNeoverseN1; - case 0xd40: - return CpuType::kArmNeoverseV1; - case 0xd49: - return CpuType::kArmNeoverseN2; - case 0xd4f: { - uint64_t isar0 = 0; - ABSL_INTERNAL_AARCH64_ID_REG_READ(ID_AA64ISAR0_EL1, isar0); - if (((isar0 >> 60) & 0xf) == 0x0) { - return CpuType::kNvidiaGrace; - } - return CpuType::kArmNeoverseV2; - } - case 0xd8e: - return CpuType::kArmNeoverseN3; + case 0xd0c: return CpuType::kArmNeoverseN1; + case 0xd40: return CpuType::kArmNeoverseV1; + case 0xd49: return CpuType::kArmNeoverseN2; + case 0xd4f: return CpuType::kArmNeoverseV2; + case 0xd8e: return CpuType::kArmNeoverseN3; default: return CpuType::kUnknown; } break; case 0xc0: switch (part_number) { - case 0xac3: - return CpuType::kAmpereSiryn; + case 0xac3: return CpuType::kAmpereSiryn; default: return CpuType::kUnknown; } @@ -373,47 +354,6 @@ #endif -// Returns how many hardware contexts per CPU exist. Note: AMD CPUs prior to Zen -// 2 (Rome, 2019) do not support CPUID leaf 0xb. We intentionally avoid falling -// back to leaf 1 ebx[23:16] because it reports total logical processors per -// package (not threads per core), which risks false positives on older -// multi-core non-SMT chips. Pre-Zen 2 AMD safely defaults to 1. -int NumContextsPerCPU() { -#if defined(__x86_64__) || defined(_M_X64) - int info[4]; - __cpuid(info, 0); - if (info[0] < 0xb) { - return 1; - } - - __cpuid(info, 1); - bool has_ht = (info[3] & (1 << 28)) != 0; - if (!has_ht) { - return 1; - } - - for (int sub_leaf = 0; sub_leaf < 4; ++sub_leaf) { - __cpuidex(info, 0xb, sub_leaf); - int level_type = (info[2] >> 8) & 0xff; - if (level_type == 0) { - break; - } - if (level_type == 1) { - int num_threads = info[1] & 0x0ffff; - if (num_threads >= 1) { - return num_threads; - } - } - } - - return 1; -#else - return 1; -#endif -} - -bool IsSMTEnabled() { return NumContextsPerCPU() > 1; } - -} // namespace base_internal +} // namespace crc_internal ABSL_NAMESPACE_END } // namespace absl
diff --git a/absl/base/internal/cpu_detect.h b/absl/crc/internal/cpu_detect.h similarity index 80% rename from absl/base/internal/cpu_detect.h rename to absl/crc/internal/cpu_detect.h index 5ea76ec..e76a802 100644 --- a/absl/base/internal/cpu_detect.h +++ b/absl/crc/internal/cpu_detect.h
@@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef ABSL_BASE_INTERNAL_CPU_DETECT_H_ -#define ABSL_BASE_INTERNAL_CPU_DETECT_H_ +#ifndef ABSL_CRC_INTERNAL_CPU_DETECT_H_ +#define ABSL_CRC_INTERNAL_CPU_DETECT_H_ #include "absl/base/config.h" namespace absl { ABSL_NAMESPACE_BEGIN -namespace base_internal { +namespace crc_internal { // Enumeration of architectures that we have special-case tuning parameters for. // This set may change over time. @@ -38,7 +38,7 @@ kIntelIcelake, kIntelSapphirerapids, kIntelEmeraldrapids, - kIntelGraniterapids, + kIntelGraniterapidsap, kIntelSkylake, kIntelIvybridge, kIntelSandybridge, @@ -49,7 +49,6 @@ kArmNeoverseN2, kArmNeoverseV2, kArmNeoverseN3, - kNvidiaGrace, }; // Returns the type of host CPU this code is running on. Returns kUnknown if @@ -63,15 +62,8 @@ // tuning. bool SupportsArmCRC32PMULL(); -// Returns whether the host CPU supports simultaneous multithreading (SMT) and -// if it is enabled. -bool IsSMTEnabled(); - -// Returns how many hardware contexts per CPU exist. -int NumContextsPerCPU(); - -} // namespace base_internal +} // namespace crc_internal ABSL_NAMESPACE_END } // namespace absl -#endif // ABSL_BASE_INTERNAL_CPU_DETECT_H_ +#endif // ABSL_CRC_INTERNAL_CPU_DETECT_H_
diff --git a/absl/crc/internal/crc_memcpy_x86_arm_combined.cc b/absl/crc/internal/crc_memcpy_x86_arm_combined.cc index fd3ce60..247b3aa 100644 --- a/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +++ b/absl/crc/internal/crc_memcpy_x86_arm_combined.cc
@@ -54,10 +54,10 @@ #include "absl/base/attributes.h" #include "absl/base/config.h" -#include "absl/base/internal/cpu_detect.h" #include "absl/base/optimization.h" #include "absl/base/prefetch.h" #include "absl/crc/crc32c.h" +#include "absl/crc/internal/cpu_detect.h" #include "absl/crc/internal/crc32_x86_arm_combined_simd.h" #include "absl/crc/internal/crc_memcpy.h" #include "absl/strings/string_view.h" @@ -69,9 +69,6 @@ ABSL_NAMESPACE_BEGIN namespace crc_internal { -using ::absl::base_internal::CpuType; -using ::absl::base_internal::GetCpuType; - namespace { inline crc32c_t ShortCrcCopy(char* dst, const char* src, std::size_t length, @@ -430,7 +427,6 @@ case CpuType::kArmNeoverseN2: case CpuType::kArmNeoverseV1: case CpuType::kArmNeoverseV2: - case CpuType::kNvidiaGrace: return { /*.temporal=*/new AcceleratedCrcMemcpyEngine<3, 0>(), /*.non_temporal=*/new CrcNonTemporalMemcpyEngine(),
diff --git a/absl/crc/internal/crc_x86_arm_combined.cc b/absl/crc/internal/crc_x86_arm_combined.cc index e44a009..8140378 100644 --- a/absl/crc/internal/crc_x86_arm_combined.cc +++ b/absl/crc/internal/crc_x86_arm_combined.cc
@@ -21,9 +21,9 @@ #include "absl/base/attributes.h" #include "absl/base/config.h" -#include "absl/base/internal/cpu_detect.h" #include "absl/base/internal/endian.h" #include "absl/base/prefetch.h" +#include "absl/crc/internal/cpu_detect.h" #include "absl/crc/internal/crc32_x86_arm_combined_simd.h" #include "absl/crc/internal/crc_internal.h" #include "absl/memory/memory.h" @@ -38,10 +38,6 @@ ABSL_NAMESPACE_BEGIN namespace crc_internal { -using ::absl::base_internal::CpuType; -using ::absl::base_internal::GetCpuType; -using ::absl::base_internal::SupportsArmCRC32PMULL; - #if defined(ABSL_INTERNAL_CAN_USE_SIMD_CRC32C) // Implementation details not exported outside of file @@ -776,7 +772,7 @@ case CpuType::kIntelIcelake: case CpuType::kIntelSapphirerapids: case CpuType::kIntelEmeraldrapids: - case CpuType::kIntelGraniterapids: + case CpuType::kIntelGraniterapidsap: return new CRC32AcceleratedX86ARMCombinedMultipleStreams< 3, 2, 0, CutoffStrategy::Fold3>(); // PCLMULQDQ is slow, don't use it. @@ -789,7 +785,6 @@ case CpuType::kArmNeoverseN2: case CpuType::kArmNeoverseV1: case CpuType::kArmNeoverseN3: - case CpuType::kNvidiaGrace: return new CRC32AcceleratedX86ARMCombinedMultipleStreams< 1, 1, 0, CutoffStrategy::Unroll64CRC>(); case CpuType::kAmpereSiryn:
diff --git a/absl/log/BUILD.bazel b/absl/log/BUILD.bazel index b1cff4b..e6793b1 100644 --- a/absl/log/BUILD.bazel +++ b/absl/log/BUILD.bazel
@@ -502,7 +502,6 @@ "//absl/log/internal:test_matchers", "//absl/strings", "//absl/strings:str_format", - "//absl/types:source_location", "@googletest//:gtest", "@googletest//:gtest_main", ],
diff --git a/absl/log/BUILD.gn b/absl/log/BUILD.gn index 715f348..baaaafa 100644 --- a/absl/log/BUILD.gn +++ b/absl/log/BUILD.gn
@@ -347,7 +347,6 @@ "//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings:str_format", "//third_party/abseil-cpp/absl/strings:string_view", - "//third_party/abseil-cpp/absl/types:source_location", ] }
diff --git a/absl/log/CMakeLists.txt b/absl/log/CMakeLists.txt index e0a307b..b271d09 100644 --- a/absl/log/CMakeLists.txt +++ b/absl/log/CMakeLists.txt
@@ -1017,7 +1017,6 @@ absl::log absl::log_internal_test_matchers absl::scoped_mock_log - absl::source_location absl::str_format absl::strings GTest::gmock_main
diff --git a/absl/log/check.h b/absl/log/check.h index 10674c9..9e2219b 100644 --- a/absl/log/check.h +++ b/absl/log/check.h
@@ -102,11 +102,11 @@ // Check failed: 2 * x == y (6 vs. 5) oops! // // The values must implement the appropriate comparison operator as well as -// either `operator<<(std::ostream&, ...)` or `AbslStringify`. Care is taken to -// ensure that each argument is evaluated exactly once, and that anything which -// is legal to pass as a function argument is legal here. In particular, the -// arguments may be temporary expressions which will end up being destroyed at -// the end of the statement, +// `operator<<(std::ostream&, ...)`. Care is taken to ensure that each +// argument is evaluated exactly once, and that anything which is legal to pass +// as a function argument is legal here. In particular, the arguments may be +// temporary expressions which will end up being destroyed at the end of the +// statement, // // Example: //
diff --git a/absl/log/internal/BUILD.bazel b/absl/log/internal/BUILD.bazel index bc47330..6995b26 100644 --- a/absl/log/internal/BUILD.bazel +++ b/absl/log/internal/BUILD.bazel
@@ -111,7 +111,10 @@ "//absl:friends", "//absl/log:__pkg__", ], - deps = ["//absl/base:config"], + deps = [ + "//absl/base:config", + "//absl/base:core_headers", + ], ) cc_library(
diff --git a/absl/log/internal/BUILD.gn b/absl/log/internal/BUILD.gn index 2a3add3..9bda100 100644 --- a/absl/log/internal/BUILD.gn +++ b/absl/log/internal/BUILD.gn
@@ -46,6 +46,7 @@ public = [ "config.h" ] deps = [ "//third_party/abseil-cpp/absl/base:config", + "//third_party/abseil-cpp/absl/base:core_headers", ] }
diff --git a/absl/log/internal/log_message.h b/absl/log/internal/log_message.h index b9b533e..7e2a86a 100644 --- a/absl/log/internal/log_message.h +++ b/absl/log/internal/log_message.h
@@ -179,13 +179,6 @@ LogMessage& operator<<(wchar_t* absl_nullable v); LogMessage& operator<<(wchar_t v); - // Overload for absl::SourceLocation or the std::source_location alias. - LogMessage& operator<<(const absl::SourceLocation& loc) { - OstreamView view(*data_); - view.stream() << loc.file_name() << ':' << loc.line(); - return *this; - } - // Handle stream manipulators e.g. std::endl. LogMessage& operator<<(std::ostream& (*absl_nonnull m)(std::ostream& os)); LogMessage& operator<<(std::ios_base& (*absl_nonnull m)(std::ios_base& os));
diff --git a/absl/log/log_format_test.cc b/absl/log/log_format_test.cc index 06ce2f5..b23d90f 100644 --- a/absl/log/log_format_test.cc +++ b/absl/log/log_format_test.cc
@@ -41,7 +41,6 @@ #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" -#include "absl/types/source_location.h" namespace { using ::absl::log_internal::AsString; @@ -292,21 +291,6 @@ LOG(INFO) << value.bits; } -TEST(SourceLocationTest, Format) { - absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected); - EXPECT_CALL(test_sink, Send).Times(0); - - absl::SourceLocation loc = absl::SourceLocation::current(); - std::string expected = absl::StrCat(__FILE__, ":", __LINE__ - 1); - - EXPECT_CALL(test_sink, Send(AllOf(TextMessage(Eq(expected)), - ENCODED_MESSAGE(HasValues(ElementsAre( - ValueWithStr(Eq(expected)))))))); - - test_sink.StartCapturingLogs(); - LOG(INFO) << loc; -} - // Ignore these test cases on GCC due to "is too small to hold all values ..." // warning. #if !defined(__GNUC__) || defined(__clang__)
diff --git a/absl/memory/memory.h b/absl/memory/memory.h index 88320e5..7be4983 100644 --- a/absl/memory/memory.h +++ b/absl/memory/memory.h
@@ -96,11 +96,6 @@ // should use `std::make_unique`. using std::make_unique; -#if defined(__cpp_lib_smart_ptr_for_overwrite) && \ - __cpp_lib_smart_ptr_for_overwrite >= 202002L -using std::make_unique_for_overwrite; -#else - namespace memory_internal { // Traits to select proper overload and return type for @@ -148,8 +143,6 @@ typename memory_internal::MakeUniqueResult<T>::invalid make_unique_for_overwrite(Args&&... /* args */) = delete; -#endif // __cpp_lib_smart_ptr_for_overwrite - // ----------------------------------------------------------------------------- // Function Template: RawPtr() // -----------------------------------------------------------------------------
diff --git a/absl/status/internal/status_internal.h b/absl/status/internal/status_internal.h index 2428069..2f615e7 100644 --- a/absl/status/internal/status_internal.h +++ b/absl/status/internal/status_internal.h
@@ -14,8 +14,6 @@ #ifndef ABSL_STATUS_INTERNAL_STATUS_INTERNAL_H_ #define ABSL_STATUS_INTERNAL_STATUS_INTERNAL_H_ -// IWYU pragma: private, include "absl/status/status.h" - #include <atomic> #include <cstdint> #include <memory>
diff --git a/absl/status/internal/status_matchers.h b/absl/status/internal/status_matchers.h index d4b35cc..2eafd13 100644 --- a/absl/status/internal/status_matchers.h +++ b/absl/status/internal/status_matchers.h
@@ -30,12 +30,20 @@ ABSL_NAMESPACE_BEGIN namespace status_internal { -inline const absl::Status& GetStatus(const absl::Status& status) { +// TODO(b/323927127): Remove ABSL_REFACTOR_INLINE once callers are cleaned up +// and move it into a namespace like adl_barrier without types to avoid +// accidental ADL. +ABSL_REFACTOR_INLINE inline const absl::Status& GetStatus( + const absl::Status& status) { return status; } +// TODO(b/323927127): Remove ABSL_REFACTOR_INLINE once callers are cleaned up +// and move it into a namespace like adl_barrier without types to avoid +// accidental ADL. template <typename T> -const absl::Status& GetStatus(const absl::StatusOr<T>& status) { +ABSL_REFACTOR_INLINE const absl::Status& GetStatus( + const absl::StatusOr<T>& status) { return status.status(); }
diff --git a/absl/strings/BUILD.bazel b/absl/strings/BUILD.bazel index 4c974ce..805cfc2 100644 --- a/absl/strings/BUILD.bazel +++ b/absl/strings/BUILD.bazel
@@ -435,6 +435,7 @@ visibility = [ "//absl:friends", "//absl/status:__pkg__", + "//visibility:private", ], deps = [ ":string_view",
diff --git a/absl/strings/ascii.cc b/absl/strings/ascii.cc index b5c7e19..4cd9ff9 100644 --- a/absl/strings/ascii.cc +++ b/absl/strings/ascii.cc
@@ -195,7 +195,7 @@ for (size_t i = 0; i < size; ++i) { unsigned char v = static_cast<unsigned char>(src[i]); - if constexpr (Naive) { + if ABSL_INTERNAL_CONSTEXPR_SINCE_CXX17 (Naive) { v ^= AsciiInAZRangeNaive<ToUpper>(v) ? kAsciiCaseBitFlip : 0; } else { v ^= AsciiInAZRange<ToUpper>(v) ? kAsciiCaseBitFlip : 0;
diff --git a/absl/strings/escaping.h b/absl/strings/escaping.h index 90ba5ef..9b27014 100644 --- a/absl/strings/escaping.h +++ b/absl/strings/escaping.h
@@ -82,7 +82,7 @@ // CEscape() // -// Escapes a `src` string using C-style escapes sequences +// Escapes a 'src' string using C-style escapes sequences // (https://en.cppreference.com/w/cpp/language/escape), escaping other // non-printable/non-whitespace bytes as octal sequences (e.g. "\377"). // @@ -95,7 +95,7 @@ // CHexEscape() // -// Escapes a `src` string using C-style escape sequences, escaping +// Escapes a 'src' string using C-style escape sequences, escaping // other non-printable/non-whitespace bytes as hexadecimal sequences (e.g. // "\xFF"). // @@ -108,7 +108,7 @@ // Utf8SafeCEscape() // -// Escapes a `src` string using C-style escape sequences, escaping bytes as +// Escapes a 'src' string using C-style escape sequences, escaping bytes as // octal sequences, and passing through UTF-8 characters without conversion. // I.e., when encountering any bytes with their high bit set, this function // will not escape those values, whether or not they are valid UTF-8. @@ -116,14 +116,14 @@ // Utf8SafeCHexEscape() // -// Escapes a `src` string using C-style escape sequences, escaping bytes as +// Escapes a 'src' string using C-style escape sequences, escaping bytes as // hexadecimal sequences, and passing through UTF-8 characters without // conversion. std::string Utf8SafeCHexEscape(absl::string_view src); // Base64Escape() // -// Encodes a `src` string into a base64-encoded `dest` string with padding +// Encodes a `src` string into a base64-encoded 'dest' string with padding // characters. This function conforms with RFC 4648 section 4 (base64) and RFC // 2045. std::string Base64Escape(absl::string_view src); @@ -135,7 +135,7 @@ // WebSafeBase64Escape() // // Encodes a `src` string into a base64 string, like Base64Escape() does, but -// outputs '-' instead of '+' and '_' instead of '/', and does not pad `dest`. +// outputs '-' instead of '+' and '_' instead of '/', and does not pad 'dest'. // This function conforms with RFC 4648 section 5 (base64url). std::string WebSafeBase64Escape(absl::string_view src); ABSL_REFACTOR_INLINE inline void @@ -155,11 +155,10 @@ // WebSafeBase64Unescape() // // Converts a `src` string encoded in "web safe" Base64 (RFC 4648 section 5) to -// its binary equivalent, writing it to a `dest` buffer, returning `true` on -// success. If `src` contains invalid characters, `dest` is cleared and returns -// `false`. If padding is included (note that `WebSafeBase64Escape()` does not -// produce it), it must be correct. In the padding, '=' and '.' are treated -// identically. +// its binary equivalent, writing it to a `dest` buffer. If `src` contains +// invalid characters, `dest` is cleared and returns `false`. If padding is +// included (note that `WebSafeBase64Escape()` does not produce it), it must be +// correct. In the padding, '=' and '.' are treated identically. bool WebSafeBase64Unescape(absl::string_view src, std::string* absl_nonnull dest);
diff --git a/absl/strings/str_format.h b/absl/strings/str_format.h index 18a21a9..ffa7f11 100644 --- a/absl/strings/str_format.h +++ b/absl/strings/str_format.h
@@ -49,8 +49,7 @@ // * A `FormatSpec` class template fully encapsulates a format string and its // type arguments and is usually provided to `str_format` functions as a // variadic argument of type `FormatSpec<Arg...>`. The `FormatSpec<Args...>` -// template is evaluated at compile-time, providing type safety (supported -// on GCC and Clang; on MSVC, these checks are deferred to runtime). +// template is evaluated at compile-time, providing type safety. // * A `ParsedFormat` instance, which encapsulates a specific, pre-compiled // format string for a specific set of type(s), and which can be passed // between API boundaries. (The `FormatSpec` type should not be used @@ -276,9 +275,7 @@ // any string-like argument, so `std::string`, `std::wstring`, // `absl::string_view`, `const char*`, and `const wchar_t*` are all accepted. // Likewise, `%d` accepts any integer-like argument, etc. -// -// Note: Compile-time format string checking is supported on GCC and -// Clang. On MSVC, these checks are performed at runtime instead. + template <typename... Args> using FormatSpec = str_format_internal::FormatSpecTemplate< str_format_internal::ArgumentToConv<Args>()...>;
diff --git a/absl/time/format.cc b/absl/time/format.cc index aa2ae2c..bd06f8f 100644 --- a/absl/time/format.cc +++ b/absl/time/format.cc
@@ -18,7 +18,6 @@ #include <cstdint> #include <utility> -#include "absl/strings/ascii.h" #include "absl/strings/match.h" #include "absl/strings/string_view.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" @@ -37,8 +36,8 @@ namespace { -constexpr absl::string_view kInfiniteFutureStr = "infinite-future"; -constexpr absl::string_view kInfinitePastStr = "infinite-past"; +const char kInfiniteFutureStr[] = "infinite-future"; +const char kInfinitePastStr[] = "infinite-past"; struct cctz_parts { cctz::time_point<cctz::seconds> sec; @@ -100,19 +99,30 @@ // the fields with respect to the given TimeZone. bool ParseTime(absl::string_view format, absl::string_view input, absl::TimeZone tz, absl::Time* time, std::string* err) { - static constexpr struct Literal { - absl::string_view name; - absl::Time value; - } kLiterals[] = { - {kInfiniteFutureStr, InfiniteFuture()}, - {kInfinitePastStr, InfinitePast()}, + auto strip_leading_space = [](absl::string_view* sv) { + while (!sv->empty()) { + if (!std::isspace(sv->front())) return; + sv->remove_prefix(1); + } }; - input = StripLeadingAsciiWhitespace(input); - for (const auto& lit : kLiterals) { - if (absl::StartsWith(input, lit.name)) { - absl::string_view tail = input.substr(lit.name.size()); - // The trailing portion must be empty or whitespace. - if (StripLeadingAsciiWhitespace(tail).empty()) { + + // Portable toolchains means we don't get nice constexpr here. + struct Literal { + const char* name; + size_t size; + absl::Time value; + }; + static Literal literals[] = { + {kInfiniteFutureStr, strlen(kInfiniteFutureStr), InfiniteFuture()}, + {kInfinitePastStr, strlen(kInfinitePastStr), InfinitePast()}, + }; + strip_leading_space(&input); + for (const auto& lit : literals) { + if (absl::StartsWith(input, absl::string_view(lit.name, lit.size))) { + absl::string_view tail = input; + tail.remove_prefix(lit.size); + strip_leading_space(&tail); + if (tail.empty()) { *time = lit.value; return true; } @@ -140,6 +150,13 @@ std::string AbslUnparseFlag(absl::Time t) { return absl::FormatTime(RFC3339_full, t, absl::UTCTimeZone()); } +bool ParseFlag(const std::string& text, absl::Time* t, std::string* error) { + return absl::ParseTime(RFC3339_full, text, absl::UTCTimeZone(), t, error); +} + +std::string UnparseFlag(absl::Time t) { + return absl::FormatTime(RFC3339_full, t, absl::UTCTimeZone()); +} ABSL_NAMESPACE_END } // namespace absl
diff --git a/absl/time/format_test.cc b/absl/time/format_test.cc index 38c0e3d..0e145a8 100644 --- a/absl/time/format_test.cc +++ b/absl/time/format_test.cc
@@ -250,13 +250,6 @@ EXPECT_FALSE( absl::ParseTime("%Y", std::string("2026\0payload", 12), &t, &err)); EXPECT_THAT(err, HasSubstr("Illegal trailing data")); - - // High-bit character test for sign-extension bugs. - for (int i = 128; i < 256; ++i) { - char c = static_cast<char>(i); - std::string input = std::string(1, c) + "2015-01-02"; - EXPECT_FALSE(absl::ParseTime("%Y-%m-%d", input, &t, &err)); - } } TEST(ParseTime, ExtendedSeconds) {
diff --git a/absl/types/BUILD.bazel b/absl/types/BUILD.bazel index 2670c0c..ff76679 100644 --- a/absl/types/BUILD.bazel +++ b/absl/types/BUILD.bazel
@@ -47,6 +47,11 @@ ) cc_library( + name = "bad_any_cast", + deprecation = "bad_any_cast dependency is empty can be removed", +) + +cc_library( name = "source_location", srcs = ["source_location.cc"], hdrs = ["source_location.h"], @@ -188,6 +193,11 @@ ) cc_library( + name = "bad_optional_access", + deprecation = "bad_optional_access dependency is empty can be removed", +) + +cc_library( name = "variant", hdrs = ["variant.h"], copts = ABSL_DEFAULT_COPTS, @@ -199,6 +209,11 @@ ], ) +cc_library( + name = "bad_variant_access", + deprecation = "bad_variant_access dependency is empty can be removed", +) + cc_test( name = "variant_test", size = "small",
diff --git a/absl/types/internal/span.h b/absl/types/internal/span.h index 711fdef..208216c 100644 --- a/absl/types/internal/span.h +++ b/absl/types/internal/span.h
@@ -86,13 +86,13 @@ typename std::enable_if<!std::is_const<T>::value, int>::type; template <template <typename> class SpanT, typename T> -constexpr bool EqualImpl(SpanT<T> a, SpanT<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool EqualImpl(SpanT<T> a, SpanT<T> b) { static_assert(std::is_const<T>::value, ""); return std::equal(a.begin(), a.end(), b.begin(), b.end()); } template <template <typename> class SpanT, typename T> -constexpr bool LessThanImpl(SpanT<T> a, SpanT<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool LessThanImpl(SpanT<T> a, SpanT<T> b) { // We can't use value_type since that is remove_cv_t<T>, so we go the long way // around. static_assert(std::is_const<T>::value, "");
diff --git a/absl/types/span.h b/absl/types/span.h index e2f0c9a..2327962 100644 --- a/absl/types/span.h +++ b/absl/types/span.h
@@ -531,157 +531,165 @@ // operator== template <typename T> -constexpr bool operator==(Span<T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator==(Span<T> a, Span<T> b) { return span_internal::EqualImpl<Span, const T>(a, b); } template <typename T> -constexpr bool operator==(Span<const T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator==(Span<const T> a, + Span<T> b) { return span_internal::EqualImpl<Span, const T>(a, b); } template <typename T> -constexpr bool operator==(Span<T> a, Span<const T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator==(Span<T> a, + Span<const T> b) { return span_internal::EqualImpl<Span, const T>(a, b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator==(const U& a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator==(const U& a, Span<T> b) { return span_internal::EqualImpl<Span, const T>(a, b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator==(Span<T> a, const U& b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator==(Span<T> a, const U& b) { return span_internal::EqualImpl<Span, const T>(a, b); } // operator!= template <typename T> -constexpr bool operator!=(Span<T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator!=(Span<T> a, Span<T> b) { return !(a == b); } template <typename T> -constexpr bool operator!=(Span<const T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator!=(Span<const T> a, + Span<T> b) { return !(a == b); } template <typename T> -constexpr bool operator!=(Span<T> a, Span<const T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator!=(Span<T> a, + Span<const T> b) { return !(a == b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator!=(const U& a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator!=(const U& a, Span<T> b) { return !(a == b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator!=(Span<T> a, const U& b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator!=(Span<T> a, const U& b) { return !(a == b); } // operator< template <typename T> -constexpr bool operator<(Span<T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<(Span<T> a, Span<T> b) { return span_internal::LessThanImpl<Span, const T>(a, b); } template <typename T> -constexpr bool operator<(Span<const T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<(Span<const T> a, Span<T> b) { return span_internal::LessThanImpl<Span, const T>(a, b); } template <typename T> -constexpr bool operator<(Span<T> a, Span<const T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<(Span<T> a, Span<const T> b) { return span_internal::LessThanImpl<Span, const T>(a, b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator<(const U& a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<(const U& a, Span<T> b) { return span_internal::LessThanImpl<Span, const T>(a, b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator<(Span<T> a, const U& b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<(Span<T> a, const U& b) { return span_internal::LessThanImpl<Span, const T>(a, b); } // operator> template <typename T> -constexpr bool operator>(Span<T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>(Span<T> a, Span<T> b) { return b < a; } template <typename T> -constexpr bool operator>(Span<const T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>(Span<const T> a, Span<T> b) { return b < a; } template <typename T> -constexpr bool operator>(Span<T> a, Span<const T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>(Span<T> a, Span<const T> b) { return b < a; } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator>(const U& a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>(const U& a, Span<T> b) { return b < a; } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator>(Span<T> a, const U& b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>(Span<T> a, const U& b) { return b < a; } // operator<= template <typename T> -constexpr bool operator<=(Span<T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<=(Span<T> a, Span<T> b) { return !(b < a); } template <typename T> -constexpr bool operator<=(Span<const T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<=(Span<const T> a, + Span<T> b) { return !(b < a); } template <typename T> -constexpr bool operator<=(Span<T> a, Span<const T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<=(Span<T> a, + Span<const T> b) { return !(b < a); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator<=(const U& a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<=(const U& a, Span<T> b) { return !(b < a); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator<=(Span<T> a, const U& b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator<=(Span<T> a, const U& b) { return !(b < a); } // operator>= template <typename T> -constexpr bool operator>=(Span<T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>=(Span<T> a, Span<T> b) { return !(a < b); } template <typename T> -constexpr bool operator>=(Span<const T> a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>=(Span<const T> a, + Span<T> b) { return !(a < b); } template <typename T> -constexpr bool operator>=(Span<T> a, Span<const T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>=(Span<T> a, + Span<const T> b) { return !(a < b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator>=(const U& a, Span<T> b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>=(const U& a, Span<T> b) { return !(a < b); } template < typename T, typename U, typename = span_internal::EnableIfConvertibleTo<U, absl::Span<const T>>> -constexpr bool operator>=(Span<T> a, const U& b) { +ABSL_INTERNAL_CONSTEXPR_SINCE_CXX20 bool operator>=(Span<T> a, const U& b) { return !(a < b); }
diff --git a/symbols_arm64_dbg.def b/symbols_arm64_dbg.def index 4006448..7bf58cb 100644 --- a/symbols_arm64_dbg.def +++ b/symbols_arm64_dbg.def
@@ -460,7 +460,7 @@ ??$CreateDefault@$0A@@CommonFields@container_internal@absl@@SA?AV012@XZ ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@_K0@Z ??$Deallocate@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAV?$allocator@D@__Cr@std@@PEAX_K@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$DecomposePair@U?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_N$$QEAU?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@U?$HashElement@UStringHash@container_internal@absl@@$00@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_K$$QEAU?$HashElement@UStringHash@container_internal@absl@@$00@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@UEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@U?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA?AU?$pair@Viterator@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@_N@__Cr@std@@$$QEAUEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@01@$$QEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@34@@Z @@ -2034,7 +2034,6 @@ ??0Clock@absl@@QEAA@XZ ??0CommandLineFlag@absl@@QEAA@XZ ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@@Z - ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@AEBV012@@Z ??0CommonFields@container_internal@absl@@QEAA@Usoo_tag_t@12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z ??0Condition@absl@@QEAA@PEB_N@Z @@ -2136,7 +2135,7 @@ ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@_KVcrc32c_t@3@@Z ??0ProtoField@log_internal@absl@@QEAA@XZ ??0Randen@random_internal@absl@@QEAA@XZ - ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N0@Z + ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N@Z ??0ReaderMutexLock@absl@@QEAA@AEAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QEAA@XZ ??0RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ @@ -3176,7 +3175,6 @@ ?Data@CordRepFlat@cord_internal@absl@@QEAAPEADXZ ?Data@CordRepFlat@cord_internal@absl@@QEBAPEBDXZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@PEAPEAUCordRep@cord_internal@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z @@ -3196,6 +3194,7 @@ ?DecrementSynchSem@Mutex@absl@@CA_NPEAV12@PEAUPerThreadSynch@base_internal@2@VKernelTimeout@synchronization_internal@2@@Z ?DeduceUsageFlags@flags_internal@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@0@Z ?DefaultArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@XZ + ?DefaultCapacity@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CA_KXZ ?DefaultIterControl@container_internal@absl@@YAPEAW4ctrl_t@12@XZ ?DefaultKind@FlagImpl@flags_internal@absl@@AEBA?AW4FlagDefaultKind@23@XZ ?DefaultStackUnwinder@absl@@YAHPEAPEAXPEAHHHPEBX1@Z @@ -3222,9 +3221,6 @@ ?DestroyElements@?$DestroyAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@PEAVsource_location@56@_K@Z - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -3504,7 +3500,7 @@ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCond@WinHelper@Win32Waiter@synchronization_internal@absl@@SAPEAU_RTL_CONDITION_VARIABLE@@PEAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAVLogSink@3@XZ @@ -3702,7 +3698,6 @@ ?IsAlreadyExists@absl@@YA_NAEBVStatus@1@@Z ?IsBtree@CordRep@cord_internal@absl@@QEBA_NXZ ?IsCancelled@absl@@YA_NAEBVStatus@1@@Z - ?IsCapacityValidForBlockedElements@container_internal@absl@@YA_N_K@Z ?IsCooperative@SpinLock@base_internal@absl@@CA_NW4SchedulingMode@23@@Z ?IsCordBtreeExhaustiveValidationEnabled@cord_internal@absl@@YA_NXZ ?IsCrc@CordRep@cord_internal@absl@@QEBA_NXZ @@ -3739,7 +3734,6 @@ ?IsReentrance@?$HashtableCapacityImpl@$00@container_internal@absl@@QEBA_NXZ ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSame@InlineRep@Cord@absl@@QEBA_NAEBV123@@Z ?IsSampled@HashtablezInfoHandle@container_internal@absl@@QEBA_NXZ ?IsSmallCapacity@container_internal@absl@@YA_N_K@Z @@ -3831,7 +3825,6 @@ ?MaskNonFull@GroupAArch64Impl@container_internal@absl@@QEBA@XZ ?Match@GroupAArch64Impl@container_internal@absl@@QEBA@E@Z ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z - ?MaxCapacityWithBlockedElements@container_internal@absl@@YA_KXZ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxSmallCapacity@container_internal@absl@@YA_KXZ @@ -3907,7 +3900,6 @@ ?NumCPUs@base_internal@absl@@YAHXZ ?NumChunks@CrcCordState@crc_internal@absl@@QEBA_KXZ ?NumClonedBytes@container_internal@absl@@YA_KXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumControlBytes@container_internal@absl@@YA_K_K@Z ?NumGenerationBytes@container_internal@absl@@YA_KXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ @@ -3939,6 +3931,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -4282,7 +4275,7 @@ ?SubtractSize@?$Storage@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TagToAllocatedSize@cord_internal@absl@@YA_KE@Z @@ -4437,6 +4430,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPEAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QEAUCordRep@cord_internal@absl@@@3@@Z ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z @@ -5022,7 +5016,6 @@ ?begin@CordRepBtree@cord_internal@absl@@QEBA_KXZ ?begin@Storage@?$FixedArray@D$0?0V?$allocator@D@__Cr@std@@@absl@@QEBAPEADXZ ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@__Cr@std@@@__Cr@std@@QEBA?AU1234@XZ - ?blocked_element_count@CommonFields@container_internal@absl@@QEBA_KXZ ?btree@CordRep@cord_internal@absl@@QEAAPEAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QEBAPEBVCordRepBtree@23@XZ ?btree@CordRepBtreeNavigator@cord_internal@absl@@QEBAPEAVCordRepBtree@23@XZ @@ -5168,6 +5161,7 @@ ?days_per_century@impl@detail@cctz@time_internal@absl@@YAHH@Z ?days_per_month@impl@detail@cctz@time_internal@absl@@YAH_JC@Z ?days_per_year@impl@detail@cctz@time_internal@absl@@YAH_JC@Z + ?dealloc@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAAXXZ ?deallocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@23@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@23@_K@Z @@ -5404,7 +5398,6 @@ ?get@PlacementImpl@?$NoDestructor@VFlagRegistry@flags_internal@absl@@@absl@@QEAAPEAVFlagRegistry@flags_internal@3@XZ ?get@PlacementImpl@?$NoDestructor@VMutex@absl@@@absl@@QEAAPEAVMutex@3@XZ ?get_cordz_mean_interval@cord_internal@absl@@YAHXZ - ?get_dealloc_backing_array_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX_KPEAW4ctrl_t@23@11_N1@ZXZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ @@ -5421,7 +5414,6 @@ ?get_deleter@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@VTimeZoneLibC@cctz@time_internal@absl@@U?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@XUDynValueDeleter@flags_internal@absl@@@__Cr@std@@QEAAAEAUDynValueDeleter@flags_internal@absl@@XZ - ?get_destroy_slot_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX0@ZXZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QEBAHXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEAAPEAXXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEBAPEBXXZ @@ -5459,6 +5451,7 @@ ?index@?$__base@$0A@V?$variant@_K_JIH_N@__Cr@std@@V?$variant@_K_JN@23@V?$Span@$$CBD@absl@@V?$variant@IHM@23@@__variant_detail@__Cr@std@@QEBA_KXZ ?index@?$probe_seq@$07@container_internal@absl@@QEBA_KXZ ?index@CordRepBtree@cord_internal@absl@@QEBA_KW4EdgeType@123@@Z + ?infoz@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAA?AVHashtablezInfoHandle@23@XZ ?infoz@CommonFields@container_internal@absl@@QEAA?AVHashtablezInfoHandle@23@XZ ?infoz_ptr@CommonFields@container_internal@absl@@QEBAPEAVHashtablezInfoHandle@23@XZ ?inline_size@InlineData@cord_internal@absl@@QEBA_KXZ
diff --git a/symbols_arm64_dbg_cxx23.def b/symbols_arm64_dbg_cxx23.def index ce52f24..71b1482 100644 --- a/symbols_arm64_dbg_cxx23.def +++ b/symbols_arm64_dbg_cxx23.def
@@ -460,7 +460,7 @@ ??$CreateDefault@$0A@@CommonFields@container_internal@absl@@SA?AV012@XZ ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@_K0@Z ??$Deallocate@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAV?$allocator@D@__Cr@std@@PEAX_K@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$DecomposePair@U?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_N$$QEAU?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@U?$HashElement@UStringHash@container_internal@absl@@$00@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_K$$QEAU?$HashElement@UStringHash@container_internal@absl@@$00@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@UEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@U?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA?AU?$pair@Viterator@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@_N@__Cr@std@@$$QEAUEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@01@$$QEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@34@@Z @@ -2047,7 +2047,6 @@ ??0Clock@absl@@QEAA@XZ ??0CommandLineFlag@absl@@QEAA@XZ ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@@Z - ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@AEBV012@@Z ??0CommonFields@container_internal@absl@@QEAA@Usoo_tag_t@12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z ??0Condition@absl@@QEAA@PEB_N@Z @@ -2149,7 +2148,7 @@ ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@_KVcrc32c_t@3@@Z ??0ProtoField@log_internal@absl@@QEAA@XZ ??0Randen@random_internal@absl@@QEAA@XZ - ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N0@Z + ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N@Z ??0ReaderMutexLock@absl@@QEAA@AEAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QEAA@XZ ??0RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ @@ -3189,7 +3188,6 @@ ?Data@CordRepFlat@cord_internal@absl@@QEAAPEADXZ ?Data@CordRepFlat@cord_internal@absl@@QEBAPEBDXZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@PEAPEAUCordRep@cord_internal@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z @@ -3209,6 +3207,7 @@ ?DecrementSynchSem@Mutex@absl@@CA_NPEAV12@PEAUPerThreadSynch@base_internal@2@VKernelTimeout@synchronization_internal@2@@Z ?DeduceUsageFlags@flags_internal@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@0@Z ?DefaultArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@XZ + ?DefaultCapacity@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CA_KXZ ?DefaultIterControl@container_internal@absl@@YAPEAW4ctrl_t@12@XZ ?DefaultKind@FlagImpl@flags_internal@absl@@AEBA?AW4FlagDefaultKind@23@XZ ?DefaultStackUnwinder@absl@@YAHPEAPEAXPEAHHHPEBX1@Z @@ -3235,9 +3234,6 @@ ?DestroyElements@?$DestroyAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@PEAVsource_location@56@_K@Z - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -3517,7 +3513,7 @@ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCond@WinHelper@Win32Waiter@synchronization_internal@absl@@SAPEAU_RTL_CONDITION_VARIABLE@@PEAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAVLogSink@3@XZ @@ -3714,7 +3710,6 @@ ?IsAlreadyExists@absl@@YA_NAEBVStatus@1@@Z ?IsBtree@CordRep@cord_internal@absl@@QEBA_NXZ ?IsCancelled@absl@@YA_NAEBVStatus@1@@Z - ?IsCapacityValidForBlockedElements@container_internal@absl@@YA_N_K@Z ?IsCooperative@SpinLock@base_internal@absl@@CA_NW4SchedulingMode@23@@Z ?IsCordBtreeExhaustiveValidationEnabled@cord_internal@absl@@YA_NXZ ?IsCrc@CordRep@cord_internal@absl@@QEBA_NXZ @@ -3751,7 +3746,6 @@ ?IsReentrance@?$HashtableCapacityImpl@$00@container_internal@absl@@QEBA_NXZ ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSame@InlineRep@Cord@absl@@QEBA_NAEBV123@@Z ?IsSampled@HashtablezInfoHandle@container_internal@absl@@QEBA_NXZ ?IsSmallCapacity@container_internal@absl@@YA_N_K@Z @@ -3843,7 +3837,6 @@ ?MaskNonFull@GroupAArch64Impl@container_internal@absl@@QEBA@XZ ?Match@GroupAArch64Impl@container_internal@absl@@QEBA@E@Z ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z - ?MaxCapacityWithBlockedElements@container_internal@absl@@YA_KXZ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxSmallCapacity@container_internal@absl@@YA_KXZ @@ -3919,7 +3912,6 @@ ?NumCPUs@base_internal@absl@@YAHXZ ?NumChunks@CrcCordState@crc_internal@absl@@QEBA_KXZ ?NumClonedBytes@container_internal@absl@@YA_KXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumControlBytes@container_internal@absl@@YA_K_K@Z ?NumGenerationBytes@container_internal@absl@@YA_KXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ @@ -3951,6 +3943,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -4294,7 +4287,7 @@ ?SubtractSize@?$Storage@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TagToAllocatedSize@cord_internal@absl@@YA_KE@Z @@ -4449,6 +4442,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPEAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QEAUCordRep@cord_internal@absl@@@3@@Z ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z @@ -5047,7 +5041,6 @@ ?begin@CordRepBtree@cord_internal@absl@@QEBA_KXZ ?begin@Storage@?$FixedArray@D$0?0V?$allocator@D@__Cr@std@@@absl@@QEBAPEADXZ ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@__Cr@std@@@__Cr@std@@QEBA?AU1234@XZ - ?blocked_element_count@CommonFields@container_internal@absl@@QEBA_KXZ ?btree@CordRep@cord_internal@absl@@QEAAPEAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QEBAPEBVCordRepBtree@23@XZ ?btree@CordRepBtreeNavigator@cord_internal@absl@@QEBAPEAVCordRepBtree@23@XZ @@ -5193,6 +5186,7 @@ ?days_per_century@impl@detail@cctz@time_internal@absl@@YAHH@Z ?days_per_month@impl@detail@cctz@time_internal@absl@@YAH_JC@Z ?days_per_year@impl@detail@cctz@time_internal@absl@@YAH_JC@Z + ?dealloc@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAAXXZ ?deallocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@23@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@23@_K@Z @@ -5429,7 +5423,6 @@ ?get@PlacementImpl@?$NoDestructor@VFlagRegistry@flags_internal@absl@@@absl@@QEAAPEAVFlagRegistry@flags_internal@3@XZ ?get@PlacementImpl@?$NoDestructor@VMutex@absl@@@absl@@QEAAPEAVMutex@3@XZ ?get_cordz_mean_interval@cord_internal@absl@@YAHXZ - ?get_dealloc_backing_array_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX_KPEAW4ctrl_t@23@11_N1@ZXZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ @@ -5446,7 +5439,6 @@ ?get_deleter@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@VTimeZoneLibC@cctz@time_internal@absl@@U?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@XUDynValueDeleter@flags_internal@absl@@@__Cr@std@@QEAAAEAUDynValueDeleter@flags_internal@absl@@XZ - ?get_destroy_slot_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX0@ZXZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QEBAHXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEAAPEAXXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEBAPEBXXZ @@ -5484,6 +5476,7 @@ ?index@?$__base@$0A@V?$variant@_K_JIH_N@__Cr@std@@V?$variant@_K_JN@23@V?$Span@$$CBD@absl@@V?$variant@IHM@23@@__variant_detail@__Cr@std@@QEBA_KXZ ?index@?$probe_seq@$07@container_internal@absl@@QEBA_KXZ ?index@CordRepBtree@cord_internal@absl@@QEBA_KW4EdgeType@123@@Z + ?infoz@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAA?AVHashtablezInfoHandle@23@XZ ?infoz@CommonFields@container_internal@absl@@QEAA?AVHashtablezInfoHandle@23@XZ ?infoz_ptr@CommonFields@container_internal@absl@@QEBAPEAVHashtablezInfoHandle@23@XZ ?inline_size@InlineData@cord_internal@absl@@QEBA_KXZ
diff --git a/symbols_arm64_rel.def b/symbols_arm64_rel.def index c0f20a1..deaf98e 100644 --- a/symbols_arm64_rel.def +++ b/symbols_arm64_rel.def
@@ -64,7 +64,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AEAAXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -552,7 +552,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPEAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EEBA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?DecodeFrom@ProtoField@log_internal@absl@@QEAA_NPEAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPEADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -575,9 +574,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?DestroyCordSlow@Cord@absl@@AEAAXXZ - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -760,7 +756,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHPEBXP6AXPEBDPEAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ @@ -867,7 +863,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QEBA_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EEBA_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NAEBVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NAEBVStatus@1@@Z @@ -960,7 +955,6 @@ ?Now@CycleClock@base_internal@absl@@SA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPEAUThreadIdentity@base_internal@2@@Z @@ -978,6 +972,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1189,7 +1184,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PEBV645@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QEAAXI@Z @@ -1298,6 +1293,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QEBAXXZ ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z
diff --git a/symbols_arm64_rel_cxx23.def b/symbols_arm64_rel_cxx23.def index 44fc527..5012d13 100644 --- a/symbols_arm64_rel_cxx23.def +++ b/symbols_arm64_rel_cxx23.def
@@ -64,7 +64,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AEAAXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -552,7 +552,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPEAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EEBA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?DecodeFrom@ProtoField@log_internal@absl@@QEAA_NPEAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPEADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -575,9 +574,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?DestroyCordSlow@Cord@absl@@AEAAXXZ - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -760,7 +756,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHPEBXP6AXPEBDPEAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ @@ -867,7 +863,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QEBA_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EEBA_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NAEBVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NAEBVStatus@1@@Z @@ -960,7 +955,6 @@ ?Now@CycleClock@base_internal@absl@@SA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPEAUThreadIdentity@base_internal@2@@Z @@ -978,6 +972,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1189,7 +1184,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PEBV645@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QEAAXI@Z @@ -1298,6 +1293,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QEBAXXZ ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z
diff --git a/symbols_x64_dbg.def b/symbols_x64_dbg.def index f62039b..36780ea 100644 --- a/symbols_x64_dbg.def +++ b/symbols_x64_dbg.def
@@ -460,7 +460,7 @@ ??$CreateDefault@$0A@@CommonFields@container_internal@absl@@SA?AV012@XZ ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@_K0@Z ??$Deallocate@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAV?$allocator@D@__Cr@std@@PEAX_K@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$DecomposePair@U?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_N$$QEAU?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@U?$HashElement@UStringHash@container_internal@absl@@$00@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_K$$QEAU?$HashElement@UStringHash@container_internal@absl@@$00@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@UEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@U?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA?AU?$pair@Viterator@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@_N@__Cr@std@@$$QEAUEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@01@$$QEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@34@@Z @@ -2035,7 +2035,6 @@ ??0Clock@absl@@QEAA@XZ ??0CommandLineFlag@absl@@QEAA@XZ ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@@Z - ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@AEBV012@@Z ??0CommonFields@container_internal@absl@@QEAA@Usoo_tag_t@12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z ??0Condition@absl@@QEAA@PEB_N@Z @@ -2137,7 +2136,7 @@ ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@_KVcrc32c_t@3@@Z ??0ProtoField@log_internal@absl@@QEAA@XZ ??0Randen@random_internal@absl@@QEAA@XZ - ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N0@Z + ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N@Z ??0ReaderMutexLock@absl@@QEAA@AEAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QEAA@XZ ??0RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ @@ -3177,7 +3176,6 @@ ?Data@CordRepFlat@cord_internal@absl@@QEAAPEADXZ ?Data@CordRepFlat@cord_internal@absl@@QEBAPEBDXZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@PEAPEAUCordRep@cord_internal@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z @@ -3197,6 +3195,7 @@ ?DecrementSynchSem@Mutex@absl@@CA_NPEAV12@PEAUPerThreadSynch@base_internal@2@VKernelTimeout@synchronization_internal@2@@Z ?DeduceUsageFlags@flags_internal@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@0@Z ?DefaultArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@XZ + ?DefaultCapacity@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CA_KXZ ?DefaultIterControl@container_internal@absl@@YAPEAW4ctrl_t@12@XZ ?DefaultKind@FlagImpl@flags_internal@absl@@AEBA?AW4FlagDefaultKind@23@XZ ?DefaultStackUnwinder@absl@@YAHPEAPEAXPEAHHHPEBX1@Z @@ -3223,9 +3222,6 @@ ?DestroyElements@?$DestroyAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@PEAVsource_location@56@_K@Z - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -3505,7 +3501,7 @@ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCond@WinHelper@Win32Waiter@synchronization_internal@absl@@SAPEAU_RTL_CONDITION_VARIABLE@@PEAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAVLogSink@3@XZ @@ -3703,7 +3699,6 @@ ?IsAlreadyExists@absl@@YA_NAEBVStatus@1@@Z ?IsBtree@CordRep@cord_internal@absl@@QEBA_NXZ ?IsCancelled@absl@@YA_NAEBVStatus@1@@Z - ?IsCapacityValidForBlockedElements@container_internal@absl@@YA_N_K@Z ?IsCooperative@SpinLock@base_internal@absl@@CA_NW4SchedulingMode@23@@Z ?IsCordBtreeExhaustiveValidationEnabled@cord_internal@absl@@YA_NXZ ?IsCrc@CordRep@cord_internal@absl@@QEBA_NXZ @@ -3740,7 +3735,6 @@ ?IsReentrance@?$HashtableCapacityImpl@$00@container_internal@absl@@QEBA_NXZ ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSame@InlineRep@Cord@absl@@QEBA_NAEBV123@@Z ?IsSampled@HashtablezInfoHandle@container_internal@absl@@QEBA_NXZ ?IsSmallCapacity@container_internal@absl@@YA_N_K@Z @@ -3834,7 +3828,6 @@ ?MaskNonFull@GroupSse2Impl@container_internal@absl@@QEBA@XZ ?Match@GroupSse2Impl@container_internal@absl@@QEBA?AV?$BitMask@I$0BA@$0A@$0A@@23@E@Z ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z - ?MaxCapacityWithBlockedElements@container_internal@absl@@YA_KXZ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxSmallCapacity@container_internal@absl@@YA_KXZ @@ -3911,7 +3904,6 @@ ?NumCPUs@base_internal@absl@@YAHXZ ?NumChunks@CrcCordState@crc_internal@absl@@QEBA_KXZ ?NumClonedBytes@container_internal@absl@@YA_KXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumControlBytes@container_internal@absl@@YA_K_K@Z ?NumGenerationBytes@container_internal@absl@@YA_KXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ @@ -3943,6 +3935,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -4286,7 +4279,7 @@ ?SubtractSize@?$Storage@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TagToAllocatedSize@cord_internal@absl@@YA_KE@Z @@ -4441,6 +4434,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPEAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QEAUCordRep@cord_internal@absl@@@3@@Z ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z @@ -5027,7 +5021,6 @@ ?begin@CordRepBtree@cord_internal@absl@@QEBA_KXZ ?begin@Storage@?$FixedArray@D$0?0V?$allocator@D@__Cr@std@@@absl@@QEBAPEADXZ ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@__Cr@std@@@__Cr@std@@QEBA?AU1234@XZ - ?blocked_element_count@CommonFields@container_internal@absl@@QEBA_KXZ ?btree@CordRep@cord_internal@absl@@QEAAPEAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QEBAPEBVCordRepBtree@23@XZ ?btree@CordRepBtreeNavigator@cord_internal@absl@@QEBAPEAVCordRepBtree@23@XZ @@ -5173,6 +5166,7 @@ ?days_per_century@impl@detail@cctz@time_internal@absl@@YAHH@Z ?days_per_month@impl@detail@cctz@time_internal@absl@@YAH_JC@Z ?days_per_year@impl@detail@cctz@time_internal@absl@@YAH_JC@Z + ?dealloc@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAAXXZ ?deallocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@23@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@23@_K@Z @@ -5409,7 +5403,6 @@ ?get@PlacementImpl@?$NoDestructor@VFlagRegistry@flags_internal@absl@@@absl@@QEAAPEAVFlagRegistry@flags_internal@3@XZ ?get@PlacementImpl@?$NoDestructor@VMutex@absl@@@absl@@QEAAPEAVMutex@3@XZ ?get_cordz_mean_interval@cord_internal@absl@@YAHXZ - ?get_dealloc_backing_array_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX_KPEAW4ctrl_t@23@11_N1@ZXZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ @@ -5426,7 +5419,6 @@ ?get_deleter@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@VTimeZoneLibC@cctz@time_internal@absl@@U?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@XUDynValueDeleter@flags_internal@absl@@@__Cr@std@@QEAAAEAUDynValueDeleter@flags_internal@absl@@XZ - ?get_destroy_slot_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX0@ZXZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QEBAHXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEAAPEAXXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEBAPEBXXZ @@ -5464,6 +5456,7 @@ ?index@?$__base@$0A@V?$variant@_K_JIH_N@__Cr@std@@V?$variant@_K_JN@23@V?$Span@$$CBD@absl@@V?$variant@IHM@23@@__variant_detail@__Cr@std@@QEBA_KXZ ?index@?$probe_seq@$0BA@@container_internal@absl@@QEBA_KXZ ?index@CordRepBtree@cord_internal@absl@@QEBA_KW4EdgeType@123@@Z + ?infoz@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAA?AVHashtablezInfoHandle@23@XZ ?infoz@CommonFields@container_internal@absl@@QEAA?AVHashtablezInfoHandle@23@XZ ?infoz_ptr@CommonFields@container_internal@absl@@QEBAPEAVHashtablezInfoHandle@23@XZ ?inline_size@InlineData@cord_internal@absl@@QEBA_KXZ
diff --git a/symbols_x64_dbg_cxx23.def b/symbols_x64_dbg_cxx23.def index e9366d7..1a94d15 100644 --- a/symbols_x64_dbg_cxx23.def +++ b/symbols_x64_dbg_cxx23.def
@@ -460,7 +460,7 @@ ??$CreateDefault@$0A@@CommonFields@container_internal@absl@@SA?AV012@XZ ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@_K0@Z ??$Deallocate@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAV?$allocator@D@__Cr@std@@PEAX_K@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$DecomposePair@U?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_N$$QEAU?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@U?$HashElement@UStringHash@container_internal@absl@@$00@container_internal@absl@@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_K$$QEAU?$HashElement@UStringHash@container_internal@absl@@$00@01@AEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@UEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@U?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA?AU?$pair@Viterator@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@_N@__Cr@std@@$$QEAUEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@01@$$QEAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@34@@Z @@ -2048,7 +2048,6 @@ ??0Clock@absl@@QEAA@XZ ??0CommandLineFlag@absl@@QEAA@XZ ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@@Z - ??0CommonFields@container_internal@absl@@QEAA@Unon_soo_tag_t@12@AEBV012@@Z ??0CommonFields@container_internal@absl@@QEAA@Usoo_tag_t@12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z ??0Condition@absl@@QEAA@PEB_N@Z @@ -2150,7 +2149,7 @@ ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@_KVcrc32c_t@3@@Z ??0ProtoField@log_internal@absl@@QEAA@XZ ??0Randen@random_internal@absl@@QEAA@XZ - ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N0@Z + ??0RawHashSetLayout@container_internal@absl@@QEAA@_K00_N@Z ??0ReaderMutexLock@absl@@QEAA@AEAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QEAA@XZ ??0RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ @@ -3190,7 +3189,6 @@ ?Data@CordRepFlat@cord_internal@absl@@QEAAPEADXZ ?Data@CordRepFlat@cord_internal@absl@@QEBAPEBDXZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@PEAPEAUCordRep@cord_internal@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?Deallocate@?$MallocAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z @@ -3210,6 +3208,7 @@ ?DecrementSynchSem@Mutex@absl@@CA_NPEAV12@PEAUPerThreadSynch@base_internal@2@VKernelTimeout@synchronization_internal@2@@Z ?DeduceUsageFlags@flags_internal@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@0@Z ?DefaultArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@XZ + ?DefaultCapacity@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CA_KXZ ?DefaultIterControl@container_internal@absl@@YAPEAW4ctrl_t@12@XZ ?DefaultKind@FlagImpl@flags_internal@absl@@AEBA?AW4FlagDefaultKind@23@XZ ?DefaultStackUnwinder@absl@@YAHPEAPEAXPEAHHHPEBX1@Z @@ -3236,9 +3235,6 @@ ?DestroyElements@?$DestroyAdapter@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@PEAVLogSink@absl@@@__Cr@std@@PEAPEAVLogSink@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PEAUPayload@status_internal@3@_K@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAEAV?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@PEAVsource_location@56@_K@Z - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -3518,7 +3514,7 @@ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCond@WinHelper@Win32Waiter@synchronization_internal@absl@@SAPEAU_RTL_CONDITION_VARIABLE@@PEAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAVLogSink@3@XZ @@ -3715,7 +3711,6 @@ ?IsAlreadyExists@absl@@YA_NAEBVStatus@1@@Z ?IsBtree@CordRep@cord_internal@absl@@QEBA_NXZ ?IsCancelled@absl@@YA_NAEBVStatus@1@@Z - ?IsCapacityValidForBlockedElements@container_internal@absl@@YA_N_K@Z ?IsCooperative@SpinLock@base_internal@absl@@CA_NW4SchedulingMode@23@@Z ?IsCordBtreeExhaustiveValidationEnabled@cord_internal@absl@@YA_NXZ ?IsCrc@CordRep@cord_internal@absl@@QEBA_NXZ @@ -3752,7 +3747,6 @@ ?IsReentrance@?$HashtableCapacityImpl@$00@container_internal@absl@@QEBA_NXZ ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSame@InlineRep@Cord@absl@@QEBA_NAEBV123@@Z ?IsSampled@HashtablezInfoHandle@container_internal@absl@@QEBA_NXZ ?IsSmallCapacity@container_internal@absl@@YA_N_K@Z @@ -3846,7 +3840,6 @@ ?MaskNonFull@GroupSse2Impl@container_internal@absl@@QEBA@XZ ?Match@GroupSse2Impl@container_internal@absl@@QEBA?AV?$BitMask@I$0BA@$0A@$0A@@23@E@Z ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z - ?MaxCapacityWithBlockedElements@container_internal@absl@@YA_KXZ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxSmallCapacity@container_internal@absl@@YA_KXZ @@ -3923,7 +3916,6 @@ ?NumCPUs@base_internal@absl@@YAHXZ ?NumChunks@CrcCordState@crc_internal@absl@@QEBA_KXZ ?NumClonedBytes@container_internal@absl@@YA_KXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumControlBytes@container_internal@absl@@YA_K_K@Z ?NumGenerationBytes@container_internal@absl@@YA_KXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ @@ -3955,6 +3947,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -4298,7 +4291,7 @@ ?SubtractSize@?$Storage@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TagToAllocatedSize@cord_internal@absl@@YA_KE@Z @@ -4453,6 +4446,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPEAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QEAUCordRep@cord_internal@absl@@@3@@Z ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z @@ -5052,7 +5046,6 @@ ?begin@CordRepBtree@cord_internal@absl@@QEBA_KXZ ?begin@Storage@?$FixedArray@D$0?0V?$allocator@D@__Cr@std@@@absl@@QEBAPEADXZ ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@__Cr@std@@@__Cr@std@@QEBA?AU1234@XZ - ?blocked_element_count@CommonFields@container_internal@absl@@QEBA_KXZ ?btree@CordRep@cord_internal@absl@@QEAAPEAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QEBAPEBVCordRepBtree@23@XZ ?btree@CordRepBtreeNavigator@cord_internal@absl@@QEBAPEAVCordRepBtree@23@XZ @@ -5198,6 +5191,7 @@ ?days_per_century@impl@detail@cctz@time_internal@absl@@YAHH@Z ?days_per_month@impl@detail@cctz@time_internal@absl@@YAH_JC@Z ?days_per_year@impl@detail@cctz@time_internal@absl@@YAH_JC@Z + ?dealloc@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAAXXZ ?deallocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@23@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@23@_K@Z @@ -5434,7 +5428,6 @@ ?get@PlacementImpl@?$NoDestructor@VFlagRegistry@flags_internal@absl@@@absl@@QEAAPEAVFlagRegistry@flags_internal@3@XZ ?get@PlacementImpl@?$NoDestructor@VMutex@absl@@@absl@@QEAAPEAVMutex@3@XZ ?get_cordz_mean_interval@cord_internal@absl@@YAHXZ - ?get_dealloc_backing_array_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX_KPEAW4ctrl_t@23@11_N1@ZXZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@PEBUCordRep@cord_internal@absl@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PEAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ @@ -5451,7 +5444,6 @@ ?get_deleter@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@VTimeZoneLibC@cctz@time_internal@absl@@U?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QEAAAEAU?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@XUDynValueDeleter@flags_internal@absl@@@__Cr@std@@QEAAAEAUDynValueDeleter@flags_internal@absl@@XZ - ?get_destroy_slot_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPEAX0@ZXZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QEBAHXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEAAPEAXXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QEBAPEBXXZ @@ -5489,6 +5481,7 @@ ?index@?$__base@$0A@V?$variant@_K_JIH_N@__Cr@std@@V?$variant@_K_JN@23@V?$Span@$$CBD@absl@@V?$variant@IHM@23@@__variant_detail@__Cr@std@@QEBA_KXZ ?index@?$probe_seq@$0BA@@container_internal@absl@@QEBA_KXZ ?index@CordRepBtree@cord_internal@absl@@QEBA_KW4EdgeType@123@@Z + ?infoz@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AEAA?AVHashtablezInfoHandle@23@XZ ?infoz@CommonFields@container_internal@absl@@QEAA?AVHashtablezInfoHandle@23@XZ ?infoz_ptr@CommonFields@container_internal@absl@@QEBAPEAVHashtablezInfoHandle@23@XZ ?inline_size@InlineData@cord_internal@absl@@QEBA_KXZ
diff --git a/symbols_x64_rel.def b/symbols_x64_rel.def index 788e77a..364ae4f 100644 --- a/symbols_x64_rel.def +++ b/symbols_x64_rel.def
@@ -64,7 +64,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AEAAXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -553,7 +553,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPEAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EEBA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?DecodeFrom@ProtoField@log_internal@absl@@QEAA_NPEAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPEADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -576,9 +575,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?DestroyCordSlow@Cord@absl@@AEAAXXZ - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -761,7 +757,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHPEBXP6AXPEBDPEAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ @@ -868,7 +864,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QEBA_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EEBA_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NAEBVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NAEBVStatus@1@@Z @@ -961,7 +956,6 @@ ?Now@CycleClock@base_internal@absl@@SA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPEAUThreadIdentity@base_internal@2@@Z @@ -979,6 +973,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1190,7 +1185,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PEBV645@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QEAAXI@Z @@ -1299,6 +1294,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QEBAXXZ ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z
diff --git a/symbols_x64_rel_asan.def b/symbols_x64_rel_asan.def index 0d2e865..5bc4fe1 100644 --- a/symbols_x64_rel_asan.def +++ b/symbols_x64_rel_asan.def
@@ -67,7 +67,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AEAAXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -573,7 +573,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPEAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EEBA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?DecodeFrom@ProtoField@log_internal@absl@@QEAA_NPEAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPEADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -596,9 +595,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?DestroyCordSlow@Cord@absl@@AEAAXXZ - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -781,7 +777,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHPEBXP6AXPEBDPEAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ @@ -889,7 +885,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QEBA_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EEBA_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NAEBVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NAEBVStatus@1@@Z @@ -983,7 +978,6 @@ ?Now@CycleClock@base_internal@absl@@SA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPEAUThreadIdentity@base_internal@2@@Z @@ -1001,6 +995,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1215,7 +1210,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PEBV645@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QEAAXI@Z @@ -1324,6 +1319,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QEBAXXZ ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z
diff --git a/symbols_x64_rel_asan_cxx23.def b/symbols_x64_rel_asan_cxx23.def index 425a769..32cd40e 100644 --- a/symbols_x64_rel_asan_cxx23.def +++ b/symbols_x64_rel_asan_cxx23.def
@@ -67,7 +67,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AEAAXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -573,7 +573,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPEAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EEBA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?DecodeFrom@ProtoField@log_internal@absl@@QEAA_NPEAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPEADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -596,9 +595,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?DestroyCordSlow@Cord@absl@@AEAAXXZ - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -781,7 +777,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHPEBXP6AXPEBDPEAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ @@ -889,7 +885,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QEBA_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EEBA_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NAEBVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NAEBVStatus@1@@Z @@ -983,7 +978,6 @@ ?Now@CycleClock@base_internal@absl@@SA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPEAUThreadIdentity@base_internal@2@@Z @@ -1001,6 +995,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1215,7 +1210,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PEBV645@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QEAAXI@Z @@ -1324,6 +1319,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QEBAXXZ ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z
diff --git a/symbols_x64_rel_cxx23.def b/symbols_x64_rel_cxx23.def index b660851..e296995 100644 --- a/symbols_x64_rel_cxx23.def +++ b/symbols_x64_rel_cxx23.def
@@ -64,7 +64,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AEAAXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AEAAXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N1@Z + ??$DeallocateBackingArray@$07V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPEAX_KPEAW4ctrl_t@01@11_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -553,7 +553,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPEAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EEBA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@AEBAAEAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX1PEAW4ctrl_t@12@11_N1@Z2@Z ?DecodeFrom@ProtoField@log_internal@absl@@QEAA_NPEAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPEADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -576,9 +575,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?DestroyCordSlow@Cord@absl@@AEAAXXZ - ?DestroySlots@container_internal@absl@@YAXAEAVCommonFields@12@_KP6AXPEAX2@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z - ?DestructSoo@container_internal@absl@@YAXAEAVCommonFields@12@_K1P6AXPEAX2@ZP6AX21PEAW4ctrl_t@12@11_N1@Z2@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QEAA?AV?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QEBA_NPEBV123@@Z @@ -761,7 +757,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHPEBXP6AXPEBDPEAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ @@ -868,7 +864,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QEBA_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NAEBVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UEBA_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EEBA_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NAEBVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NAEBVStatus@1@@Z @@ -961,7 +956,6 @@ ?Now@CycleClock@base_internal@absl@@SA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPEAUThreadIdentity@base_internal@2@@Z @@ -979,6 +973,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAEADAEAPEBDQEBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAVDuration@1@@Z ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVDuration@1@PEAV234@@Z + ?ParseFlag@absl@@YA_NAEBV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PEAVTime@1@PEAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EEAA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAEAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1190,7 +1185,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PEBV645@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QEAAXI@Z @@ -1299,6 +1294,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QEBAXXZ ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z
diff --git a/symbols_x86_dbg.def b/symbols_x86_dbg.def index 9db4eff..4dfe4a8 100644 --- a/symbols_x86_dbg.def +++ b/symbols_x86_dbg.def
@@ -460,7 +460,7 @@ ??$CreateDefault@$0A@@CommonFields@container_internal@absl@@SA?AV012@XZ ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@II@Z ??$Deallocate@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAV?$allocator@D@__Cr@std@@PAXI@Z - ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_NI@Z + ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_N@Z ??$DecomposePair@U?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@container_internal@absl@@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_N$$QAU?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@01@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@U?$HashElement@UStringHash@container_internal@absl@@$00@container_internal@absl@@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YAI$$QAU?$HashElement@UStringHash@container_internal@absl@@$00@01@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@UEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@U?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA?AU?$pair@Viterator@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@_N@__Cr@std@@$$QAUEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@01@$$QAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@34@@Z @@ -2033,7 +2033,6 @@ ??0Clock@absl@@QAE@XZ ??0CommandLineFlag@absl@@QAE@XZ ??0CommonFields@container_internal@absl@@QAE@Unon_soo_tag_t@12@@Z - ??0CommonFields@container_internal@absl@@QAE@Unon_soo_tag_t@12@ABV012@@Z ??0CommonFields@container_internal@absl@@QAE@Usoo_tag_t@12@@Z ??0Condition@absl@@QAE@P6A_NPAX@Z0@Z ??0Condition@absl@@QAE@PB_N@Z @@ -2135,7 +2134,7 @@ ??0PrefixCrc@CrcCordState@crc_internal@absl@@QAE@XZ ??0ProtoField@log_internal@absl@@QAE@XZ ??0Randen@random_internal@absl@@QAE@XZ - ??0RawHashSetLayout@container_internal@absl@@QAE@III_NI@Z + ??0RawHashSetLayout@container_internal@absl@@QAE@III_N@Z ??0ReaderMutexLock@absl@@QAE@AAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QAE@XZ ??0RefcountedRep@CrcCordState@crc_internal@absl@@QAE@XZ @@ -3175,7 +3174,6 @@ ?Data@CordRepFlat@cord_internal@absl@@QAEPADXZ ?Data@CordRepFlat@cord_internal@absl@@QBEPBDXZ ?DataGuard@FlagImpl@flags_internal@absl@@ABEAAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAXIPAW4ctrl_t@12@II_NI@Z1@Z ?Deallocate@?$MallocAdapter@V?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@PAPAUCordRep@cord_internal@3@I@Z ?Deallocate@?$MallocAdapter@V?$allocator@PAVLogSink@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@PAVLogSink@absl@@@__Cr@std@@PAPAVLogSink@3@I@Z ?Deallocate@?$MallocAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PAUPayload@status_internal@3@I@Z @@ -3195,6 +3193,7 @@ ?DecrementSynchSem@Mutex@absl@@CA_NPAV12@PAUPerThreadSynch@base_internal@2@VKernelTimeout@synchronization_internal@2@@Z ?DeduceUsageFlags@flags_internal@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@0@Z ?DefaultArena@LowLevelAlloc@base_internal@absl@@SAPAUArena@123@XZ + ?DefaultCapacity@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAIXZ ?DefaultIterControl@container_internal@absl@@YAPAW4ctrl_t@12@XZ ?DefaultKind@FlagImpl@flags_internal@absl@@ABE?AW4FlagDefaultKind@23@XZ ?DefaultStackUnwinder@absl@@YAHPAPAXPAHHHPBX1@Z @@ -3221,9 +3220,6 @@ ?DestroyElements@?$DestroyAdapter@V?$allocator@PAVLogSink@absl@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAAV?$allocator@PAVLogSink@absl@@@__Cr@std@@PAPAVLogSink@3@I@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PAUPayload@status_internal@3@I@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAAV?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@PAVsource_location@56@I@Z - ?DestroySlots@container_internal@absl@@YAXAAVCommonFields@12@IP6AXPAX1@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z - ?DestructSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QAE?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QBE_NPBV123@@Z @@ -3503,7 +3499,7 @@ ?GetCharacter@CordRepBtree@cord_internal@absl@@QBEDI@Z ?GetCond@WinHelper@Win32Waiter@synchronization_internal@absl@@SAPAU_RTL_CONDITION_VARIABLE@@PAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QBE?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEAAPAPAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PAVLogSink@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEAAPAPAVLogSink@3@XZ @@ -3701,7 +3697,6 @@ ?IsAlreadyExists@absl@@YA_NABVStatus@1@@Z ?IsBtree@CordRep@cord_internal@absl@@QBE_NXZ ?IsCancelled@absl@@YA_NABVStatus@1@@Z - ?IsCapacityValidForBlockedElements@container_internal@absl@@YA_NI@Z ?IsCooperative@SpinLock@base_internal@absl@@CA_NW4SchedulingMode@23@@Z ?IsCordBtreeExhaustiveValidationEnabled@cord_internal@absl@@YA_NXZ ?IsCrc@CordRep@cord_internal@absl@@QBE_NXZ @@ -3738,7 +3733,6 @@ ?IsReentrance@?$HashtableCapacityImpl@$00@container_internal@absl@@QBE_NXZ ?IsResourceExhausted@absl@@YA_NABVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UBE_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSame@InlineRep@Cord@absl@@QBE_NABV123@@Z ?IsSampled@HashtablezInfoHandle@container_internal@absl@@QBE_NXZ ?IsSmallCapacity@container_internal@absl@@YA_NI@Z @@ -3832,7 +3826,6 @@ ?MaskNonFull@GroupSse2Impl@container_internal@absl@@QBE@XZ ?Match@GroupSse2Impl@container_internal@absl@@QBE?AV?$BitMask@I$0BA@$0A@$0A@@23@E@Z ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@ABE_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z - ?MaxCapacityWithBlockedElements@container_internal@absl@@YAIXZ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SAIXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxSmallCapacity@container_internal@absl@@YAIXZ @@ -3908,7 +3901,6 @@ ?NumCPUs@base_internal@absl@@YAHXZ ?NumChunks@CrcCordState@crc_internal@absl@@QBEIXZ ?NumClonedBytes@container_internal@absl@@YAIXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumControlBytes@container_internal@absl@@YAII@Z ?NumGenerationBytes@container_internal@absl@@YAIXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ @@ -3940,6 +3932,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAADAAPBDQBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVDuration@1@@Z ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVDuration@1@PAV234@@Z + ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVTime@1@PAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -4283,7 +4276,7 @@ ?SubtractSize@?$Storage@PAUCordRep@cord_internal@absl@@$01V?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEXI@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEXI@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPBXPADH@Z ?TagToAllocatedSize@cord_internal@absl@@YAIE@Z @@ -4438,6 +4431,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QAUCordRep@cord_internal@absl@@@3@@Z ?Unref@CrcCordState@crc_internal@absl@@CAXPAURefcountedRep@123@@Z @@ -5024,7 +5018,6 @@ ?begin@CordRepBtree@cord_internal@absl@@QBEIXZ ?begin@Storage@?$FixedArray@D$0PPPPPPPP@V?$allocator@D@__Cr@std@@@absl@@QBEPADXZ ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@__Cr@std@@@__Cr@std@@QBE?AU1234@XZ - ?blocked_element_count@CommonFields@container_internal@absl@@QBEIXZ ?btree@CordRep@cord_internal@absl@@QAEPAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QBEPBVCordRepBtree@23@XZ ?btree@CordRepBtreeNavigator@cord_internal@absl@@QBEPAVCordRepBtree@23@XZ @@ -5170,6 +5163,7 @@ ?days_per_century@impl@detail@cctz@time_internal@absl@@YAHH@Z ?days_per_month@impl@detail@cctz@time_internal@absl@@YAH_JC@Z ?days_per_year@impl@detail@cctz@time_internal@absl@@YAH_JC@Z + ?dealloc@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AAEXXZ ?deallocate@?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@23@I@Z ?deallocate@?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@23@I@Z @@ -5406,7 +5400,6 @@ ?get@PlacementImpl@?$NoDestructor@VFlagRegistry@flags_internal@absl@@@absl@@QAEPAVFlagRegistry@flags_internal@3@XZ ?get@PlacementImpl@?$NoDestructor@VMutex@absl@@@absl@@QAEPAVMutex@3@XZ ?get_cordz_mean_interval@cord_internal@absl@@YAHXZ - ?get_dealloc_backing_array_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPAXIPAW4ctrl_t@23@II_NI@ZXZ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QAEAAV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QBEABV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QAEAAV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ @@ -5423,7 +5416,6 @@ ?get_deleter@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QAEAAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@VTimeZoneLibC@cctz@time_internal@absl@@U?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QAEAAU?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@XUDynValueDeleter@flags_internal@absl@@@__Cr@std@@QAEAAUDynValueDeleter@flags_internal@absl@@XZ - ?get_destroy_slot_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPAX0@ZXZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QBEHXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QAEPAXXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QBEPBXXZ @@ -5461,6 +5453,7 @@ ?index@?$__base@$0A@V?$variant@_K_JIH_N@__Cr@std@@V?$variant@_K_JN@23@V?$Span@$$CBD@absl@@V?$variant@IHM@23@@__variant_detail@__Cr@std@@QBEIXZ ?index@?$probe_seq@$0BA@@container_internal@absl@@QBEIXZ ?index@CordRepBtree@cord_internal@absl@@QBEIW4EdgeType@123@@Z + ?infoz@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AAE?AVHashtablezInfoHandle@23@XZ ?infoz@CommonFields@container_internal@absl@@QAE?AVHashtablezInfoHandle@23@XZ ?infoz_ptr@CommonFields@container_internal@absl@@QBEPAVHashtablezInfoHandle@23@XZ ?inline_size@InlineData@cord_internal@absl@@QBEIXZ
diff --git a/symbols_x86_dbg_cxx23.def b/symbols_x86_dbg_cxx23.def index 9f6d3bb..97817a6 100644 --- a/symbols_x86_dbg_cxx23.def +++ b/symbols_x86_dbg_cxx23.def
@@ -460,7 +460,7 @@ ??$CreateDefault@$0A@@CommonFields@container_internal@absl@@SA?AV012@XZ ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@II@Z ??$Deallocate@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAV?$allocator@D@__Cr@std@@PAXI@Z - ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_NI@Z + ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_N@Z ??$DecomposePair@U?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@container_internal@absl@@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA_N$$QAU?$EqualElement@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@UStringEq@container_internal@absl@@@01@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@U?$HashElement@UStringHash@container_internal@absl@@$00@container_internal@absl@@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YAI$$QAU?$HashElement@UStringHash@container_internal@absl@@$00@01@AAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@Z ??$DecomposePair@UEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@U?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@__Cr@std@@@container_internal@absl@@YA?AU?$pair@Viterator@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@_N@__Cr@std@@$$QAUEmplaceDecomposable@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@01@$$QAU?$pair@$$CBV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@34@@Z @@ -2046,7 +2046,6 @@ ??0Clock@absl@@QAE@XZ ??0CommandLineFlag@absl@@QAE@XZ ??0CommonFields@container_internal@absl@@QAE@Unon_soo_tag_t@12@@Z - ??0CommonFields@container_internal@absl@@QAE@Unon_soo_tag_t@12@ABV012@@Z ??0CommonFields@container_internal@absl@@QAE@Usoo_tag_t@12@@Z ??0Condition@absl@@QAE@P6A_NPAX@Z0@Z ??0Condition@absl@@QAE@PB_N@Z @@ -2148,7 +2147,7 @@ ??0PrefixCrc@CrcCordState@crc_internal@absl@@QAE@XZ ??0ProtoField@log_internal@absl@@QAE@XZ ??0Randen@random_internal@absl@@QAE@XZ - ??0RawHashSetLayout@container_internal@absl@@QAE@III_NI@Z + ??0RawHashSetLayout@container_internal@absl@@QAE@III_N@Z ??0ReaderMutexLock@absl@@QAE@AAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QAE@XZ ??0RefcountedRep@CrcCordState@crc_internal@absl@@QAE@XZ @@ -3188,7 +3187,6 @@ ?Data@CordRepFlat@cord_internal@absl@@QAEPADXZ ?Data@CordRepFlat@cord_internal@absl@@QBEPBDXZ ?DataGuard@FlagImpl@flags_internal@absl@@ABEAAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAXIPAW4ctrl_t@12@II_NI@Z1@Z ?Deallocate@?$MallocAdapter@V?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@PAPAUCordRep@cord_internal@3@I@Z ?Deallocate@?$MallocAdapter@V?$allocator@PAVLogSink@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@PAVLogSink@absl@@@__Cr@std@@PAPAVLogSink@3@I@Z ?Deallocate@?$MallocAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PAUPayload@status_internal@3@I@Z @@ -3208,6 +3206,7 @@ ?DecrementSynchSem@Mutex@absl@@CA_NPAV12@PAUPerThreadSynch@base_internal@2@VKernelTimeout@synchronization_internal@2@@Z ?DeduceUsageFlags@flags_internal@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@0@Z ?DefaultArena@LowLevelAlloc@base_internal@absl@@SAPAUArena@123@XZ + ?DefaultCapacity@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAIXZ ?DefaultIterControl@container_internal@absl@@YAPAW4ctrl_t@12@XZ ?DefaultKind@FlagImpl@flags_internal@absl@@ABE?AW4FlagDefaultKind@23@XZ ?DefaultStackUnwinder@absl@@YAHPAPAXPAHHHPBX1@Z @@ -3234,9 +3233,6 @@ ?DestroyElements@?$DestroyAdapter@V?$allocator@PAVLogSink@absl@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAAV?$allocator@PAVLogSink@absl@@@__Cr@std@@PAPAVLogSink@3@I@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@$0A@@inlined_vector_internal@absl@@SAXAAV?$allocator@UPayload@status_internal@absl@@@__Cr@std@@PAUPayload@status_internal@3@I@Z ?DestroyElements@?$DestroyAdapter@V?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@$00@inlined_vector_internal@absl@@SAXAAV?$allocator@Vsource_location@__Cr@std@@@__Cr@std@@PAVsource_location@56@I@Z - ?DestroySlots@container_internal@absl@@YAXAAVCommonFields@12@IP6AXPAX1@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z - ?DestructSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QAE?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QBE_NPBV123@@Z @@ -3516,7 +3512,7 @@ ?GetCharacter@CordRepBtree@cord_internal@absl@@QBEDI@Z ?GetCond@WinHelper@Win32Waiter@synchronization_internal@absl@@SAPAU_RTL_CONDITION_VARIABLE@@PAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QBE?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEAAPAPAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PAVLogSink@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEAAPAPAVLogSink@3@XZ @@ -3713,7 +3709,6 @@ ?IsAlreadyExists@absl@@YA_NABVStatus@1@@Z ?IsBtree@CordRep@cord_internal@absl@@QBE_NXZ ?IsCancelled@absl@@YA_NABVStatus@1@@Z - ?IsCapacityValidForBlockedElements@container_internal@absl@@YA_NI@Z ?IsCooperative@SpinLock@base_internal@absl@@CA_NW4SchedulingMode@23@@Z ?IsCordBtreeExhaustiveValidationEnabled@cord_internal@absl@@YA_NXZ ?IsCrc@CordRep@cord_internal@absl@@QBE_NXZ @@ -3750,7 +3745,6 @@ ?IsReentrance@?$HashtableCapacityImpl@$00@container_internal@absl@@QBE_NXZ ?IsResourceExhausted@absl@@YA_NABVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UBE_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSame@InlineRep@Cord@absl@@QBE_NABV123@@Z ?IsSampled@HashtablezInfoHandle@container_internal@absl@@QBE_NXZ ?IsSmallCapacity@container_internal@absl@@YA_NI@Z @@ -3844,7 +3838,6 @@ ?MaskNonFull@GroupSse2Impl@container_internal@absl@@QBE@XZ ?Match@GroupSse2Impl@container_internal@absl@@QBE?AV?$BitMask@I$0BA@$0A@$0A@@23@E@Z ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@ABE_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z - ?MaxCapacityWithBlockedElements@container_internal@absl@@YAIXZ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SAIXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxSmallCapacity@container_internal@absl@@YAIXZ @@ -3920,7 +3913,6 @@ ?NumCPUs@base_internal@absl@@YAHXZ ?NumChunks@CrcCordState@crc_internal@absl@@QBEIXZ ?NumClonedBytes@container_internal@absl@@YAIXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumControlBytes@container_internal@absl@@YAII@Z ?NumGenerationBytes@container_internal@absl@@YAIXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ @@ -3952,6 +3944,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAADAAPBDQBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVDuration@1@@Z ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVDuration@1@PAV234@@Z + ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVTime@1@PAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -4295,7 +4288,7 @@ ?SubtractSize@?$Storage@PAUCordRep@cord_internal@absl@@$01V?$allocator@PAUCordRep@cord_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEXI@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@QAEXI@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPBXPADH@Z ?TagToAllocatedSize@cord_internal@absl@@YAIE@Z @@ -4450,6 +4443,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QAUCordRep@cord_internal@absl@@@3@@Z ?Unref@CrcCordState@crc_internal@absl@@CAXPAURefcountedRep@123@@Z @@ -5049,7 +5043,6 @@ ?begin@CordRepBtree@cord_internal@absl@@QBEIXZ ?begin@Storage@?$FixedArray@D$0PPPPPPPP@V?$allocator@D@__Cr@std@@@absl@@QBEPADXZ ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@__Cr@std@@@__Cr@std@@QBE?AU1234@XZ - ?blocked_element_count@CommonFields@container_internal@absl@@QBEIXZ ?btree@CordRep@cord_internal@absl@@QAEPAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QBEPBVCordRepBtree@23@XZ ?btree@CordRepBtreeNavigator@cord_internal@absl@@QBEPAVCordRepBtree@23@XZ @@ -5195,6 +5188,7 @@ ?days_per_century@impl@detail@cctz@time_internal@absl@@YAHH@Z ?days_per_month@impl@detail@cctz@time_internal@absl@@YAH_JC@Z ?days_per_year@impl@detail@cctz@time_internal@absl@@YAH_JC@Z + ?dealloc@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AAEXXZ ?deallocate@?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@23@I@Z ?deallocate@?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@23@I@Z @@ -5431,7 +5425,6 @@ ?get@PlacementImpl@?$NoDestructor@VFlagRegistry@flags_internal@absl@@@absl@@QAEPAVFlagRegistry@flags_internal@3@XZ ?get@PlacementImpl@?$NoDestructor@VMutex@absl@@@absl@@QAEPAVMutex@3@XZ ?get_cordz_mean_interval@cord_internal@absl@@YAHXZ - ?get_dealloc_backing_array_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPAXIPAW4ctrl_t@23@II_NI@ZXZ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QAEAAV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QBEABV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@PBUCordRep@cord_internal@absl@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@@__Cr@std@@QAEAAV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@__Cr@std@@PAX@__Cr@std@@@__Cr@std@@@__Cr@std@@@23@XZ @@ -5448,7 +5441,6 @@ ?get_deleter@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QAEAAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@VTimeZoneLibC@cctz@time_internal@absl@@U?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@__Cr@std@@@__Cr@std@@QAEAAU?$default_delete@VTimeZoneLibC@cctz@time_internal@absl@@@23@XZ ?get_deleter@?$unique_ptr@XUDynValueDeleter@flags_internal@absl@@@__Cr@std@@QAEAAUDynValueDeleter@flags_internal@absl@@XZ - ?get_destroy_slot_fn@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@CAP6AXPAX0@ZXZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QBEHXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QAEPAXXZ ?get_soo_data@HeapOrSoo@container_internal@absl@@QBEPBXXZ @@ -5486,6 +5478,7 @@ ?index@?$__base@$0A@V?$variant@_K_JIH_N@__Cr@std@@V?$variant@_K_JN@23@V?$Span@$$CBD@absl@@V?$variant@IHM@23@@__variant_detail@__Cr@std@@QBEIXZ ?index@?$probe_seq@$0BA@@container_internal@absl@@QBEIXZ ?index@CordRepBtree@cord_internal@absl@@QBEIW4EdgeType@123@@Z + ?infoz@?$raw_hash_set@U?$FlatHashMapPolicy@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVCommandLineFlag@absl@@@container_internal@absl@@$$V@container_internal@absl@@AAE?AVHashtablezInfoHandle@23@XZ ?infoz@CommonFields@container_internal@absl@@QAE?AVHashtablezInfoHandle@23@XZ ?infoz_ptr@CommonFields@container_internal@absl@@QBEPAVHashtablezInfoHandle@23@XZ ?inline_size@InlineData@cord_internal@absl@@QBEIXZ
diff --git a/symbols_x86_rel.def b/symbols_x86_rel.def index fb8424c..c669c42 100644 --- a/symbols_x86_rel.def +++ b/symbols_x86_rel.def
@@ -64,7 +64,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AAEXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AAEXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AAEXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_NI@Z + ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z @@ -551,7 +551,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EBE?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@ABEAAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAXIPAW4ctrl_t@12@II_NI@Z1@Z ?DecodeFrom@ProtoField@log_internal@absl@@QAE_NPAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -574,9 +573,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AAEXXZ ?DestroyCordSlow@Cord@absl@@AAEXXZ - ?DestroySlots@container_internal@absl@@YAXAAVCommonFields@12@IP6AXPAX1@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z - ?DestructSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QAE?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QBE_NPBV123@@Z @@ -759,7 +755,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QBEDI@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QBE?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQBQAXHPBXP6AXPBDPAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQBQAXHP6AXPBDPAX@Z2@ZXZ @@ -866,7 +862,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QBE_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NABVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UBE_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EBE_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NABVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NABVStatus@1@@Z @@ -960,7 +955,6 @@ ?Now@UnscaledCycleClock@base_internal@absl@@CA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPAUThreadIdentity@base_internal@2@@Z @@ -978,6 +972,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAADAAPBDQBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVDuration@1@@Z ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVDuration@1@PAV234@@Z + ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVTime@1@PAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1191,7 +1186,7 @@ ?Subcord@Cord@absl@@QBE?AV12@II@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PBV645@I@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPBXPADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QAEXI@Z @@ -1300,6 +1295,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QBEXXZ ?UnrefTree@InlineRep@Cord@absl@@AAEXXZ ?UnsampleSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@@Z
diff --git a/symbols_x86_rel_cxx23.def b/symbols_x86_rel_cxx23.def index a3f313d..a9d2db1 100644 --- a/symbols_x86_rel_cxx23.def +++ b/symbols_x86_rel_cxx23.def
@@ -64,7 +64,7 @@ ??$CopyToEncodedBuffer@$0A@@LogMessage@log_internal@absl@@AAEXV?$basic_string_view@_WU?$char_traits@_W@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$00@LogMessage@log_internal@absl@@AAEXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z ??$CopyToEncodedBufferWithStructuredProtoField@$0A@@LogMessage@log_internal@absl@@AAEXUStructuredProtoField@12@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@@Z - ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_NI@Z + ??$DeallocateBackingArray@$03V?$allocator@D@__Cr@std@@@container_internal@absl@@YAXPAXIPAW4ctrl_t@01@II_N@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z @@ -551,7 +551,6 @@ ?CurrentThreadIdentityIfPresent@base_internal@absl@@YAPAUThreadIdentity@12@XZ ?CurrentValue@FlagImpl@flags_internal@absl@@EBE?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@XZ ?DataGuard@FlagImpl@flags_internal@absl@@ABEAAVMutex@3@XZ - ?DeallocBackingArray@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAXIPAW4ctrl_t@12@II_NI@Z1@Z ?DecodeFrom@ProtoField@log_internal@absl@@QAE_NPAV?$Span@$$CBD@3@@Z ?DecodeRustPunycode@debugging_internal@absl@@YAPADUDecodeRustPunycodeOptions@12@@Z ?DecodeWaitCycles@SpinLock@base_internal@absl@@KA_JI@Z @@ -574,9 +573,6 @@ ?Destroy@StatusBuilder@absl@@CAXV?$unique_ptr@URep@StatusBuilder@absl@@U?$default_delete@URep@StatusBuilder@absl@@@__Cr@std@@@__Cr@std@@@Z ?DestroyContents@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@__Cr@std@@@inlined_vector_internal@absl@@AAEXXZ ?DestroyCordSlow@Cord@absl@@AAEXXZ - ?DestroySlots@container_internal@absl@@YAXAAVCommonFields@12@IP6AXPAX1@Z@Z - ?DestructNonSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z - ?DestructSoo@container_internal@absl@@YAXAAVCommonFields@12@IIP6AXPAX1@ZP6AX1IPAW4ctrl_t@12@II_NI@Z1@Z ?DiagnosticsGetDeleteQueue@CordzHandle@cord_internal@absl@@SA?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsGetSafeToInspectDeletedHandles@CordzHandle@cord_internal@absl@@QAE?AV?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@__Cr@std@@@__Cr@std@@XZ ?DiagnosticsHandleIsSafeToInspect@CordzHandle@cord_internal@absl@@QBE_NPBV123@@Z @@ -759,7 +755,7 @@ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QBEDI@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QBE?AUCordzStatistics@23@XZ - ?GetCpuType@base_internal@absl@@YA?AW4CpuType@12@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQBQAXHPBXP6AXPBDPAX@Z3@ZXZ ?GetDebugStackTraceHookLegacy@debugging_internal@absl@@YAP6AXQBQAXHP6AXPBDPAX@Z2@ZXZ @@ -866,7 +862,6 @@ ?IsReachable@GraphCycles@synchronization_internal@absl@@QBE_NUGraphId@23@0@Z ?IsResourceExhausted@absl@@YA_NABVStatus@1@@Z ?IsRetired@CommandLineFlag@absl@@UBE_NXZ - ?IsSMTEnabled@base_internal@absl@@YA_NXZ ?IsSpecifiedOnCommandLine@FlagImpl@flags_internal@absl@@EBE_NXZ ?IsSpecifiedOnCommandLine@PrivateHandleAccessor@flags_internal@absl@@SA_NABVCommandLineFlag@3@@Z ?IsUnauthenticated@absl@@YA_NABVStatus@1@@Z @@ -960,7 +955,6 @@ ?Now@UnscaledCycleClock@base_internal@absl@@CA_JXZ ?Now@absl@@YA?AVTime@1@XZ ?NumCPUs@base_internal@absl@@YAHXZ - ?NumContextsPerCPU@base_internal@absl@@YAHXZ ?NumLeakedFlagValues@flags_internal@absl@@YA_KXZ ?OnVLogVerbosityUpdate@log_internal@absl@@YAXV?$function@$$A6AXXZ@__Cr@std@@@Z ?OneTimeInitThreadIdentity@synchronization_internal@absl@@YAXPAUThreadIdentity@base_internal@2@@Z @@ -978,6 +972,7 @@ ?ParseDigits@str_format_internal@absl@@YAHAADAAPBDQBD@Z ?ParseDuration@absl@@YA_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAVDuration@1@@Z ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVDuration@1@PAV234@@Z + ?ParseFlag@absl@@YA_NABV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@PAVTime@1@PAV234@@Z ?ParseFrom@CommandLineFlag@absl@@QAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@PAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@45@@Z ?ParseFrom@FlagImpl@flags_internal@absl@@EAE_NV?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@56@@Z ?ParseFrom@PrivateHandleAccessor@flags_internal@absl@@SA_NAAVCommandLineFlag@3@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@__Cr@std@@W4FlagSettingMode@23@W4ValueSource@23@AAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@67@@Z @@ -1191,7 +1186,7 @@ ?Subcord@Cord@absl@@QBE?AV12@II@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPAV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@V?$basic_string_view@DU?$char_traits@D@__Cr@std@@@45@PBV645@I@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z - ?SupportsArmCRC32PMULL@base_internal@absl@@YA_NXZ + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPBXPADH@Z ?TestOnlyAddNodes@GraphCycles@synchronization_internal@absl@@QAEXI@Z @@ -1300,6 +1295,7 @@ ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_K@Z ?Unparse@flags_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@_N@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VDuration@1@@Z + ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@__Cr@std@@V?$allocator@D@23@@__Cr@std@@VTime@1@@Z ?Unref@StatusRep@status_internal@absl@@QBEXXZ ?UnrefTree@InlineRep@Cord@absl@@AAEXXZ ?UnsampleSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@@Z