| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This type trait had no precise definition, and indeed not even any documentation
at all. Giving the ill-defined concept a name was harmful, because it obscured
several places where the concept was used too conservatively, or even flat-out
incorrectly.
This CL has no behavior change: it simply expands IsMemcpyOk to the same
conditions it previously had. It leaves TODOs for each place where this was too
conservative or incorrect.
PiperOrigin-RevId: 519278325
Change-Id: I25bc89f299f6e40b5c3bce7370ed90f33a95612f
|
|
|
|
|
|
|
|
|
|
|
| |
Clarify that the trait is conservative: it's safe to act on if it's true, but
false doesn't necessarily mean anything. Of course this is the only reasonable
way to use it, but I think it's helpful to be explicit, especially because
currently this trait *always* returns false on some platforms even for a type
like int.
PiperOrigin-RevId: 519272294
Change-Id: Ic63a48dcf18efc0756046b3d6f51d11cbb46a469
|
|
|
|
|
|
|
|
| |
std::unique_ptr is trivially relocatable, but not trivially destructible. This
will be important coverage to ensure correctness of upcoming commit(s) that
expand the use of memcpy to more trivially relocatable types.
PiperOrigin-RevId: 519270234
Change-Id: I8e584a405633dac89bf1f67eab8145971d2ddab2
|
|
|
|
|
| |
PiperOrigin-RevId: 519200954
Change-Id: I349023cacab0ac4cbefb8505efd29a5eda1e9067
|
|
|
|
|
|
|
| |
In preparation for changing its definition in an upcoming commit.
PiperOrigin-RevId: 519141790
Change-Id: I49b608a575ad41e2f29d82489c1c09eec8c4d7e5
|
|
|
|
|
| |
PiperOrigin-RevId: 519090305
Change-Id: Ic97a36da33e1e0681765a913f3c54c3d818eebdc
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/#c20-no_unique_address
MSVC disables [[no_unique_address]] by default because of ABI
compatibility. Since Abseil does not claim ABI compatibility in
mixed-mode builds, we can offer it unconditionally.
Fixes #1418
PiperOrigin-RevId: 518894036
Change-Id: If7653e65703b335783f11d296de7e32fc35d4fc6
|
|
|
|
|
| |
PiperOrigin-RevId: 518850294
Change-Id: I3e9dcce5de2ae878d0992f05c0f39ccaf10a1ac5
|
|
|
|
|
| |
PiperOrigin-RevId: 518835147
Change-Id: I86d8a49563cb5f74461a57e2b6dceac539749c86
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This implementation may at some point become the default on some
platforms. Currently not all platforms have widespread support for
both real absolute timeouts or real relative timeouts (here "real"
means without converting to the other timeout type which is the only
one supported by the underlying APIs). In this case we can defer to
their standard library to implement correct support.
This is not currently the default on any platform
Note: The size of WaiterState had to increase to fit the new implementation
PiperOrigin-RevId: 518266646
Change-Id: I7f246646a960d6e1b155f9de0bf2f681c5d3d245
|
|
|
|
|
|
|
| |
exit on syntax errors.
PiperOrigin-RevId: 518198160
Change-Id: Ib4fe53e0b0b371472b6b9473aeb84779953b6a38
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of being only able to test the platform Waiter implementation,
this allows us to be able to test all Waiter implementations that
build on a specific platform.
A unittest is added that tests all implementations that work for the
platform, and allows us to check that the expected one is being used
by printing the name of the selected implementation.
PiperOrigin-RevId: 518072415
Change-Id: Ie9e6fcd9d8283b4038e6f4e68a304d2adcc04b19
|
|
|
|
|
|
|
|
|
|
| |
Since the return value of `NumBits()` will always fit into `size_t`,
use an explicit cast to silence the implicit conversion warning.
Fixes #1384
PiperOrigin-RevId: 518041598
Change-Id: If2f2456db4b27b78e9ea9e026dce610953bd5bfb
|
|
|
|
|
|
|
|
| |
It was previously included transitively through some other header,
but with recent libc++ versions that's no longer the case.
PiperOrigin-RevId: 517969848
Change-Id: I83c5c1853ae27b64a53a75a0f2faead37a70c145
|
|
|
|
|
|
|
| |
Also makes `ABSL_INTERNAL_LOG(LEVEL(x), "oops")` not call unreachable (even when x == kFatal) for consistency.
PiperOrigin-RevId: 517894304
Change-Id: I798b1032d126330ace1e2b48edd8fc547a2ad2f8
|
|
|
|
|
|
|
| |
Windows tests often run in Emulation, and even with KVM we can still timeout.
PiperOrigin-RevId: 517192968
Change-Id: I3b4e435f8ac8ad1e7eab6f043c051fa75efed64b
|
|
|
|
|
| |
PiperOrigin-RevId: 517142676
Change-Id: If50a1bf5f92da166d6b4923110ec8b25446b6b11
|
|
|
|
|
|
|
|
|
|
|
| |
escaping vs unescaping:
* Move table documenting escaping conversions to be next to the internal escaping code that implements it. Mention it from the internal _un_escaping code (which reverses it) too.
* Centralize the two arrays which map from normal chars to escaped chars (k(WebSafe)Base64Chars), and make bidirectional documentation links between them and their reverse (unescaping) maps (kUn(WebSafe)Base64).
* Remove redundant list of escaping/unescaping methods in the public escaping.cc.
PiperOrigin-RevId: 517142667
Change-Id: I627e59a196ef855e5bf61ef7f4b509920e8d7acd
|
|
|
|
|
|
|
| |
truncates, and floating-point multiplication/division, which rounds.
PiperOrigin-RevId: 517016481
Change-Id: I3b0c357ea7236f2c0231df5e6b47c742c3f40047
|
|
|
|
|
|
|
| |
methods in this file have corresponding case-insensitive ones.
PiperOrigin-RevId: 516933773
Change-Id: Iaec41afd923b10bc493ad864c0ecfe85a1fe2db8
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://google.github.io/styleguide/cppguide.html#Designated_initializers
recommends using designated initializers as does https://abseil.io/tips/172,
but apparently they are a non-standard extension prior to C++20.
For maximum compatibility, avoid using them here.
Fixes #1413
PiperOrigin-RevId: 516892890
Change-Id: Id7b7857891e39eb52132c3edf70e5bf4973755af
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a path in which the guard_result_ member is
not initialized; this is benign as the code makes
sure that it only accesses an initialized state.
Static analysis tools (such as clang-tidy) might not
see that however, so to make them happy, initialize
that value.
PiperOrigin-RevId: 516876319
Change-Id: I1bd2e97ad9e1daaa1397f306df993de13f7e684e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 516534869
Change-Id: Ib70b83e4be3f9e3f1727646975a21a1d30acb242
|
|
|
|
|
| |
PiperOrigin-RevId: 516411395
Change-Id: I442fc9435bd7a829802c325e2e4106aa6775c263
|
|
|
|
|
| |
PiperOrigin-RevId: 516363556
Change-Id: Iae5e781d46dc8a8c4242ab460b57b65271b93159
|
|
|
|
|
|
|
|
|
|
| |
timeouts, but when a relative timeout is provided, the timeout is an
absolute timeout against a steady clock (when possible). This allows
methods that return relative timeouts to automatically recompute the
remaining duration, for instance, on suprious wakeups.
PiperOrigin-RevId: 516304139
Change-Id: I7d739cb50dd749eba5dba7ac6c34d18dc53703ed
|
|
|
|
|
| |
PiperOrigin-RevId: 516275043
Change-Id: I906ef0d96dddf12e3738490bd26cb05753ec008c
|
|
|
|
|
| |
PiperOrigin-RevId: 516245113
Change-Id: Idaef538c9392decbfdeb3ed3b3c109c795f92f4d
|
|
|
|
|
|
|
| |
std::u16string and std::u32stringstrings
PiperOrigin-RevId: 515726337
Change-Id: I08e184ec1f7169835c034ac45a7e87293dc53078
|
|
|
|
|
| |
PiperOrigin-RevId: 515427893
Change-Id: I89e8756fcf400459b0226d14785c6511ad3e380b
|
|
|
|
|
|
|
| |
tests assertions.
PiperOrigin-RevId: 515396682
Change-Id: I1b07d94611323569b199e1f4d03c7c49147c6bfb
|
|
|
|
|
|
|
| |
platforms.
PiperOrigin-RevId: 515353041
Change-Id: I2c88022d50a3351f70d09a2d63020470889752d9
|
|\
| |
| |
| |
| | |
PiperOrigin-RevId: 515105001
Change-Id: I4a8ce8291ef3df23108dd21d8adb6752cde92dd0
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ParseAbseilFlagsOnly
To be used to parse Abseil Flags only and classify the rest of the arguments.
ReportUnrecognizedFlags
To be used to report unrecognized flags.
PiperOrigin-RevId: 515082682
Change-Id: I73271b56cc512a5e78b5fcd035564b3672d62ca8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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: 515043788
Change-Id: I151127b588065bd1316273f36d7c946545c2c892
|
|/
|
|
| |
This shows that these are member functions that do not modify a class's data.
|
|
|
|
|
| |
PiperOrigin-RevId: 514567673
Change-Id: I02721d424f01965a7a5e08c06487af358c853627
|
|
|
|
|
| |
PiperOrigin-RevId: 514451518
Change-Id: Ic1391374c7bff08ba437ac0410631d1f701bb9ed
|
|
|
|
|
|
|
| |
different empty hashtables are compared.
PiperOrigin-RevId: 513568915
Change-Id: I3f387d0bae0e86749dff540e4fdd5037304ac975
|
|
|
|
|
|
|
| |
This avoids "error: an attribute list cannot appear here"
PiperOrigin-RevId: 513430681
Change-Id: I0fd31771793ee4cb66149ef4ce3e3e064dfb260d
|
|\
| |
| |
| |
| | |
PiperOrigin-RevId: 513430584
Change-Id: I944a4868565564f32133dbff8b7a952221bb8b88
|
| |
| |
| |
| |
| |
| |
| | |
This was originally added in order to centralize the ifdefs, in cl/164484905. However, cl/337142938 undid this aspect of the change, because it broke on Android. What is left is vestigial: `Throw()` can be deleted at no loss, with a warning that should discourage us from ever reintroducing it.
PiperOrigin-RevId: 513391041
Change-Id: I1608a2007eb26ee95df07f3b4b1672c034743832
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 513379475
Change-Id: I0d7af3a0d2bf4da6eec66a5320ecc402d2e8fec8
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 512979517
Change-Id: I7fe38ed246e42e6f8eb322e15c3b299215163168
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 512974770
Change-Id: If7a8128996d2a73ac566faaa676ddd3858d51af6
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 512697257
Change-Id: I828ac7a4ada482d60beba767ef9da6e2c0077c33
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 512664112
Change-Id: I344fd425f52081c0662d7cd0ffa2eefd98fd18fe
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 512622121
Change-Id: If90aaf7939062bd475253c372d9d7950c98c7150
|
|/ |
|
|
|
|
|
| |
PiperOrigin-RevId: 512155216
Change-Id: Ie66d29bd48ba8523f5fb7f835f721d9aec637eba
|