| Commit message (Collapse) | Author | Age |
|
|
|
| |
These make the changed constructors match closer to the other ones that are default.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Change to checking for use_count() >/== 1.
PiperOrigin-RevId: 510125744
Change-Id: I572cca18c3f827f5d3eefb2ec19a1a014c0090ae
|
|
|
|
|
|
|
| |
instead of absl::ToUnixNanos(absl::Now());
PiperOrigin-RevId: 509829866
Change-Id: Ib34362762304ad6eb7980a1227d717069b84f656
|
|
|
|
|
|
|
|
|
| |
__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
|
|
|
|
|
|
|
| |
that we can distinguish between end() iterators and default-constructed iterators in debug mode.
PiperOrigin-RevId: 509606271
Change-Id: I77b68590b3904a4cf7809b75d814d74cb89603b6
|
|\
| |
| |
| |
| | |
PiperOrigin-RevId: 509581648
Change-Id: Ia60053f1172e0e64569e9555524812fc4788e24f
|
|/
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| | |
PiperOrigin-RevId: 509299527
Change-Id: I2f9a801faf87f968f1625711a67d38a528f0740c
|
| |
| |
| |
| |
| |
| |
| |
| | |
The test was getting tripped by EXPECT_DEATH_IF_SUPPORTED keeping a literal
copy of the test statement.
PiperOrigin-RevId: 509299343
Change-Id: I63da29d844cc630d750535fd4bb13a2895d32541
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 509236105
Change-Id: I635f521aff106875f06bb93c332d3e437d0ad409
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
compared.
We change AssertSameContainer to be after AssertIsValidForComparison calls so that we can have more specific failure messages.
PiperOrigin-RevId: 508472485
Change-Id: Iff2f7512086948a4aca7fd403596e8d4fde53b2a
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 508124592
Change-Id: Ib183e6e241c81b2760e7f849f8af8e7e2c30ea42
|
| |
| |
| |
| |
| |
| |
| | |
is chosen, not in overload resolution.
PiperOrigin-RevId: 508031321
Change-Id: I6981371fbc6498047babe3468f3343090f8bda47
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 507790741
Change-Id: I347357f9a2d698510f29b7d1b065ef73f9289292
|
| |
| |
| |
| |
| |
| |
| | |
signed integral types and improve the performance of absl::Hash.
PiperOrigin-RevId: 507598042
Change-Id: I96a7bd6b9c360f435f216b2671ae84d9768a46e8
|
|/ |
|
|
|
|
|
|
|
| |
not `__builtin_prefetch<addr>, 1, 0)`
PiperOrigin-RevId: 507015724
Change-Id: I99f44fe819c27e6dcc0bb7b36f1a37015c6f1987
|
|
|
|
|
| |
PiperOrigin-RevId: 506944023
Change-Id: I04ff13dcec89c57ba03707f5698c4198434216b6
|
|
|
|
|
| |
PiperOrigin-RevId: 506622658
Change-Id: I17ae2d97a6cadb7bdd8ebd0ec0dd3976568cb7e1
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
PiperOrigin-RevId: 506323250
Change-Id: I0f7d4532c19088b011740ceff87ecec55cc34edb
|
|
|
|
|
|
|
|
|
| |
randomly rehashing on insertions when there is no reserved growth.
Rollforward of ed59f62f8bbc5f05bcba2f89ee16f107e03813f2
PiperOrigin-RevId: 506314970
Change-Id: I7a654aef36bb169da9ea5c618789ee771f05fe28
|
|
|
|
|
| |
PiperOrigin-RevId: 506151912
Change-Id: I388884b0bd80ef0f8a0b3d3c7d0e1b404ddfb742
|
|
|
|
|
|
|
|
|
| |
randomly rehashing on insertions when there is no reserved growth.
Rollback of ed59f62f8bbc5f05bcba2f89ee16f107e03813f2
PiperOrigin-RevId: 506003574
Change-Id: I1766321f279a3226e2821e0390387d5639d28964
|
|
|
|
|
|
|
| |
rehashing on insertions when there is no reserved growth.
PiperOrigin-RevId: 505807487
Change-Id: I9051a04f6a75e579d16e9ae8defd404bcc377fba
|
|
|
|
|
|
|
|
|
| |
conversion.
On some glibcs, this is defined as a call to sysconf(), which returns a long.
PiperOrigin-RevId: 505380003
Change-Id: I53207846d733d3a529630a6aff9bca425cf90a21
|
|
|
|
|
| |
PiperOrigin-RevId: 505184961
Change-Id: I64482558a76abda6896bec4b2d323833b6cd7edf
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`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
|
|\
| |
| |
| |
| | |
PiperOrigin-RevId: 504981951
Change-Id: I7357e8e6730ceda458b40aa605cd450e80271dc6
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 504941246
Change-Id: I94c1e85afd254e84948477b511d41eeb8285fdae
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 504866618
Change-Id: I9519299946c693ae1bedd769a25a9cb5137f2f54
|
| |
| |
| |
| |
| |
| |
| | |
Fixes #1360
PiperOrigin-RevId: 504850733
Change-Id: Ifa1e83d0c703ed69c969a12076db474caec9d496
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 504728034
Change-Id: Ifb338247b7484426e25a58580783a1d70d27e6fd
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
PiperOrigin-RevId: 504555535
Change-Id: Id40484e9f52c87e9d67def2735ee60481ca50526
|
|
|
|
|
|
|
| |
This broke builds of abseil_test_dll, since CMake can't find the file we incorrectly specified.
PiperOrigin-RevId: 504372451
Change-Id: I6cd5a44f12bb2f473fae2ac920e047e782ae9524
|
|
|
|
|
|
|
|
|
| |
uninitialized array in logging.
It's uninitialized on purpose; we'll write into it through the span.
PiperOrigin-RevId: 504318917
Change-Id: I79835f0190253b8b470b3ca404f3979715f2a718
|
|
|
|
|
|
|
| |
This was tested with https://github.com/protocolbuffers/protobuf/pull/11623 in Protobuf's windows shared library build.
PiperOrigin-RevId: 504294227
Change-Id: I9657197e649a334585bffa2c7bc6340cd2354e84
|
|
|
|
|
| |
PiperOrigin-RevId: 504045295
Change-Id: I110d4573087358e17a719def29e8037adfac6d15
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
Ensure that we know both real low and high stack bounds
when relying on the stack bounds check.
PiperOrigin-RevId: 504003431
Change-Id: I8f6e6b75f5edff233d3cf80285f81b53f9080a0f
|
|
|
|
|
|
|
| |
In the non-dll case, don't set the LNK_LIB variable in the deps loop.
PiperOrigin-RevId: 503854597
Change-Id: Ic57711c1ed95b998e6ca4f27a0a7982ee99595e2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|