summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Update latest Linux container to unbreak KokoroGravatar Derek Mauro2023-02-17
| | | | | PiperOrigin-RevId: 510518832 Change-Id: I086c8f2e34312e2b0384b3c67b9c04814d41ddf0
* Synchronization: Add support for true relative timeouts usingGravatar Derek Mauro2023-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | monotonic clocks on Linux when the implementation uses futexes After this change, when synchronization methods that wait are passed an absl::Duration to limit the wait time, these methods will wait for that interval, even if the system clock is changed (subject to any limitations with how CLOCK_MONOTONIC keeps track of time). In other words, an observer measuring the time with a stop watch will now see the correct interval, even if the system clock is changed. Previously, the duration was added to the current time, and methods would wait until that time was reached on the possibly changed realtime system clock. The behavior of the synchronization methods that take an absl::Time is unchanged. These methods always wait until the absolute point in time is reached and respect changes to the system clock. In other words, an observer will always see the timeout occur when a wall clock reaches that time, even if the clock is manipulated externally. Note: ABSL_PREDICT_FALSE was removed from the error case in Futex as timeouts are handled by this case, and timeouts are part of normal operation. PiperOrigin-RevId: 510405347 Change-Id: I0b3ea390de97014cfa353079ae2e0c1c637aca69
* Add KernelTimeout methods that convert the timeout to theGravatar Derek Mauro2023-02-16
| | | | | | | | | | | | | | | std::chrono methods used by std::condition_variable. A followup change will add an implemention of synchronization_internal::Waiter that can use std:mutex/std::condition_variable to implement the per-thread semaphore that absl::Mutex waits on. This implementation may at some point become the default on platforms such as Windows where there doesn't seem to be an easy way of supporting real absolute timeouts. In this case we can defer to their standard library to implement correct support. PiperOrigin-RevId: 510204786 Change-Id: Icf4d695013fd060abbd53dae23e71ea36f731565
* std::shared_ptr<T>::unique() is deprecated in C++17 and removed in C++20.Gravatar Abseil Team2023-02-16
| | | | | | | Change to checking for use_count() >/== 1. PiperOrigin-RevId: 510125744 Change-Id: I572cca18c3f827f5d3eefb2ec19a1a014c0090ae
* KernelTimeout optimization: Use absl::GetCurrentTimeNanos()Gravatar Derek Mauro2023-02-15
| | | | | | | instead of absl::ToUnixNanos(absl::Now()); PiperOrigin-RevId: 509829866 Change-Id: Ib34362762304ad6eb7980a1227d717069b84f656
* Remove _m_prefetchw() in favor of supporting only _mm_prefetch() or ↵Gravatar Martijn Vels2023-02-14
| | | | | | | | | __builtin_prefetch() Supporting _m_prefetchw() (officially part of 3DNOW) across various compilers and platforms turns out to be difficult. This change removes the explicit _m_prefetchw call aimed at MSVC compilers given that it causes issues in clang / chromium compilations. PiperOrigin-RevId: 509632497 Change-Id: Ib1b6b2cf667cbc1af5ed6651cd9aa0294a9265b6
* Make default-constructed swisstable iterators use EmptyGroup() for ctrl_ so ↵Gravatar Evan Brown2023-02-14
| | | | | | | that we can distinguish between end() iterators and default-constructed iterators in debug mode. PiperOrigin-RevId: 509606271 Change-Id: I77b68590b3904a4cf7809b75d814d74cb89603b6
* Merge pull request #1387 from AtariDreams:patch-1Gravatar Copybara-Service2023-02-14
|\ | | | | | | | | PiperOrigin-RevId: 509581648 Change-Id: Ia60053f1172e0e64569e9555524812fc4788e24f
| * Remove Workarounds for Old Clang BugGravatar Rose2023-02-14
|/ | | | | | https://bugs.llvm.org/show_bug.cgi?id=38289 has been addressed since 2019. We just have to check to see if the clang being used to compile with is any version before major version 9.
* Merge pull request #1381 from trishvl:masterGravatar Copybara-Service2023-02-13
|\ | | | | | | | | PiperOrigin-RevId: 509299527 Change-Id: I2f9a801faf87f968f1625711a67d38a528f0740c
* | Fix absl/log:stripping_test when ABSL_MIN_LOG_LEVEL is definedGravatar Abseil Team2023-02-13
| | | | | | | | | | | | | | | | The test was getting tripped by EXPECT_DEATH_IF_SUPPORTED keeping a literal copy of the test statement. PiperOrigin-RevId: 509299343 Change-Id: I63da29d844cc630d750535fd4bb13a2895d32541
* | Fix missing constexpr on GetReferenceableValue overloadGravatar Abseil Team2023-02-13
| | | | | | | | | | PiperOrigin-RevId: 509236105 Change-Id: I635f521aff106875f06bb93c332d3e437d0ad409
* | Workaround MSan false positive.Gravatar Abseil Team2023-02-10
| | | | | | | | | | | | | | | | | | On Linux Kernels >= 5.4 MSan reports a false positive when accessing thread local storage data from loaded libraries. This was reported on Chromium (which on some build configurations uses absl as a dynamic library). More info here: crbug.com/1414573. PiperOrigin-RevId: 508645053 Change-Id: I5d5a97e1ee7230cc23f3934a4ec5594b883918b4
* | Rewrite KernelTimeout to support both absolute and relative timeoutsGravatar Derek Mauro2023-02-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | APIs that take KernelTimeout as a parameter can now query if an absolute or relative timeout was requested. If the underlying API can only use one type of timeout, the code will do a reasonable conversion. The goal is to eventually enable the possibility of using wait times that are based on monotonic clocks that are safe against system clock steps. PiperOrigin-RevId: 508541507 Change-Id: Id08bf13515f3e1bfd78d88393cde98a6fd3ef72c
* | In sanitizer mode, detect when end iterators from different swisstables are ↵Gravatar Evan Brown2023-02-09
| | | | | | | | | | | | | | | | | | compared. We change AssertSameContainer to be after AssertIsValidForComparison calls so that we can have more specific failure messages. PiperOrigin-RevId: 508472485 Change-Id: Iff2f7512086948a4aca7fd403596e8d4fde53b2a
* | Add overrides to other functions which call Waiter::GetWaiterGravatar Abseil Team2023-02-08
| | | | | | | | | | PiperOrigin-RevId: 508124592 Change-Id: Ib183e6e241c81b2760e7f849f8af8e7e2c30ea42
* | Change implementation of OnlyLiteralZero to only fail if the second overload ↵Gravatar Abseil Team2023-02-08
| | | | | | | | | | | | | | is chosen, not in overload resolution. PiperOrigin-RevId: 508031321 Change-Id: I6981371fbc6498047babe3468f3343090f8bda47
* | Don't assume that AVX implies PCLMULQDQ when using LLVM on Windows.Gravatar Saran Tunyasuvunakool2023-02-07
| | | | | | | | | | PiperOrigin-RevId: 507790741 Change-Id: I347357f9a2d698510f29b7d1b065ef73f9289292
* | Fix a discrepancy between absl::Hash and absl::HashOf for some negative ↵Gravatar Abseil Team2023-02-06
| | | | | | | | | | | | | | signed integral types and improve the performance of absl::Hash. PiperOrigin-RevId: 507598042 Change-Id: I96a7bd6b9c360f435f216b2671ae84d9768a46e8
| * Solving issue with implied SSE when running ARM64ECGravatar Trish Lam2023-02-06
|/
* `PrefetchToLocalCacheForWrite` should use `__builtin_prefetch(<addr>, 1, 3)` ↵Gravatar Abseil Team2023-02-03
| | | | | | | not `__builtin_prefetch<addr>, 1, 0)` PiperOrigin-RevId: 507015724 Change-Id: I99f44fe819c27e6dcc0bb7b36f1a37015c6f1987
* Add ABSL_ATTRIBUTE_LIFETIME_BOUND to absl::StatusOr::emplace()Gravatar Laramie Leavitt2023-02-03
| | | | | PiperOrigin-RevId: 506944023 Change-Id: I04ff13dcec89c57ba03707f5698c4198434216b6
* Fix missing includes/dependenciesGravatar Derek Mauro2023-02-02
| | | | | PiperOrigin-RevId: 506622658 Change-Id: I17ae2d97a6cadb7bdd8ebd0ec0dd3976568cb7e1
* Get rid of tail padding within `absl::Duration`. This reduces memory usage ↵Gravatar Abseil Team2023-02-02
| | | | | | | needs when storing duration in containers (e.g. `vector<absl::Duration>` uses 25% less memory), and allows classes with `absl::Duration` fields to fit other stuff in memory previously used by tail padding (e.g. `std::optional<absl::Duration>` is now 16 bytes instead of 24). PiperOrigin-RevId: 506568782 Change-Id: Ic9e077f02a80da013fb2d312aff77761b970c07a
* Get rid of tail padding within `absl::Duration`. This reduces memory usage ↵Gravatar Abseil Team2023-02-02
| | | | | | | needs when storing duration in containers (e.g. `vector<absl::Duration>` uses 25% less memory), and allows classes with `absl::Duration` fields to fit other stuff in memory previously used by tail padding (e.g. `std::optional<absl::Duration>` is now 16 bytes instead of 24). PiperOrigin-RevId: 506543503 Change-Id: Ifeb2397c953a5d3da317a70ab49a3ebb85042344
* Delete unused Futex methodsGravatar Derek Mauro2023-02-01
| | | | | PiperOrigin-RevId: 506323250 Change-Id: I0f7d4532c19088b011740ceff87ecec55cc34edb
* Rollforward: in sanitizer mode, detect when references become invalidated by ↵Gravatar Evan Brown2023-02-01
| | | | | | | | | randomly rehashing on insertions when there is no reserved growth. Rollforward of ed59f62f8bbc5f05bcba2f89ee16f107e03813f2 PiperOrigin-RevId: 506314970 Change-Id: I7a654aef36bb169da9ea5c618789ee771f05fe28
* Add const qualifier to c_binary_search Sequence.Gravatar Abseil Team2023-01-31
| | | | | PiperOrigin-RevId: 506151912 Change-Id: I388884b0bd80ef0f8a0b3d3c7d0e1b404ddfb742
* Rollback in sanitizer mode, detect when references become invalidated by ↵Gravatar Abseil Team2023-01-31
| | | | | | | | | randomly rehashing on insertions when there is no reserved growth. Rollback of ed59f62f8bbc5f05bcba2f89ee16f107e03813f2 PiperOrigin-RevId: 506003574 Change-Id: I1766321f279a3226e2821e0390387d5639d28964
* In sanitizer mode, detect when references become invalidated by randomly ↵Gravatar Evan Brown2023-01-30
| | | | | | | rehashing on insertions when there is no reserved growth. PiperOrigin-RevId: 505807487 Change-Id: I9051a04f6a75e579d16e9ae8defd404bcc377fba
* The type of MINSIGSTKSZ is not guaranteed; avoid potential implicit sign ↵Gravatar Abseil Team2023-01-28
| | | | | | | | | conversion. On some glibcs, this is defined as a call to sysconf(), which returns a long. PiperOrigin-RevId: 505380003 Change-Id: I53207846d733d3a529630a6aff9bca425cf90a21
* Replace absl::base_internal::Prefetch* calls with absl::Prefetch* callsGravatar Martijn Vels2023-01-27
| | | | | PiperOrigin-RevId: 505184961 Change-Id: I64482558a76abda6896bec4b2d323833b6cd7edf
* Adds `AbslStringify` support to `absl::Hex` and `absl::Dec`Gravatar Phoebe Liang2023-01-27
| | | | | | | | | | | | | `absl::Hex` and `absl::Dec` are now stringifiable through `AbslStringify`. This means that they can be passed to logging, `absl::StrFormat`, `absl::StrCat` and `absl::Substitute`. Note that this change will break unsupported usages of `absl::AlphaNum`. `absl::AlphaNum` is not intended to be instantiated as a stack variable due to lifetime issues. Unsupported usages include: * constructing an `absl::AlphaNum` as a local variable. * For example, `absl::AlphaNum a = absl::Hex(...);` * declaring an `absl::AlphaNum` as a member variable Usage of `absl::AlphaNum` as a function parameter will continue to be supported. PiperOrigin-RevId: 505158534 Change-Id: Idecdf0b3d137482e86b393c7480229343d68eb36
* Merge pull request #1371 from fahhem:mingw_supportGravatar Copybara-Service2023-01-26
|\ | | | | | | | | PiperOrigin-RevId: 504981951 Change-Id: I7357e8e6730ceda458b40aa605cd450e80271dc6
* | Introduce Abseil Prefetch APIGravatar Martijn Vels2023-01-26
| | | | | | | | | | PiperOrigin-RevId: 504941246 Change-Id: I94c1e85afd254e84948477b511d41eeb8285fdae
* | Add lifetime annotations to AlphaNum.Gravatar Abseil Team2023-01-26
| | | | | | | | | | PiperOrigin-RevId: 504866618 Change-Id: I9519299946c693ae1bedd769a25a9cb5137f2f54
* | Cord does not need its str_format dependencyGravatar Derek Mauro2023-01-26
| | | | | | | | | | | | | | Fixes #1360 PiperOrigin-RevId: 504850733 Change-Id: Ifa1e83d0c703ed69c969a12076db474caec9d496
* | Make `SanitizerSafeCopy()` constexpr, and check for constant evaluationGravatar Martijn Vels2023-01-25
| | | | | | | | | | PiperOrigin-RevId: 504728034 Change-Id: Ifb338247b7484426e25a58580783a1d70d27e6fd
| * Pass correct flags for mingw to use bcryptGravatar Fahrzin Hemmati2023-01-25
| |
| * Add mingw as a config_settingGravatar Fahrzin Hemmati2023-01-25
|/
* Separate DLL export/import for test helpers dll, and fix typo.Gravatar Mike Kruskal2023-01-25
| | | | | | | The DLL export issue isn't a problem currently, since we don't explicitly export any symbols from the test dll. This will be an issue in the future though. Additionally, there was a typo in absl_internal_test_dll_contains that caused abseil_test_dll to be empty (and therefore not create a lib file). PiperOrigin-RevId: 504555797 Change-Id: Ic7b50bcbe704f7c8fd44028071abcf5d6babb2cf
* Add memory sanitizer to absl::CordGravatar Martijn Vels2023-01-25
| | | | | PiperOrigin-RevId: 504555535 Change-Id: Id40484e9f52c87e9d67def2735ee60481ca50526
* Fix typo in previous AbseilDLL changes, and enable testing.Gravatar Mike Kruskal2023-01-24
| | | | | | | This broke builds of abseil_test_dll, since CMake can't find the file we incorrectly specified. PiperOrigin-RevId: 504372451 Change-Id: I6cd5a44f12bb2f473fae2ac920e047e782ae9524
* Work around GCC -Wuninitialized when initializing a span from an ↵Gravatar Andy Getzendanner2023-01-24
| | | | | | | | | uninitialized array in logging. It's uninitialized on purpose; we'll write into it through the span. PiperOrigin-RevId: 504318917 Change-Id: I79835f0190253b8b470b3ca404f3979715f2a718
* Include Abseil logging in windows dll, and add a test helper dll.Gravatar Mike Kruskal2023-01-24
| | | | | | | This was tested with https://github.com/protocolbuffers/protobuf/pull/11623 in Protobuf's windows shared library build. PiperOrigin-RevId: 504294227 Change-Id: I9657197e649a334585bffa2c7bc6340cd2354e84
* Sort CMakeList deps for raw_hash_set and raw_hash_set_test.Gravatar Evan Brown2023-01-23
| | | | | PiperOrigin-RevId: 504045295 Change-Id: I110d4573087358e17a719def29e8037adfac6d15
* Use const references in Standard Library algorithms range adapters where ↵Gravatar Abseil Team2023-01-23
| | | | | | | | | possible. Const references enforce stronger constraints and are consistent with the standard library signature. There should be no performance loss. PiperOrigin-RevId: 504043141 Change-Id: I6c4b017665a462fc04e16f425d330fce2c3da227
* absl: harden stack bounds checkGravatar Abseil Team2023-01-23
| | | | | | | | Ensure that we know both real low and high stack bounds when relying on the stack bounds check. PiperOrigin-RevId: 504003431 Change-Id: I8f6e6b75f5edff233d3cf80285f81b53f9080a0f
* Fix pkgconfig generation broken by 14abd930c61ef3ad2842f5c6b7ea60693b0d4ff9Gravatar Derek Mauro2023-01-22
| | | | | | | In the non-dll case, don't set the LNK_LIB variable in the deps loop. PiperOrigin-RevId: 503854597 Change-Id: Ic57711c1ed95b998e6ca4f27a0a7982ee99595e2
* Update absl::allocator_traits and absl::pointer_traits to alwaysGravatar Derek Mauro2023-01-20
| | | | | | | | | | | | | | | | | | | use std::allocator_traits and std::pointer traits. Note that the reason given in the comments for these implementations was incorrect. Both of these exist in C++11, but not all compilers had working implementations, so Abseil backfiled them. All supported compilers now have working implementations. https://en.cppreference.com/w/cpp/memory/allocator_traits https://en.cppreference.com/w/cpp/memory/pointer_traits Documentation has been updated to recommend the std:: spellings. Fixes #1366 PiperOrigin-RevId: 503532746 Change-Id: Ia437f65a4c752581195dc582a41831b479d096c6