- 10 Nov, 2022 2 commits
-
-
deprecation of ATOMIC_FLAG_INIT. Another option would have been to use macros to only initialize std::atomic_flag before C++20, but I decided to use one compilation path instead. The major difference between std::atomic_flag and std::atomic<bool> is that the former is guaranteed to be lock-free, but we already assume std::atomic<bool> is lock-free in many places. https://en.cppreference.com/w/cpp/atomic/atomic_flag PiperOrigin-RevId: 487397075 Change-Id: I3f1c539ec8b2ca58547282e69ed73e93243e8efe
Derek Mauro committed -
PiperOrigin-RevId: 487394692 Change-Id: I55e9b57055483dc921e9773c3643ea9be4f9bdf6
Abseil Team committed
-
- 09 Nov, 2022 3 commits
-
-
This implementation can advantage of hardware acceleration available on common CPUs when using GCC and Clang. A future update may enable this on MSVC as well. PiperOrigin-RevId: 487327024 Change-Id: I99a8f1bcbdf25297e776537e23bd0a902e0818a1
Derek Mauro committed -
We check for comparisons of swisstable iterators from different heap allocations, which can indicate either iterators from different containers or that there was a rehash between when the iterators were initialized. PiperOrigin-RevId: 487304602 Change-Id: I5c596c5ea07948d66e048f99937f9032a630344f
Evan Brown committed -
PiperOrigin-RevId: 487292771 Change-Id: I2454e28fe91017fb2954a4ad194712fcafe893d2
Abseil Team committed
-
- 08 Nov, 2022 1 commit
-
-
PiperOrigin-RevId: 486867412 Change-Id: Ib54b1acaf1ea57f8f377c87261d7d52e9a48784f
Andy Getzendanner committed
-
- 07 Nov, 2022 3 commits
-
-
Factor out the internal helper AppendTruncated, which is used and redefined in a couple places, plus several more that have yet to be released. PiperOrigin-RevId: 486759835 Change-Id: Ib1b24f287f856ca38b691fbce7e747f0f5a34626
Andy Getzendanner committed -
Note that multi{set,map}::emplace doesn't specify in which order the new element is inserted if there are equivalent keys in the table, whereas emplace_hint specifies that the new element must be before the hint if possible. https://en.cppreference.com/w/cpp/container/multiset/emplace https://en.cppreference.com/w/cpp/container/multiset/emplace_hint Also refactor to rely on IsAssertEnabled instead of checking for NDEBUG. PiperOrigin-RevId: 486733450 Change-Id: Ie90d33c584a6caccd8301ad6fc0396234dbbfac4Evan Brown committed -
In order for Condition to work on Microsoft platforms, it has to store pointers to methods that are larger than we usually expect. MSVC pointers to methods from class hierarchies that employ multiple inheritance or virtual inheritance are strictly larger than pointers to methods in class hierarchies that only employ single inheritance. This change introduces an opaque declaration of a class, which is not fulfilled. This declaration is used to calculate the size of the Condition method pointer allocation. Because the declaration is of unspecified inheritance, the compiler is forced to use a conservatively large allocation, which will thereby accommodate all method pointer sizes. Because the `method_` and `function_` callbacks are only populated in mutually exclusive conditions, they can be allowed to take up the same space in the Condition object. This change combines the `method_` and `function_` fields and renames the new field to `callback_`. The constructor logic is updated to reflect the new field. PiperOrigin-RevId: 486701312 Change-Id: If06832cc26f27d91e295183e44dc29440af5f9db
Abseil Team committed
-
- 06 Nov, 2022 1 commit
-
-
PiperOrigin-RevId: 486480813 Change-Id: I05292dd0550dfb4130bbe47eafa96ff5b58c040b
Michael Diamond committed
-
- 04 Nov, 2022 2 commits
-
-
PiperOrigin-RevId: 486227733 Change-Id: If492d715e5758971cf7bd0ccd748b47b1424a3c7
Andy Getzendanner committed -
PiperOrigin-RevId: 486023797 Change-Id: I0b82754fd40c2d6fb451f304aaf1d795eed8d009
Andy Getzendanner committed
-
- 03 Nov, 2022 4 commits
-
-
PiperOrigin-RevId: 485921596 Change-Id: I453801e3d7b4a60ecedf173d448c8b6f51cb0b2e
Derek Mauro committed -
PiperOrigin-RevId: 485886212 Change-Id: Ic7a710913f8376d07b9bdeb987d007ec04e48465
Copybara-Service committed -
PiperOrigin-RevId: 485885633 Change-Id: Idfaf6ce22a9421fe05ae38029c8a68b720ce50ba
Copybara-Service committed -
PiperOrigin-RevId: 485868656 Change-Id: I09d70adc570b6b79a80c29f89601186aab390032
Derek Mauro committed
-
- 02 Nov, 2022 4 commits
-
-
If a user-defined type has `AbslStringify()` defined, it will always be used for logging over `operator<<`. `HasAbslStringify` now uses the empty class `UnimplementedSink` for its checks instead of `StringifySink` in order to make it work in cases involving other sinks. PiperOrigin-RevId: 485710377 Change-Id: Ibdd916151c7abc3269c35fbe79b772867f3d25e1
Phoebe Liang committed -
Arkady Shapkin committed
-
Eliminate span_internal::Min in favor of std::min, since Min conflicts with a macro in a third-party library. PiperOrigin-RevId: 485653193 Change-Id: I0615ceb9ea3e1533a989470e7c9863c86b70698b
Jorg Brown committed -
PiperOrigin-RevId: 485575914 Change-Id: If1752252e3cc2f91dc3c171382c9fb3a4def0377
Abseil Team committed
-
- 01 Nov, 2022 2 commits
-
-
- Separate the failure cases into different assertions: end/default constructed vs rehashed or erased. - Update the assertion error for AssertIsValid to not mention the end iterator case because end iterators are considered valid by AssertIsValid. - Also fix an out-of-date comment for skip_empty_or_deleted. PiperOrigin-RevId: 485402559 Change-Id: I593056abdc6c3565d0396fb885923fef643bf4e4
Evan Brown committed -
empty cord twice in a row. PiperOrigin-RevId: 485367641 Change-Id: I6605ff25acbcef7c40b68e15a8888076a2da63be
Derek Mauro committed
-
- 31 Oct, 2022 4 commits
-
-
Add a warning about extract invalidating iterators (not just the iterator of the element being extracted). PiperOrigin-RevId: 485120182 Change-Id: Ic54d538721678bed0a748dacbf33c319e62b93b8
Abseil Team committed -
In a previous change, I forgot to fix the DLLs to also set the target_compile_features() as needed. Some amount of refactoring to expose the necessary variables and functions in AbseilDll.cmake Fixes #1116 PiperOrigin-RevId: 485101834 Change-Id: I5cd0eff9e20c0ddf48c364f917e40d66df0aac17
Abseil Team committed -
PiperOrigin-RevId: 485070787 Change-Id: Ie62021eaf84f5a43e8943d3167e98e3986fcf5a6
Abseil Team committed -
PiperOrigin-RevId: 485054062 Change-Id: Ieafa217b562548f8bb8dc6fc4e1e414f8ede0579
Abseil Team committed
-
- 28 Oct, 2022 2 commits
-
-
PiperOrigin-RevId: 484578104 Change-Id: Ie4be3e4de27dc28d88395e16fd075fb10ab7a302
Derek Mauro committed -
file. PiperOrigin-RevId: 484419458 Change-Id: Ic2c1afa1a3434ac071c01ae2e6c75dee41b1f069
Andy Soffer committed
-
- 27 Oct, 2022 2 commits
-
-
This function is unnecessary as it was originally used to support modifiers with `absl::StrFormat()`. This functionality is irrelevant to `absl::StrCat()`. PiperOrigin-RevId: 484339246 Change-Id: I8c4a0ee01b30aee7a83f6ab54e5465465cc9cc56
Phoebe Liang committed -
PiperOrigin-RevId: 484181180 Change-Id: I00206c1506a25dca5555261d6500c1e54368a368
Abseil Team committed
-
- 26 Oct, 2022 2 commits
-
-
ABSL_RANDOM_RANDEN_COPTS Everything works fine when this is empty Fixes #1301 PiperOrigin-RevId: 484014466 Change-Id: I2fa96d845320f23063e1e86ee2df3ac14bd44012
Derek Mauro committed -
PiperOrigin-RevId: 483972593 Change-Id: I5358871cdf825bbfae65bf9f5872c4fd56005fb7
Derek Mauro committed
-
- 25 Oct, 2022 2 commits
-
-
PiperOrigin-RevId: 483752526 Change-Id: Ie6b63a4a3cc7593e5b8bf255ba571a77d609ce04
Abseil Team committed -
- Check for invalid generation before checking for other types of invalid iterators. - Check specifically for dereferencing end() iterators. PiperOrigin-RevId: 483725646 Change-Id: Ibca19c48b1b242384683580145be8fb9ae707bc8
Evan Brown committed
-
- 24 Oct, 2022 1 commit
-
-
On single-core systems, a thread could be preempted while holding an absl::Mutex, or even worse, the spin lock. If a FIFO thread wakes up and tries to acquire this lock, it might not be able to yield() to the sleeping thread. Within MutexDelay(), a yield() and a sleep(10us) are used to yield the CPU. The yield() would do nothing if the calling thread holds the highest priority in the system. The 10us sleep() may not be able to reach the scheduler either, if the system is slow enough. This code path is known to be reachable in the following scenarios: - a FIFO thread calls LockSlowLoop() with spin lock held by a normal thread - a FIFO thread calls LockWhen*() with the Mutex held by a normal thread for a long time - a FIFO thread calls Await*(), releases the Mutex to be held by a normal thread for a long time This CL adds a mutex global for the sleep time, and sets it using the return time of the a yield() call. Yield() must reach the scheduler even when it fails to yield to anyone, and would allow sleep() to do the same. A small constant multiplier (5) is also applied to overcome uncontrollable factors in the runtime and help sleep() to consistently yield to another thread. Upper and lower bounds for the sleep time is also controlled to block any unreasonable values. PiperOrigin-RevId: 483459711 Change-Id: I14efadbadaf9244a2462f377b515147bda651c89
Abseil Team committed
-
- 21 Oct, 2022 2 commits
-
-
PiperOrigin-RevId: 482905442 Change-Id: Ic3a1e62f8a17efee5508d94835635aa489940f2d
Abseil Team committed -
Bug: chromium:1292951 PiperOrigin-RevId: 482767615 Change-Id: Ia1e812fa7bde8753b17046ed325542ad41f30f9b
Abseil Team committed
-
- 19 Oct, 2022 1 commit
-
-
Bug: chromium:1292951 PiperOrigin-RevId: 482287305 Change-Id: I896033c7c8b2645eacab974c4364c6ba66d38cb6
Abseil Team committed
-
- 18 Oct, 2022 2 commits
-
-
Bug: chromium:1292951 PiperOrigin-RevId: 482021281 Change-Id: I01c25dcb2dae82fcee25da00aefec4484f7c409d
Abseil Team committed -
PiperOrigin-RevId: 481979737 Change-Id: I69f53665b0463a7d8d80f2a3feedfdd95d32b012
Evan Brown committed
-