summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* Remove not used after all kAllowRemoveReentrance parameter from ↵Gravatar Vitaly Goldshteyn2024-06-20
| | | | | | | | | IterateOverFullSlots. We decided to not allow reentrance in absl::erase_if and absl::container_internal::c_for_each_fast. PiperOrigin-RevId: 645273965 Change-Id: I75dfc73b93ba10f0e051bf0833723af887e1bb36
* Create `absl::container_internal::c_for_each_fast` for SwissTable.Gravatar Vitaly Goldshteyn2024-06-20
| | | | | | | | | | | | | | | | | | This function is aimed to achieve faster iteration through the entire hash table. It is not ready to be used by the public and stays in `container_internal` namespace. Differences with `absl::c_for_each`: 1. No guarantees on order of iteration. Although for the hash table it is partially not guaranteed already. But we do not even guarantee that it is the same order as in the for loop range. De facto, the order is the same at the moment. 2. No mutating reentrance is allowed. Most notably erasing from the hash_table is not allowed. Based on microbenchmarks, there are following conclusions: 1. c_for_each_fast is clearly faster on big tables with 20-60% speedup. 2. Microbenchmarks show regression on a full small table without any empty slots. We should avoid recommending that for small tables. 3. It seems reasonable to use `c_for_each_fast` in places, where `skip_empty_or_deleted` has significant GCU usage. `skip_empty_or_deleted` usage signals that there are "gaps" between elements, so `c_for_each_fast` should be an improvement. PiperOrigin-RevId: 645142512 Change-Id: I279886b8c8b2545504c2bf7e037d27b2545e044d
* Disable flaky test cases in kernel_timeout_internal_test.Gravatar Evan Brown2024-06-20
| | | | | PiperOrigin-RevId: 645054874 Change-Id: Ic4a820b47edfa71bd3e1f149d54f00ac3c1d16a6
* Document that swisstable and b-tree containers are not exception-safe.Gravatar Evan Brown2024-06-20
| | | | | | | For performance reasons, these containers are optimized for the case in which allocations/deallocations/comparisons/hashers can't throw exceptions. PiperOrigin-RevId: 645054627 Change-Id: I99be651b26f5bbb87da6ef246b92b20a375224d7
* Add `ABSL_NULLABILITY_COMPATIBLE` attribute.Gravatar Martin Brænne2024-06-17
| | | | | | | | | | | | | | | | This is a replacement for the `absl_nullability_compatible` tag. The attribute has the advantage that, unlike the tag, it can be applied to forward declarations. This does not yet change the implementation of the nullability annotations -- that will come in a followup patch. As the nullability annotations themselves have not been changed, the `absl_nullability_compatible` tag is currently still used to check whether the annotations can be applied to a given type; see also the comments in the code. PiperOrigin-RevId: 644238698 Change-Id: I5882606f82ce7a6dd98e83e6d920573437561b50
* LSC: Move expensive variables on their last use to avoid copies.Gravatar Abseil Team2024-06-17
| | | | | PiperOrigin-RevId: 644150551 Change-Id: I11f3f8463fcfdb8d0284b1ab320624bbce6d1e48
* Add ABSL_INTERNAL_ATTRIBUTE_VIEW and ABSL_INTERNAL_ATTRIBUTE_OWNER ↵Gravatar Abseil Team2024-06-17
| | | | | | | attributes to more types in Abseil PiperOrigin-RevId: 643946867 Change-Id: Ia4fb583872dabd72c48cc4c20fe23a64dea517a6
* Drop std:: qualification from integer types like uint64_t.Gravatar Chris Mihelich2024-06-14
| | | | | PiperOrigin-RevId: 643418422 Change-Id: Ib16cfef8ddedc8366df49ca75ab02eb60af08f26
* Increase slop time on MSVC in PerThreadSemTest.Timeouts again due to ↵Gravatar Evan Brown2024-06-14
| | | | | | | continued flakiness. PiperOrigin-RevId: 643372086 Change-Id: I8fb2acc0e5ad35113e865bf008a531f3442a9295
* Turn on validation for out of bounds MockUniform in MockingBitGenGravatar Justin Bassett2024-06-13
| | | | | | | | | | | | | | | | | | | | | | | | | This makes MockUniform fail if the action is specified to return an out of bounds value. Examples that will fail: absl::Uniform(gen, 1, 4) -> 42 absl::Uniform(gen, 1, 4) -> 4: [1, 4) absl::Uniform(absl::IntervalOpenClosed, gen, 1, 4) -> 1: (1, 4] Examples that will pass: absl::Uniform(gen, 1, 4) -> 3 absl::Uniform(gen, 1, 4) -> 1: [1, 4) absl::Uniform(absl::IntervalClosed, gen, 1, 4) -> 4: [1, 4] Special case: the empty range always returns its boundary, so this case passes: absl::Uniform(absl::IntervalOpen, 1, 1) -> 1: (1, 1) If this breaks your test, your test has a bug: it's relying on an absl::Uniform() call that returns an impossible value. The UnvalidatedMockingBitGen type temporarily exists to allow for disabling the validation to give a bit of time to fix the test, but this type will go away soon. PiperOrigin-RevId: 643090275 Change-Id: I23470fa9e1efbcb42fa3866237038414545c7be2
* Use ABSL_UNREACHABLE() instead of equivalentGravatar Derek Mauro2024-06-13
| | | | | PiperOrigin-RevId: 643024432 Change-Id: Id07aa18d186291442f7b6f3c68ef8dd6cc20b434
* If so configured, report which part of a C++ mangled name didn't parse.Gravatar Chris Mihelich2024-06-12
| | | | | PiperOrigin-RevId: 642757934 Change-Id: I6dffe81e5173201b80a107b951fe1c69b20972f5
* Sequence of 1-to-4 values with prefix sum to support Punycode decoding.Gravatar Chris Mihelich2024-06-12
| | | | | PiperOrigin-RevId: 642696557 Change-Id: Ia6b8e174ddb55e44bd082bf0d81d2f9c53c94016
* Add the missing inline namespace to the nullability filesGravatar Derek Mauro2024-06-12
| | | | | PiperOrigin-RevId: 642621989 Change-Id: I95efa4bd9fe8fe3c449304706401374f851f0fbe
* Add ABSL_INTERNAL_ATTRIBUTE_VIEW and ABSL_INTERNAL_ATTRIBUTE_OWNER ↵Gravatar Abseil Team2024-06-12
| | | | | | | attributes to types in Abseil PiperOrigin-RevId: 642619703 Change-Id: I8d2e423a3c7f40709d0e8c82cac0395c75d601cf
* Disallow reentrance removal in `absl::erase_if`.Gravatar Vitaly Goldshteyn2024-06-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Predicates should generally have no side effects since we do not guarantee the order or quantity for the calls. In this change we forbid one specific side effect: modification of the table we are iterating over. As a positive effect we have performance improvements (less computations and less branches). ``` name old cpu/op new cpu/op delta BM_EraseIf/num_elements:10/num_erased:0 3.02ns ± 2% 2.79ns ± 3% -7.44% (p=0.000 n=35+37) BM_EraseIf/num_elements:1000/num_erased:0 2.41ns ± 5% 2.05ns ± 4% -14.88% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:5 4.40ns ± 3% 4.22ns ± 3% -4.19% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:500 9.16ns ± 4% 9.13ns ± 3% ~ (p=0.307 n=37+37) BM_EraseIf/num_elements:10/num_erased:10 5.77ns ± 3% 5.50ns ± 4% -4.62% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:1000 7.84ns ± 3% 7.77ns ± 3% -0.94% (p=0.006 n=37+35) name old time/op new time/op delta BM_EraseIf/num_elements:10/num_erased:0 3.02ns ± 2% 2.79ns ± 3% -7.48% (p=0.000 n=35+36) BM_EraseIf/num_elements:1000/num_erased:0 2.41ns ± 5% 2.05ns ± 4% -14.89% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:5 4.42ns ± 3% 4.23ns ± 3% -4.22% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:500 9.18ns ± 4% 9.15ns ± 3% ~ (p=0.347 n=37+37) BM_EraseIf/num_elements:10/num_erased:10 5.79ns ± 3% 5.52ns ± 4% -4.61% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:1000 7.87ns ± 3% 7.79ns ± 3% -0.95% (p=0.007 n=37+35) name old INSTRUCTIONS/op new INSTRUCTIONS/op delta BM_EraseIf/num_elements:10/num_erased:0 14.9 ± 0% 12.9 ± 0% -13.46% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:0 12.7 ± 0% 10.3 ± 0% -18.76% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:5 30.9 ± 0% 28.9 ± 0% -6.48% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:500 37.6 ± 0% 35.3 ± 0% -6.33% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:10 46.9 ± 0% 44.9 ± 0% -4.27% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:1000 62.6 ± 0% 60.2 ± 0% -3.80% (p=0.000 n=37+36) name old CYCLES/op new CYCLES/op delta BM_EraseIf/num_elements:10/num_erased:0 4.91 ± 1% 4.11 ± 1% -16.35% (p=0.000 n=36+35) BM_EraseIf/num_elements:1000/num_erased:0 7.74 ± 2% 6.54 ± 2% -15.54% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:5 9.18 ± 3% 8.45 ± 3% -7.88% (p=0.000 n=37+35) BM_EraseIf/num_elements:1000/num_erased:500 29.5 ± 1% 29.3 ± 1% -0.82% (p=0.000 n=36+37) BM_EraseIf/num_elements:10/num_erased:10 13.5 ± 1% 12.6 ± 0% -7.06% (p=0.000 n=33+34) BM_EraseIf/num_elements:1000/num_erased:1000 25.1 ± 0% 24.9 ± 0% -0.90% (p=0.000 n=37+35) ``` PiperOrigin-RevId: 642318040 Change-Id: I78a4a5a9a5881db0818225f9c7c153c562009f66
* Fix implicit conversion of temporary bitgen to BitGenRefGravatar Abseil Team2024-06-10
| | | | | | | There is no reason a temporary *shouldn't* be usable with BitGenRef (indeed, ABSL_ATTRIBUTE_LIFETIME_BOUND should catch errors) and it is useful when passing a temporary bitgen as an input argument. PiperOrigin-RevId: 642021132 Change-Id: I03e46f5f437e40a0c6225ea1f0361475a3501513
* Use `IterateOverFullSlots` in `absl::erase_if` for hash table.Gravatar Vitaly Goldshteyn2024-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `EraseIf` itself is not very hot function, but I want to use that as demonstration of the speed of iteration via `IterateOverFullSlots`. Motivation: 1. We are still going to save some resources. 2. It is the first step to implement faster `absl::c_for_each` that may give larger benefits. Will require readability considerations. `BM_EraseIf/num_elements:1000/num_erased:0` is just iteration and it gives 60% speed up. On smaller tables removing all elements shows 25% speed up. Note that on small tables erasing is much faster due to cl/592272653. ``` name old cpu/op new cpu/op delta BM_EraseIf/num_elements:10/num_erased:0 3.41ns ± 5% 3.03ns ± 3% -11.14% (p=0.000 n=37+35) BM_EraseIf/num_elements:1000/num_erased:0 6.06ns ± 3% 2.42ns ± 3% -60.05% (p=0.000 n=34+37) BM_EraseIf/num_elements:10/num_erased:5 5.90ns ± 3% 4.44ns ± 4% -24.88% (p=0.000 n=36+37) BM_EraseIf/num_elements:1000/num_erased:500 11.0ns ± 2% 9.2ns ± 2% -16.60% (p=0.000 n=35+37) BM_EraseIf/num_elements:10/num_erased:10 8.03ns ± 3% 5.77ns ± 2% -28.19% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:1000 9.00ns ± 3% 7.83ns ± 2% -12.98% (p=0.000 n=37+37) name old time/op new time/op delta BM_EraseIf/num_elements:10/num_erased:0 3.42ns ± 5% 3.04ns ± 3% -11.13% (p=0.000 n=37+36) BM_EraseIf/num_elements:1000/num_erased:0 6.07ns ± 3% 2.42ns ± 3% -60.10% (p=0.000 n=34+37) BM_EraseIf/num_elements:10/num_erased:5 5.93ns ± 3% 4.45ns ± 4% -24.89% (p=0.000 n=36+37) BM_EraseIf/num_elements:1000/num_erased:500 11.1ns ± 2% 9.2ns ± 2% -16.61% (p=0.000 n=35+37) BM_EraseIf/num_elements:10/num_erased:10 8.06ns ± 3% 5.79ns ± 2% -28.19% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:1000 9.03ns ± 3% 7.85ns ± 2% -12.98% (p=0.000 n=37+37) name old INSTRUCTIONS/op new INSTRUCTIONS/op delta BM_EraseIf/num_elements:10/num_erased:0 19.5 ± 1% 14.9 ± 0% -23.79% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:0 19.9 ± 0% 12.7 ± 0% -36.20% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:5 36.9 ± 1% 30.9 ± 0% -16.47% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:500 44.8 ± 0% 37.6 ± 0% -16.06% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:10 53.0 ± 1% 46.9 ± 0% -11.61% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:1000 69.8 ± 0% 62.6 ± 0% -10.32% (p=0.000 n=36+37) name old CYCLES/op new CYCLES/op delta BM_EraseIf/num_elements:10/num_erased:0 6.10 ± 7% 4.91 ± 1% -19.49% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:0 19.4 ± 1% 7.7 ± 2% -60.04% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:5 13.9 ± 4% 9.2 ± 3% -33.80% (p=0.000 n=37+37) BM_EraseIf/num_elements:1000/num_erased:500 35.5 ± 0% 29.5 ± 1% -16.74% (p=0.000 n=37+37) BM_EraseIf/num_elements:10/num_erased:10 20.8 ± 5% 13.5 ± 0% -35.07% (p=0.000 n=37+30) BM_EraseIf/num_elements:1000/num_erased:1000 28.9 ± 0% 25.1 ± 0% -13.06% (p=0.000 n=37+37) ``` PiperOrigin-RevId: 642016364 Change-Id: I8be6af5916bd45fd110bb0398c3ffe932a6a083f
* UTF-8 encoding library to support Rust Punycode decoding.Gravatar Chris Mihelich2024-06-10
| | | | | PiperOrigin-RevId: 641983507 Change-Id: Iad7933884aef6bfd90d159c049a1d698d19456c6
* Disable negative NaN float ostream format checking on RISC-VGravatar Benjamin Barenblat2024-06-10
| | | | | | | | | | | It’s not clear whether negative NaN floats are supposed to print as "-nan" or "nan" on RISC-V (https://cplusplus.github.io/LWG/issue4101). Until that’s resolved, don’t require that logging such a float with Abseil produce the same result as streaming it to an ostream does. Closes: https://github.com/abseil/abseil-cpp/issues/1684 PiperOrigin-RevId: 641942176 Change-Id: Iec7ef130cc15c114714f2d124cb37886b3c37ab4
* PR #1689: Minor: Add missing quotes in CMake string view library definitionGravatar Robert Schulze2024-06-10
| | | | | | | | | | | | Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1689 Merge c755474cd03d3da0efa68ec0605b183d24bfd5d6 into 2f61aed18c4affd3a75a2b2d2468d23f2f16192a Merging this change closes #1689 COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1689 from rschu1ze:missing-quotes c755474cd03d3da0efa68ec0605b183d24bfd5d6 PiperOrigin-RevId: 641896976 Change-Id: Iaf565a13ad639543c2f1ba698aefd18f8f48bede
* Demangle template parameter object names, TA <template-arg>.Gravatar Chris Mihelich2024-06-10
| | | | | PiperOrigin-RevId: 641893938 Change-Id: I8a21e322c9cf1d5dab7477af5367aad134fbf2ab
* Demangle sr St <simple-id> <simple-id>, a dubious encoding found in the wild.Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641418373 Change-Id: I2999228cccfd18a000725b938a692c0c9004867c
* Try not to lose easy type combinators in S::operator const int*() and the like.Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641411131 Change-Id: Icba1307cccb8957e09f087a7b544f7fe8bfd8333
* Demangle fixed-width floating-point types, DF....Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641400156 Change-Id: Ib9f6e4f6c4bbd6d3234dfd322d1d14a59b08d88a
* Demangle _BitInt types DB..., DU....Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641360162 Change-Id: Iabce55eb61feaa4dc099093a6496e26ab66906fa
* Demangle complex floating-point literals.Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641324572 Change-Id: Ie266da9c8c702e62b89352d64870fb41d2ea76c3
* Demangle <extended-qualifier> in types, e.g., U5AS128 for address_space(128).Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641310017 Change-Id: I0f10a2a1965e842db4efda455e0cdfbeb6656fa5
* Demangle operator co_await (aw).Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641291188 Change-Id: I02f6bae62b05c8964a3b6e8f78299061ce57e01a
* Demangle fully general vendor extended types (any <template-args>).Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641271471 Change-Id: Ibeedb4dea3b961955d073f048d293b19aa917792
* Demangle transaction-safety notations GTt and Dx.Gravatar Chris Mihelich2024-06-07
| | | | | PiperOrigin-RevId: 641249074 Change-Id: Id410ce6c3b7a9a2b10aedf9c70ec65d3e37af06d
* Demangle C++11 user-defined literal operator functions.Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 641046309 Change-Id: Iaa2564a60035421969c2cd6074a457980083cbd2
* Demangle C++20 constrained friend names, F (<source-name> | <operator-name>).Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 641011959 Change-Id: I844d4eb99a9f9da160bb53e491dee753a70750df
* Demangle dependent GNU vector extension types, Dv <expression> _ <type>.Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 640993627 Change-Id: I84073099907a3634eca4b12cd2e633908465907a
* Demangle elaborated type names, (Ts | Tu | Te) <name>.Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 640972027 Change-Id: I810aaa10e7761686d03854abab3198be8b2868cf
* Add validation that hash/eq functors are consistent, meaning that `eq(k1, ↵Gravatar Evan Brown2024-06-06
| | | | | | | | | k2) -> hash(k1) == hash(k2)`. Also add missing includes/dependencies in flat_hash_map_test. PiperOrigin-RevId: 640959222 Change-Id: I8d99544af05e97310045e6149f6ef6f7c82e552d
* Demangle delete-expressions with the global-scope operator, gs (dl | da) ....Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 640928445 Change-Id: I547f194ebb0a4482ecec627a7a03bab60e8e1c0b
* Demangle new-expressions with braced-init-lists.Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 640908672 Change-Id: I85bed6e7d79b24b693007c08acde8e28e3e1429c
* Demangle array new-expressions, [gs] na ....Gravatar Chris Mihelich2024-06-06
| | | | | PiperOrigin-RevId: 640891321 Change-Id: I2bc0f6b907d8af88446375409fb523158ae0e001
* Demangle object new-expressions, [gs] nw ....Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640688552 Change-Id: I843e5aed55f90eeb89e007389390d0aba705a3fe
* Demangle preincrement and predecrement, pp_... and mm_....Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640666300 Change-Id: I1dae13f515de5fae3768a54c3808b80083ed63f8
* Demangle throw and rethrow (tw... and tr).Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640648613 Change-Id: Ifb4c385e629e2649da61b2b49c786a320da05fc7
* Remove redundant check of is_soo() while prefetching heap blocks.Gravatar Abseil Team2024-06-05
| | | | | PiperOrigin-RevId: 640620462 Change-Id: I72c0a7f0f549404ad8310b8cebd7dd491341390b
* Demangle ti... and te... expressions (typeid).Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640616282 Change-Id: I2aa94673283d89458886f0634adec87bbf0e57de
* Demangle nx... syntax for noexcept(e) as an expression in a dependent signature.Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640590102 Change-Id: I2641cddd35119062328a197162bb700d8309fc05
* Demangle alignof expressions, at... and az....Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640568425 Change-Id: Id63142ff2e94d7f7ee16367f34a2e4ae81c29b4e
* Demangle C++17 structured bindings, DC...E.Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640547784 Change-Id: Ib230993a358f89258367a1c10271c47be3b724e5
* Demangle modern _ZGR..._ symbols.Gravatar Chris Mihelich2024-06-05
| | | | | PiperOrigin-RevId: 640517212 Change-Id: Ideaaf45d2104a3c82cc9b6807894554335e5b904
* Remove redundant check of is_soo() while prefetching heap blocks.Gravatar Abseil Team2024-06-04
| | | | | PiperOrigin-RevId: 640359514 Change-Id: Ic321d23cad283425c686536ae7be04a490a950d5
* Demangle sizeof...(pack captured from an alias template), sP ... E.Gravatar Chris Mihelich2024-06-04
| | | | | PiperOrigin-RevId: 640314320 Change-Id: I1020879b354c75558d3dba064bb3ea13bd667227