summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Add a pragma to disable a maybe-uninitialized warning for GCC12+Gravatar Abseil Team2023-12-19
| | | | | PiperOrigin-RevId: 592301543 Change-Id: I97e4df805c7313896228430a50a7f991127f3e30
* Refactor `EraseMetaOnly` to speed up single group tables.Gravatar Abseil Team2023-12-19
| | | | | PiperOrigin-RevId: 592272653 Change-Id: I895c5786555227bdc88ab0a4cce8cf5ba65222a1
* Update the CI builds that use the latest compiler versions toGravatar Derek Mauro2023-12-19
| | | | | | | | | use Bazel 7.0.0. CMake is also updated to 3.28.1 PiperOrigin-RevId: 592263272 Change-Id: I4daccdad4bceb483b0400328baebc79591990328
* Mutex: Prevent false race in EnableInvariantDebugging.Gravatar Dmitry Vyukov2023-12-19
| | | | | | | | | | | | | | The added test exposes a false TSan race report in EnableInvariantDebugging/EnableDebugLog related to SynchEvent reuse. We ignore most of the stuff that happens inside of the Mutex code, but not for the code inside of EnableInvariantDebugging/EnableDebugLog. So these can cause occasional false reports on SynchEvent bankruptcy. Also ignore accesses in EnableInvariantDebugging/EnableDebugLog. PiperOrigin-RevId: 592226791 Change-Id: I066edb1ef5661ba6cf86a195f91a9d5328b93d10
* Add the `BM_EraseEmplace` benchmark that constantly adds and removes the ↵Gravatar Abseil Team2023-12-18
| | | | | | | same element. PiperOrigin-RevId: 591987002 Change-Id: Ic1ed2063aeb95a6e814eefcbed024e1a5a1d8d2f
* Mutex: Fix Condition pointer-to-member cast to respect const qualifierGravatar Abseil Team2023-12-18
| | | | | | | | | | | | | | | | Previously, `absl::Condition` incorrectly used the same (non-`const`) pointer-to-method type when wrapping both `const` and non-`const` methods. Unfortunately, this is undefined behavior according to `[expr.reinterpret.cast]` in the C++ standard: > The effect of calling a function through a pointer to a function type that is > not the same as the type used in the definition of the function is undefined. This fixes the UB. PiperOrigin-RevId: 591981682 Change-Id: Iaca955346699417232383d3a1800ea9b82ea5761
* Cleanup build file by removing an empty srcs listGravatar Derek Mauro2023-12-18
| | | | | PiperOrigin-RevId: 591928115 Change-Id: I55de0886d3ce2d58cc1c94a15ce0f3eefc5eeaaf
* Add a pragma to disable a stringop-overflow warning for GCC12+Gravatar Abseil Team2023-12-18
| | | | | PiperOrigin-RevId: 591894838 Change-Id: Ib3fe72d255f49320e2728c210ba1faabc81e0ef8
* Remove nullability from Span::{pointer,iterator}Gravatar Sam McCall2023-12-15
| | | | | | | | | | | | These are in some sense correct (begin()/end() can be null for empty spans), but don't capture the critical contract that begin() is only null when end() is. This leads to foreach loops over spans being considered unsafe. Long-term we may want to express such constraints somehow, but for now giving these pointers unknown nullability is the best we can do. PiperOrigin-RevId: 591191038 Change-Id: I1f02e068a445c0ca5996a9212477b64393ef4161
* Roll back changes to AsciiStrToUpper() and AsciiStrToLower() due to bug report.Gravatar Abseil Team2023-12-14
| | | | | PiperOrigin-RevId: 591161019 Change-Id: Iae2477a24819e20288fbb83b4a343031af71f1bb
* Performance improvement for absl::AsciiStrToUpper() and absl::AsciiStrToLower()Gravatar Abseil Team2023-12-14
| | | | | PiperOrigin-RevId: 591015112 Change-Id: I3e654433f0b0a4ea02ee10e0894e70738e730782
* Redirect `GetPageSize()` to C library `getpagesize()` on Hexagon DSP.Gravatar Abseil Team2023-12-13
| | | | | PiperOrigin-RevId: 590669848 Change-Id: Ibc703b0fbedede86ddaa9682049b7dcc2250fbfb
* Add `ostream<<` and `AbslStringify` to `absl::StatusOr`.Gravatar Zie Weaver2023-12-13
| | | | | | | | These methods will only be defined if they're defined for `T`. Additionally, we add jitter to the output to discourage people relying on the output format. PiperOrigin-RevId: 590598988 Change-Id: I4e7173b5f0c66fd3a1cdd3392944e20b8a26641f
* Unit-tests to verify ABSL raw_hash_set does not double-hash in prodGravatar Abseil Team2023-12-12
| | | | | PiperOrigin-RevId: 590337123 Change-Id: Ib98bbb5a5dadbce5e891567038e016f4da2efc0b
* Add `MaskFull` to `Group`.Gravatar Abseil Team2023-12-12
| | | | | | | | | It is not used at the moment. Usage is planned to be submitted separately. Useful for faster iterating over all slots in the internal functions. PiperOrigin-RevId: 590300049 Change-Id: I081f33113268761db868771d29796d94c24e4e7a
* `absl/utility`: Delete tests for C++11-compatible `integer_sequence` and friendsGravatar Dino Radakovic2023-12-11
| | | | | | | These used to be independent implementations. Now that they are aliases, maintaining tests doesn't make sense anymore. PiperOrigin-RevId: 589947915 Change-Id: I555496e3467d56a75468b180383482eee2e8f198
* `absl/utility`: Delete C++11-compatible `integer_sequence` and friendsGravatar Dino Radakovic2023-12-11
| | | | | | | | | | | Abseil does not support C++11 anymore: https://github.com/google/oss-policies-info/blob/b842c39db88e6569dfe2cf98be434b03507cb503/foundational-cxx-support-matrix.md NOTE: This is a breaking change because `std::integer_sequence<T>` requires `std::is_integral_v<T>`, but `absl::integer_sequence<T>` does not. Unit tests will be deleted in a follow-up. PiperOrigin-RevId: 589908215 Change-Id: I57a81e4451840304d5fba60bef286e81e024af9c
* Add nullability annotationsGravatar Dmitri Gribenko2023-12-11
| | | | | PiperOrigin-RevId: 589842893 Change-Id: I9657761d1f71c665582406f278c6605f6d382f6d
* Enable ABSL_HAVE_POSIX_WRITE for Hexagon DSP build.Gravatar Abseil Team2023-12-07
| | | | | PiperOrigin-RevId: 588893303 Change-Id: I3f9278f2f7f0bc4b8903a87cb4a740daf7349755
* Small table growth optimization.Gravatar Abseil Team2023-12-07
| | | | | | | | | Details: - In case the table entirely fits into a single group size (`capacity <= Group::kWidth`), the order of elements is not important. - For growing upto Group::kWidth we rotate control bytes and slots deterministically (using memcpy). - We also avoid second find_first_non_full right after resize for small growing. PiperOrigin-RevId: 588825966 Change-Id: I09bd7fd489e3868dcf56c36b436805d08dae7ab5
* Elide calls to MakeCheckOpString when ABSL_MIN_LOG_LEVEL makes them unnecessaryGravatar Abseil Team2023-12-07
| | | | | | | | Reduces final binary size by avoiding stream I/O and all its associated overhead. PiperOrigin-RevId: 588789394 Change-Id: Ib8653db77aee0dae45e44f4ac72fe7dd87aa2eba
* Fixing a comment to be correct with the current code.Gravatar Abseil Team2023-12-06
| | | | | PiperOrigin-RevId: 588530709 Change-Id: Iee28c7693a4802f11e13728e1c28febee8c8576f
* absl qualify HasAbslStringify in log_message.h.Gravatar Abseil Team2023-12-06
| | | | | | | This works around a Clang bug, https://github.com/llvm/llvm-project/issues/25168 PiperOrigin-RevId: 588491254 Change-Id: Ia59afae4df45474d6025a2ab1ca487b381c9ee66
* Remove a global destructor in vlog_config.ccGravatar Derek Mauro2023-12-06
| | | | | | | Chromium requires no global destructors. PiperOrigin-RevId: 588466793 Change-Id: Icd255d9fb37667b4f5ce4b2552b70fa53cbf6ecf
* Avoid leaking an unprefixed VLOG_IS_ON transitively though absl_log.hGravatar Derek Mauro2023-12-06
| | | | | | | | | | absl_log.h is supposed to be a mirror of log.h that only uses ABSL_ prefixed macros. This change adds ABSL_VLOG_IS_ON to absl_vlog_is_on.h and uses it in the implementation of VLOG. VLOG_IS_ON is then only exported though vlog_is_on.h. PiperOrigin-RevId: 588435577 Change-Id: Ifa9193afa0b782194b64447f4fedfaf24b72c95a
* Move vlog_config to the internal directory and change the namespace of VLogSiteGravatar Derek Mauro2023-12-06
| | | | | PiperOrigin-RevId: 588403935 Change-Id: I6a3af3c044b887ec65b19390d316cfb3ccdcc853
* Adds support for wchar_t/wchar_t*/std::wstring{_view} arguments to StrFormat().Gravatar Abseil Team2023-12-05
| | | | | | | This converts to UTF-8 regardless of locale. PiperOrigin-RevId: 588186076 Change-Id: I2c9598279b413d460e13ad65da2ba421c0b40b83
* Roll-forward: Honor ABSL_MIN_LOG_LEVEL in CHECK_XX, CHECK_STRXX, CHECK_OK, ↵Gravatar Andy Getzendanner2023-12-05
| | | | | | | | | | | and the QCHECK flavors of these. In particular, if ABSL_MIN_LOG_LEVEL exceeds kFatal, these should, upon failure, terminate the program without logging anything. The lack of logging should be visible to the optimizer so that it can strip string literals and stringified variable names from the object file. Making some edge cases work under Clang required rewriting NormalizeLogSeverity to help make constraints on its return value more obvious to the optimizer. PiperOrigin-RevId: 588181755 Change-Id: I95db3bae39f8dadb52a307ca3b80775db23de766
* Fix codegen trunks in `absl/hash/hash_benchmark.cc`.Gravatar Shahriar Rouf2023-12-05
| | | | | PiperOrigin-RevId: 588121665 Change-Id: Id057772e426aefe2fe7b2f1e94fd405b97167fed
* Make `absl::{partial,weak,strong}_ordering` aliases for the `std::` orderingGravatar Marcin Kowalczyk2023-12-05
| | | | | | | | | | | | types when they are available. This makes them interchangeable in contexts known to be compiled as C++20. This also makes `absl::` ordering types compatible with `<=>`, allowing to unconditionally use `absl::` spelling for types but conditionally use `<=>` when available. PiperOrigin-RevId: 588085408 Change-Id: I1aa5247f0e31acbb838ee76829b7a13c74b0a94f
* Add VLOG and friendsGravatar Derek Mauro2023-12-05
| | | | | | | These are methods for configurable verbose logging PiperOrigin-RevId: 588059727 Change-Id: Ib3703edd2493050a5da8b30e88b21adc643b1f7f
* Remove `absl::weak_equality` and `absl::strong_equality`.Gravatar Marcin Kowalczyk2023-12-04
| | | | | | | | | | | | | | | | | | | | The corresponding `std` types were removed before C++20 was finalized: https://wg21.link/P1959R0. They are unused. The language mechanisms and recommendations changed since they were originally proposed. In particular: * An explicitly defaulted `operator==` is defined in terms of memberwise `operator==` rather than sibling `operator<=>`. * An `operator!=` can be implicitly added to an overload set in terms of `operator==` rather than `operator<=>`. * A class which has equality but not ordering defined should provide `operator==` rather than `operator<=>`. PiperOrigin-RevId: 587834267 Change-Id: I2c2513c13f3485b9edc6a345dca4a577d8e65167
* Avoid #pragma intrinsic(_mm_prefetch) on Arm64EC (and other platformsGravatar Derek Mauro2023-11-28
| | | | | | | | | without SSE) Closes #1575 PiperOrigin-RevId: 586009018 Change-Id: Icc34c1201268303dde96bfbb067506b861754b3a
* `btree_map`: avoid a copy in `map_params::key`.Gravatar Abseil Team2023-11-28
| | | | | PiperOrigin-RevId: 585892739 Change-Id: I30490dac5826bff2a33d9872f71154d360f9cc0d
* Update documentation to reflect best practices (prefer brace initialization)Gravatar Abseil Team2023-11-27
| | | | | PiperOrigin-RevId: 585691325 Change-Id: Icd18dc0294dfd1e22f9878b628d5e5898fcc8185
* Avoid AbslHashValue for std::filesystem::path when <filesystem> is not includedGravatar Abseil Team2023-11-22
| | | | | PiperOrigin-RevId: 584675181 Change-Id: I78c9a29055327c84f1e78b8440221439839a041c
* Make `FlatHashMapPolicy` return `std::true_type` for relocatable objects.Gravatar Abseil Team2023-11-20
| | | | | | | This reduces produced binary size and can trigger even more optimizations in the future. PiperOrigin-RevId: 584136517 Change-Id: I3854833799f88f28b755ec53132925f0c3d468ab
* Respect libc++ config option for disable of filesystemGravatar Abseil Team2023-11-17
| | | | | | | - libc++ throws errors when filesystem is included when disabled PiperOrigin-RevId: 583474609 Change-Id: I205edc5c508f12b84244912f9acc47308a8ca540
* Provide AbslHashValue for std::filesystem::path in C++17Gravatar Derek Mauro2023-11-17
| | | | | | | | | | | | | | | | | | This is somewhat tricky to implement because path equality is not straightforward. See https://github.com/abseil/abseil-cpp/pull/1560#issuecomment-1799983471 for discussion. This re-lands 3bd86026c93da5a40006fd53403dff9d5f5e30e3 with a fix for iOS 13 unavailability of std::filesystem::path. Roll-forward of 524ebb7ea91d2955dc4c68c7e6fd2bed620621b5. Closes #655 Closes #1560 PiperOrigin-RevId: 583365100 Change-Id: Id49735c49d123e0cd6a620a2b5b5a12d94129f94
* Use absl::NoDestructor for global log sinks.Gravatar Abseil Team2023-11-16
| | | | | PiperOrigin-RevId: 583235586 Change-Id: Ia472b8d6530fd829fed1c07558e152975d9b24ac
* Rollback providing AbslHashValue for std::filesystem::path in C++17Gravatar Derek Mauro2023-11-16
| | | | | | | 'path' is unavailable: introduced in iOS 13.0 PiperOrigin-RevId: 583036562 Change-Id: I5aea530d03c3317896c3c15bcf7cb5f9d8bc466a
* Provide AbslHashValue for std::filesystem::path in C++17Gravatar Derek Mauro2023-11-15
| | | | | | | | | | | | | This is somewhat tricky to implement because path equality is not straightforward. See https://github.com/abseil/abseil-cpp/pull/1560#issuecomment-1799983471 for discussion. Closes #655 Closes #1560 PiperOrigin-RevId: 582863821 Change-Id: I03517a7f2003614c027c786abbfb91b6571ab662
* Use absl::NoDestructor for global FlagRegistry.Gravatar Abseil Team2023-11-15
| | | | | PiperOrigin-RevId: 582861689 Change-Id: Iac257539ab282e9bfdc6d90e86c8da0c0d57b9c9
* Speed-up absl::Symbolize by ~6x via faster file reads.Gravatar Abseil Team2023-11-15
| | | | | | | | | | | | | | | | | | | | absl::Symbolize does tons of tiny reads. Speed this up by switching from lseek+read to a pread, and by reading more data than requested into a buffer. A faster absl::Symbolize will be helpful in tests and when printing stack traces on /threadz etc. Results for absl::Symbolize benchmark that exercises uncached behavior of absl::Symbolize: ``` name old time/op new time/op delta BM_Symbolize 16.4ms ±12% 2.6ms ± 0% -84.06% (p=0.001 n=5+9) ``` PiperOrigin-RevId: 582687566 Change-Id: I44caf189d81867f3fd8c050a3100a4b9a8e744d7
* Fixed a very small typo in the Cord::empty() docstring.Gravatar Abseil Team2023-11-14
| | | | | PiperOrigin-RevId: 582455513 Change-Id: Ic78d14d6dd748420a64e7026ec7f8b967bebbf42
* Fix documentation on when SpinLock is async-signal-safeGravatar Abseil Team2023-11-14
| | | | | PiperOrigin-RevId: 582426024 Change-Id: Ic8650de4faff9688f4cb5529c1df9bc752878b5a
* Don't allow AbslHashValue() to take a C-style array parameter. TheGravatar Derek Mauro2023-11-14
| | | | | | | | | | | | | | | | | | | current behavior of decaying the array to a pointer and hashing the pointer can lead to subtle bugs. The most common potential error is passing a C-string literal. Hashing the char pointer in those cases is correct only if the string literals are guaranteed to be deduplicated, which is dangerous to rely on even if true (and the call sites in header files require deduplication across translation units). After this change, these call-sites requires wrapping the literal in absl::string_view. This is a breaking change for code doing something like absl::HashOf("string"); Instead, this should be changed to absl::HashOf(absl::string_view("string")); PiperOrigin-RevId: 582393585 Change-Id: I3810c07b5b74bf153cb62a7beedce243be5a69ee
* Support AbslStringify in absl Civil Time types.Gravatar Abseil Team2023-11-14
| | | | | PiperOrigin-RevId: 582342910 Change-Id: Iada5420867779ed352d8fb0695ff6d6044acfba2
* Partial roll forward of reentrant validation with the validation itself ↵Gravatar Evan Brown2023-11-13
| | | | | | | disabled. This will make it easier to roll back and forwards in the future (if needed) without causing merge conflicts in unrelated code. PiperOrigin-RevId: 582059046 Change-Id: I66dc6527e7a0b351367b7a391c2d653fe793143f
* Add new benchmark for integer `StrAppend`Gravatar Abseil Team2023-11-13
| | | | | PiperOrigin-RevId: 582033534 Change-Id: I9af42210f65b40ccd7f55c9a2e0c8387b69760dc