- 01 Apr, 2023 2 commits
-
-
We know that the elements are trivially destructible if this path is used, so there is no need to call their destructors one by one. PiperOrigin-RevId: 521088624 Change-Id: I3edff97a073770f99031eefa7a34968fad5d7880
Aaron Jacobs committed -
The fact that this is called from paths where the element type may not have a trivial destructor is preventing an optimization (see the TODO). Stop calling from those paths so that the optimization can be made in an upcoming CL. PiperOrigin-RevId: 521087730 Change-Id: Id2b66d8f36bb0d294784d0793fdd8f07e315739f
Aaron Jacobs committed
-
- 31 Mar, 2023 3 commits
-
-
The copy constructor isn't doing or simulating copy assignment; nor is it destroying anything. We don't need to require that those operations be trivial. PiperOrigin-RevId: 521020499 Change-Id: I0f36a720384b333ea15e6c8275872fd4fd9a738f
Aaron Jacobs committed -
PiperOrigin-RevId: 520955097 Change-Id: I50a19305aed2b60dea0293b1a2106673e4cb7756
Derek Mauro committed -
PiperOrigin-RevId: 520925224 Change-Id: I8b7eb8b4d4b99d72b860aec532516b428fb2be23
Derek Mauro committed
-
- 30 Mar, 2023 4 commits
-
-
PiperOrigin-RevId: 520724148 Change-Id: Ia90c4a711649e89454bc2ca0a9d0d771d56e79c0
Abseil Team committed -
This change fixes -Wimplicit-const-int-float-conversion warnings by making the conversions explicit. PiperOrigin-RevId: 520707623 Change-Id: Ib6917469120cd7458257195cbf39beb3fd397543
Derek Mauro committed -
For function N in the stack, the current code reports the size of frame N - 1. Fix that. PiperOrigin-RevId: 520688072 Change-Id: I984729f72f79aebae1b6997cb51d3ddef9199d1e
Abseil Team committed -
These have nothing to do with copy construction or copy assignment, and using "is trivially copy constructible" can in theory even give the wrong result if the copy constructor is trivial but the move constructor is not. PiperOrigin-RevId: 520488816 Change-Id: I6da4d57f3ce23b03044e0bf9aa70a14b51651fa3
Aaron Jacobs committed
-
- 29 Mar, 2023 1 commit
-
-
PiperOrigin-RevId: 520197681 Change-Id: I96d0253b61bb683bf30060a9b4c19e2c9dce629b
Abseil Team committed
-
- 28 Mar, 2023 1 commit
-
-
PiperOrigin-RevId: 519939158 Change-Id: I9b049fa55167ed4064f3909887eec7bc52601677
Evan Brown committed
-
- 27 Mar, 2023 4 commits
-
-
It currently gives the wrong result for types with a user-provided destructor: struct S { ~S(); }; static_assert(!__is_trivially_relocatable(S)); PiperOrigin-RevId: 519855600 Change-Id: I5f0659ad0831974805a5ed4b615e3b6250d23154Aaron Jacobs committed -
There's no reason to require the type to be trivially copy-constructible/assignable in order to avoid running destructors—those traits have nothing to do with destruction. PiperOrigin-RevId: 519822201 Change-Id: I2ed7bbb53f0c1a512017115ff29fb27a24c6b11a
Aaron Jacobs committed -
absl int128: avoid shifting signed integer by a number of bits greater than or equal to the precision of the operand PiperOrigin-RevId: 519808237 Change-Id: I9123b167b606d609b8f3924d6f4fd298fa866a90
Abseil Team committed -
PiperOrigin-RevId: 519786979 Change-Id: Ic5b69c1ac37b47db01d613edca5504e6611657b5
Abseil Team committed
-
- 25 Mar, 2023 3 commits
-
-
We can do a lot better than always saying "no" on platforms without the __is_trivially_relocatable builtin. This will allow using this type trait from the move constructors of InlinedVector in a future CL, without needing to open code the fallback logic. PiperOrigin-RevId: 519281125 Change-Id: I0d55f019331966f58074850d6f77c7eab49f2c53
Abseil Team committed -
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
Abseil Team committed -
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
Abseil Team committed
-
- 24 Mar, 2023 4 commits
-
-
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
Abseil Team committed -
PiperOrigin-RevId: 519200954 Change-Id: I349023cacab0ac4cbefb8505efd29a5eda1e9067
Abseil Team committed -
In preparation for changing its definition in an upcoming commit. PiperOrigin-RevId: 519141790 Change-Id: I49b608a575ad41e2f29d82489c1c09eec8c4d7e5
Abseil Team committed -
PiperOrigin-RevId: 519090305 Change-Id: Ic97a36da33e1e0681765a913f3c54c3d818eebdc
Gennadiy Rozental committed
-
- 23 Mar, 2023 3 commits
-
-
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
Derek Mauro committed -
PiperOrigin-RevId: 518850294 Change-Id: I3e9dcce5de2ae878d0992f05c0f39ccaf10a1ac5
Abseil Team committed -
PiperOrigin-RevId: 518835147 Change-Id: I86d8a49563cb5f74461a57e2b6dceac539749c86
Abseil Team committed
-
- 21 Mar, 2023 2 commits
-
-
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
Derek Mauro committed -
PiperOrigin-RevId: 518198160 Change-Id: Ib4fe53e0b0b371472b6b9473aeb84779953b6a38
Gennadiy Rozental committed
-
- 20 Mar, 2023 4 commits
-
-
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
Derek Mauro committed -
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
Derek Mauro committed -
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
Abseil Team committed -
Also makes `ABSL_INTERNAL_LOG(LEVEL(x), "oops")` not call unreachable (even when x == kFatal) for consistency. PiperOrigin-RevId: 517894304 Change-Id: I798b1032d126330ace1e2b48edd8fc547a2ad2f8
Wiktor Garbacz committed
-
- 16 Mar, 2023 4 commits
-
-
Windows tests often run in Emulation, and even with KVM we can still timeout. PiperOrigin-RevId: 517192968 Change-Id: I3b4e435f8ac8ad1e7eab6f043c051fa75efed64b
Tom Rybka committed -
PiperOrigin-RevId: 517142676 Change-Id: If50a1bf5f92da166d6b4923110ec8b25446b6b11
Dave MacLachlan committed -
Be more consistent in the documentation and variable declarations for base64 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
Abseil Team committed -
truncates, and floating-point multiplication/division, which rounds. PiperOrigin-RevId: 517016481 Change-Id: I3b0c357ea7236f2c0231df5e6b47c742c3f40047
Abseil Team committed
-
- 15 Mar, 2023 4 commits
-
-
Add StrContainsIgnoreCase() to strings/match.h; all the other case-sensitive methods in this file have corresponding case-insensitive ones. PiperOrigin-RevId: 516933773 Change-Id: Iaec41afd923b10bc493ad864c0ecfe85a1fe2db8
Greg Falcon committed -
#1414 PiperOrigin-RevId: 516896705 Change-Id: Icd4ce24467ef9830ebbc68189addebb2ed1e95d4
Derek Mauro committed -
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
Derek Mauro committed -
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
Henner Zeller committed
-
- 14 Mar, 2023 1 commit
-
-
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
Derek Mauro committed
-