- 12 Mar, 2024 3 commits
-
-
PiperOrigin-RevId: 615047295 Change-Id: I86e5de8543dc1ebee6d5a526846e9121b241b0fa
Abseil Team committed -
PiperOrigin-RevId: 615030645 Change-Id: Ia0ff3e649c6155c44d4772ce32fbcd4c5b273cc7
Evan Brown committed -
PiperOrigin-RevId: 615017130 Change-Id: I73277de8ece31d6a35b47dbdb205b473324b74a2
Abseil Team committed
-
- 11 Mar, 2024 3 commits
-
-
PiperOrigin-RevId: 614701769 Change-Id: I7c2143dd467e376eb4936ef894f3413bba681419
Evan Brown committed -
std:: equivalents PiperOrigin-RevId: 614687225 Change-Id: I07421db08ee9c221e561f42e3bf8345fb5321401
Derek Mauro committed -
PiperOrigin-RevId: 614670264 Change-Id: Id6b1cffa4e104a82234130977235f1eb1021968f
Abseil Team committed
-
- 07 Mar, 2024 2 commits
-
-
Addition and subtraction operators std::array::iterator are defined only for ptrdiff_t, which is signed, instead of size_t, which is unsigned. Therefore, adding the index variable to ar.begin() will trigger -Wsign-conversion if std::array::iterator is not a raw pointer because the index variable will be implicitly converted from size_t (an unsigned type) to ptrdiff_t (a signed type). To fix this, we explicitly static_cast index to a ptrdiff_t. PiperOrigin-RevId: 613662928 Change-Id: I5e06c2261d7b8f167fae7bb6acece076257f8579
Abseil Team committed -
PiperOrigin-RevId: 613590317 Change-Id: I69f095681102e5492916085ada0eed085a75765b
Evan Brown committed
-
- 06 Mar, 2024 4 commits
-
-
PiperOrigin-RevId: 613326708 Change-Id: I6e5ca195f208b8da0d21d70b5a035bfdc64f866d
Evan Brown committed -
PiperOrigin-RevId: 613305668 Change-Id: Ifc247f48ea476745eaaf0dd41dbdab8404a6cafb
Evan Brown committed -
Details: - We use the space for control/slots pointers as the inline buffer. - We use a max inline capacity of 1 to make the implementation much simpler and to avoid having to randomize the iteration order for inline tables. - For iteration of inline tables, we introduce the kSooControl buffer which just has 1 full control byte followed by 1 sentinel control byte so that incrementing yields an end() iterator. We don't access kSooControl during lookups - only iteration. PiperOrigin-RevId: 613253492 Change-Id: Id98ff11842f8bef27ac7ed88138dc03b46ce4fa6
Evan Brown committed -
PiperOrigin-RevId: 613141617 Change-Id: Ife68495d4a5951b734db7407fb99686cf45a5133
Vitaly Goldshteyn committed
-
- 04 Mar, 2024 3 commits
-
-
PiperOrigin-RevId: 612560213 Change-Id: Id75dfd1222a0bed8ec72ce21e4a97b1d09fc9eaa
Vitaly Goldshteyn committed -
PiperOrigin-RevId: 612509928 Change-Id: I90de2e6bd229bf5cf71a27e9c491bc2794e9265f
Abseil Team committed -
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1632 Prior art for the `vector::erase` optimization: https://github.com/AmadeusITGroup/amc/blob/efcb7be/include/amc/vectorcommon.hpp#L176-L180 https://github.com/bloomberg/bde/blob/e15f05be6/groups/bsl/bslalg/bslalg_arrayprimitives.h#L3787-L3799 https://github.com/facebook/folly/blob/d24bf04/folly/FBVector.h#L1254-L1262 https://github.com/qt/qtbase/blob/fbfee2d/src/corelib/tools/qarraydataops.h#L856-L861 Merge 6ce011079ccf945ae95434ce45ea6c5e3a088af8 into 55d28d4b Merging this change closes #1632 COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1632 from Quuxplusone:trivial-erase 6ce011079ccf945ae95434ce45ea6c5e3a088af8 PiperOrigin-RevId: 612278964 Change-Id: I327ace8a38292b4610c6be031cc334e77c76fd35
Arthur O'Dwyer committed
-
- 03 Mar, 2024 1 commit
-
-
PiperOrigin-RevId: 612201313 Change-Id: Ia9e7f146f5e1ecaffcb15de694049b716db38d02
Vitaly Goldshteyn committed
-
- 29 Feb, 2024 2 commits
-
-
* It is stated in prose that the methods on `absl::NoDestructor` can never return a null pointer * Now this is annotated via nullability annotations as well PiperOrigin-RevId: 611619075 Change-Id: I078a5628430b7b221c009a5dcb849efe30409c28
Lawrence Wolf-Sonkin committed -
PiperOrigin-RevId: 611321915 Change-Id: Ia63e3e2f66981d9e4f5b97f6df276b8195459ba2
Abseil Team committed
-
- 28 Feb, 2024 4 commits
-
-
Instead of casting an int to the enum type where the int does not have an associated enum value, cast the enum to its underlying type. This should be no functional change but make some linters happier. PiperOrigin-RevId: 611172311 Change-Id: I9ae10f8fa2029014236f60a90ee2ab2273c66fa5
Paul Rigge committed -
PiperOrigin-RevId: 611151721 Change-Id: Ic7b342770fb3e1aab8e54ff125f1529534eedc3c
Derek Mauro committed -
Workaround for NVIDIA C++ compiler being unable to parse variadic expansions in range of range-based for loop Fixes: #1629 PiperOrigin-RevId: 611131201 Change-Id: I787731e00207b544ee16055e6e0d323a5094a433
Abseil Team committed -
Breaks unit tests PiperOrigin-RevId: 611077608 Change-Id: Ie024c299af75407e9798309f8cbf76abf60f9ee2
Abseil Team committed
-
- 27 Feb, 2024 4 commits
-
-
Having DLOG(FATAL) be [[noreturn]] in debug builds makes dead-code warnings impossible to satisfy between the release and debug build. PiperOrigin-RevId: 610851706 Change-Id: I07104d6687e2b1a8472ee3ea876d5fd74a70574e
Abseil Team committed -
Optimize `absl::Duration` division and modulo: Avoid repeated redundant comparisons in `IDivFastPath`. PiperOrigin-RevId: 610758911 Change-Id: I3d0fa2f52a3bd75bdd2b5c365d79878b4160bd29
Abseil Team committed -
Optimize `absl::Duration` division and modulo: Allow the compiler to inline `time_internal::IDivDuration`, by splitting the slow path to a separate function. With that change, the compiler can inline the fast path. This is specially important in the context of `Duration::operator%=`, because it allows proving that the return value is unused, therefore avoiding expensive multiplies and divides (e.g. `*q = num_hi / den_hi;`). ``` name old cpu/op new cpu/op delta BM_Duration_Modulo 23.1ns ± 0% 22.5ns ± 0% -2.42% (p=0.000 n=20+16) BM_Duration_Modulo_FastPath 7.05ns ± 0% 4.85ns ± 0% -31.17% (p=0.000 n=20+20) name old time/op new time/op delta BM_Duration_Modulo 23.1ns ± 0% 22.6ns ± 0% -2.43% (p=0.000 n=20+16) BM_Duration_Modulo_FastPath 7.06ns ± 0% 4.86ns ± 0% -31.18% (p=0.000 n=20+20) name old INSTRUCTIONS/op new INSTRUCTIONS/op delta BM_Duration_Modulo 188 ± 0% 178 ± 0% -5.32% (p=0.000 n=20+20) BM_Duration_Modulo_FastPath 84.0 ± 0% 62.0 ± 0% -26.19% (p=0.000 n=20+20) name old CYCLES/op new CYCLES/op delta BM_Duration_Modulo 73.8 ± 0% 72.1 ± 0% -2.27% (p=0.000 n=19+20) BM_Duration_Modulo_FastPath 22.5 ± 0% 15.5 ± 0% -31.13% (p=0.000 n=19+20) ``` Note: We don't need to expose `absl::time_internal::IDivDuration` at all given that we have a public `absl::IDivDuration`. PiperOrigin-RevId: 610710635 Change-Id: Ief7c3d5b1c000b397d931e9249edcaef96e7151e
Abseil Team committed -
PiperOrigin-RevId: 610672905 Change-Id: I8e4ae98bb6e6421540a3073e3e6cb7de60fd32a9
Abseil Team committed
-
- 26 Feb, 2024 1 commit
-
-
PiperOrigin-RevId: 610398878 Change-Id: Iec7570af855b61ad49faba1d29fdf41674a9bd50
Abseil Team committed
-
- 23 Feb, 2024 2 commits
-
-
The current version violates the Google C++ style guide - see https://google.github.io/styleguide/cppguide.html#Formatting_Looping_Branching. This code does not fit into the historical exception that "the curly braces for the controlled statement or the line breaks inside the curly braces may be omitted if as a result the entire statement appears on either a single line (in which case there is a space between the closing parenthesis and the controlled statement) or on two lines (in which case there is a line break after the closing parenthesis and there are no braces)." PiperOrigin-RevId: 609789188 Change-Id: Id7ae9596e454dac5581d19939564c07670077f92
Evan Brown committed -
Optimize `prepare_insert`, when resize happens. It removes single unnecessary probing before resize that is beneficial for small tables the most. PiperOrigin-RevId: 609547787 Change-Id: If6584919b4c93945ea078b1c1a9f57b355dce924
Vitaly Goldshteyn committed
-
- 22 Feb, 2024 2 commits
-
-
This resolves a couple of Clang Tidy performance warnings. PiperOrigin-RevId: 609394317 Change-Id: Ibebc7e3f7121355b8660284e18c110bb9171d61c
Abseil Team committed -
PiperOrigin-RevId: 609351346 Change-Id: I40f44d42efe65fd8ca1a441e69a0769c87938b20
Abseil Team committed
-
- 21 Feb, 2024 4 commits
-
-
PiperOrigin-RevId: 609064443 Change-Id: Ifaeb53ae2d50bcef1ef6f67e662173b59c3fb8a2
Abseil Team committed -
PiperOrigin-RevId: 609058024 Change-Id: I2f7cc2daf862e7e2d23acd6dd3fe85cb1945d5f0
Evan Brown committed -
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1618 I noticed while working on #1615 that `inlined_vector` could use the trivial relocatability trait here, too. Here the memcpy codepath already exists; we just have to opt in to using it. Merge 567a1dd9b6b3352f649e900b24834b59e39cfa14 into a7012a5b Merging this change closes #1618 COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1618 from Quuxplusone:trivial-swap 567a1dd9b6b3352f649e900b24834b59e39cfa14 PiperOrigin-RevId: 609019296 Change-Id: I4055ab790245752179e405b490fcd479e7389726
Arthur O'Dwyer committed -
PiperOrigin-RevId: 608947694 Change-Id: Ie53a91c4d78dcb80c57227616b488ec64b23c588
Abseil Team committed
-
- 20 Feb, 2024 5 commits
-
-
PiperOrigin-RevId: 608770171 Change-Id: Icca54086037e42826c272f04374aeb33d060ace5
Abseil Team committed -
Motivation: the implementation becomes more complicated with small object optimization. PiperOrigin-RevId: 608742838 Change-Id: I55fc42321b1967f9c7bbee49817a2f2d4ee44b56
Evan Brown committed -
PiperOrigin-RevId: 608705933 Change-Id: I9c11d8d8b3d9057bdf215863210f450332cf56cb
Derek Mauro committed -
PiperOrigin-RevId: 608661989 Change-Id: Ibfd94f8b2d23fd232bf93904ed68e11a400b3644
Abseil Team committed -
This often indicates a bug from adding synchronization logic but not using it. PiperOrigin-RevId: 608600311 Change-Id: I48bc3ae18b1e9a00b5e2152f33b486cd6be324a1
Chris Kennelly committed
-