| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
PiperOrigin-RevId: 487394692
Change-Id: I55e9b57055483dc921e9773c3643ea9be4f9bdf6
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
PiperOrigin-RevId: 487292771
Change-Id: I2454e28fe91017fb2954a4ad194712fcafe893d2
|
|
|
|
|
| |
PiperOrigin-RevId: 486867412
Change-Id: Ib54b1acaf1ea57f8f377c87261d7d52e9a48784f
|
|
|
|
|
|
|
| |
in a couple places, plus several more that have yet to be released.
PiperOrigin-RevId: 486759835
Change-Id: Ib1b24f287f856ca38b691fbce7e747f0f5a34626
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
emplace{_hint} tests.
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: Ie90d33c584a6caccd8301ad6fc0396234dbbfac4
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
PiperOrigin-RevId: 486480813
Change-Id: I05292dd0550dfb4130bbe47eafa96ff5b58c040b
|
|
|
|
|
| |
PiperOrigin-RevId: 486227733
Change-Id: If492d715e5758971cf7bd0ccd748b47b1424a3c7
|
|
|
|
|
| |
PiperOrigin-RevId: 486023797
Change-Id: I0b82754fd40c2d6fb451f304aaf1d795eed8d009
|
|
|
|
|
| |
PiperOrigin-RevId: 485921596
Change-Id: I453801e3d7b4a60ecedf173d448c8b6f51cb0b2e
|
|\
| |
| |
| |
| | |
PiperOrigin-RevId: 485886212
Change-Id: Ic7a710913f8376d07b9bdeb987d007ec04e48465
|
|\ \
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 485885633
Change-Id: Idfaf6ce22a9421fe05ae38029c8a68b720ce50ba
|
| | |
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 485868656
Change-Id: I09d70adc570b6b79a80c29f89601186aab390032
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| | |
a macro in a third-party library.
PiperOrigin-RevId: 485653193
Change-Id: I0615ceb9ea3e1533a989470e7c9863c86b70698b
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 485575914
Change-Id: If1752252e3cc2f91dc3c171382c9fb3a4def0377
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 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
|
| |
| |
| |
| |
| |
| |
| | |
empty cord twice in a row.
PiperOrigin-RevId: 485367641
Change-Id: I6605ff25acbcef7c40b68e15a8888076a2da63be
|
| |
| |
| |
| |
| |
| |
| | |
the element being extracted).
PiperOrigin-RevId: 485120182
Change-Id: Ic54d538721678bed0a748dacbf33c319e62b93b8
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 485070787
Change-Id: Ie62021eaf84f5a43e8943d3167e98e3986fcf5a6
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 485054062
Change-Id: Ieafa217b562548f8bb8dc6fc4e1e414f8ede0579
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 484578104
Change-Id: Ie4be3e4de27dc28d88395e16fd075fb10ab7a302
|
| |
| |
| |
| |
| |
| |
| | |
file.
PiperOrigin-RevId: 484419458
Change-Id: Ic2c1afa1a3434ac071c01ae2e6c75dee41b1f069
|
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 484181180
Change-Id: I00206c1506a25dca5555261d6500c1e54368a368
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ABSL_RANDOM_RANDEN_COPTS
Everything works fine when this is empty
Fixes #1301
PiperOrigin-RevId: 484014466
Change-Id: I2fa96d845320f23063e1e86ee2df3ac14bd44012
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 483972593
Change-Id: I5358871cdf825bbfae65bf9f5872c4fd56005fb7
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 483752526
Change-Id: Ie6b63a4a3cc7593e5b8bf255ba571a77d609ce04
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Check for invalid generation before checking for other types of invalid iterators.
- Check specifically for dereferencing end() iterators.
PiperOrigin-RevId: 483725646
Change-Id: Ibca19c48b1b242384683580145be8fb9ae707bc8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 482905442
Change-Id: Ic3a1e62f8a17efee5508d94835635aa489940f2d
|
| |
| |
| |
| |
| |
| | |
Bug: chromium:1292951
PiperOrigin-RevId: 482767615
Change-Id: Ia1e812fa7bde8753b17046ed325542ad41f30f9b
|
| |
| |
| |
| |
| |
| | |
Bug: chromium:1292951
PiperOrigin-RevId: 482287305
Change-Id: I896033c7c8b2645eacab974c4364c6ba66d38cb6
|
| |
| |
| |
| |
| |
| | |
Bug: chromium:1292951
PiperOrigin-RevId: 482021281
Change-Id: I01c25dcb2dae82fcee25da00aefec4484f7c409d
|
| |
| |
| |
| |
| |
| |
| | |
count().
PiperOrigin-RevId: 481979737
Change-Id: I69f53665b0463a7d8d80f2a3feedfdd95d32b012
|
| |
| |
| |
| |
| |
| |
| | |
it to OSS.
PiperOrigin-RevId: 481865072
Change-Id: I46364ec07df6aaff25911f8bd9e40dfee6c60626
|
| |
| |
| |
| |
| |
| | |
Bug: chromium:1292951
PiperOrigin-RevId: 481757795
Change-Id: I03c808222c6c4d3d7052576ab4b36141e5f1ebbc
|
| |
| |
| |
| |
| |
| |
| | |
The SetLogtostderr and SetAlsologtostderr tests are setting flags that cause the stderrthreshold global value to be out of sync with the stderrthreshold flag. As a result, it is not currently possible to remove order dependency with these existing tests.
PiperOrigin-RevId: 481731395
Change-Id: Ie992520982f2e69821d1d1b660e3326bf745ef0d
|
| |
| |
| |
| |
| |
| |
| |
| | |
btree iterators.
Note: btree_iterator::operator- is still O(N) because in the worst case (end()-begin()), we will have at least one operation per node in the tree, and there are at least N/M nodes, where M (a constant) is the maximum number of values per node.
PiperOrigin-RevId: 481716874
Change-Id: Ic0225b7509208ed96b75a2dc626d2aa4a24f4946
|
|\ \
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 481654034
Change-Id: I8cb2ba51fec831a24a56e62022e210191e732687
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
strings.
PiperOrigin-RevId: 481568970
Change-Id: Icb132348f62fed4c0168aac4963b3313a060890b
|
|/ /
| |
| |
| |
| | |
This corrects the generated .pc files, so these libs match the other libs
already included there.
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 481192073
Change-Id: I1e3296f6be4ddf73bd5c7164f4673e97a0c2c408
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
absl::Substitute.
We are also moving some internals into an internal header.
`HasAbslStringify` was not previously in an internal namespace but was intended
to be and has now been moved to an internal namespace. This is in adherence to
our compatibility guidelines which wave requirements for APIs within their
first 30 days of public release (See https://abseil.io/about/compatibility for
details).
PiperOrigin-RevId: 481190705
Change-Id: I4c0c348f269ea8d76ea3d4bd5a2c41cce475dc04
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Addresses failures with the following, in some files:
-Wshorten-64-to-32
-Wimplicit-int-conversion
-Wsign-compare
-Wsign-conversion
-Wtautological-unsigned-zero-compare
(This specific CL enables these warnings and fixes the remaining known issues.)
Bug: chromium:1292951
PiperOrigin-RevId: 480981210
Change-Id: I92d5023c6833e24d6aa29b10d433116329972f41
|
| |
| |
| |
| |
| | |
PiperOrigin-RevId: 480945608
Change-Id: I3e90a105c793deee02fbef322946bf7d5340dc78
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This moves inlined code around a bit without changing anything bar the names of things. The purpose for all this is that it greatly simplifies the process of adding memory poisining to Cord / InlineData. InlineData can have scoped poison / unpoison regions around the interface, calling into rep for the 'real code'. I.e.:
Rep::as_chars() { return &inline_data[1]; }
InlineData::as_chars() {
Unpoisoned self(this);
return rep_.as_chars();
}
Likewise, it greatly simplifies intercepting the code for constructors, copy constructors and operator= logic.
PiperOrigin-RevId: 480893031
Change-Id: I050c88caff2315939d95a0361ae20528be36a96b
|