1. 30 Nov, 2022 2 commits
  2. 29 Nov, 2022 6 commits
  3. 28 Nov, 2022 8 commits
    • Write (more) directly into the structured buffer from StringifySink, including… · 13708db8
      Write (more) directly into the structured buffer from StringifySink, including for (size_t, char) overload.
      
      PiperOrigin-RevId: 491456410
      Change-Id: I76dec24b0bd02204fa38419af9247cee38b1cf50
      Andy Getzendanner committed
    • Avoid using the non-portable type __m128i_u. · 558a0e46
      According to https://stackoverflow.com/a/68939636 it is safe to use
      __m128i instead.
      
      https://learn.microsoft.com/en-us/cpp/intrinsics/x86-intrinsics-list?view=msvc-170 also uses this type instead
      
      Fixes #1330
      
      PiperOrigin-RevId: 491427300
      Change-Id: I4a1d44ac4d5e7c1e1ee063ff397935df118254a1
      Derek Mauro committed
    • Reduce flat_hash_{set,map} generated code size. · e5a7979d
      This CL makes a bunch of changes (mostly to raw_hash_set which
      underlies flat_hash_set and flat_hash_map). Techniques used:
      
      * Extract code that does not depend on the specific hash table type
        into common (non-inlined) functions.
      * Place ABSL_ATTRIBUTE_NOINLINE directives judiciously.
      * Out-of-line some slow paths.
      
      Reduces sizes of some large binaries by ~0.5%.
      
      Has no significant performance impact on a few performance critical
      binaries.
      
      ## Speed of fleetbench micro-benchmarks
      
      Following is a histogram of %-age changes in
      [fleetbench](https://github.com/google/fleetbench)
      hot_swissmap_benchmark results. Negative numbers indicate a speedup
      caused by this change. Statistically insignificant changes are mapped
      to zero.
      
      XXX Also run and merge in cold_swissmap_benchmark
      
      Across all 351 benchmarks, the average speedup is 0.38%.
      The best speedup was -25%, worst slowdown was +6.81%.
      
      ```
      Count: 351  Average: -0.382764  StdDev: 3.77807
      Min: -25  Median: 0.435135  Max: 6.81
      ---------------------------------------------
      [ -25, -10)  16  4.558%   4.558% #
      [  -9,  -8)   2  0.570%   5.128%
      [  -8,  -7)   1  0.285%   5.413%
      [  -7,  -6)   1  0.285%   5.698%
      [  -6,  -5)   2  0.570%   6.268%
      [  -5,  -4)   5  1.425%   7.692%
      [  -4,  -3)  13  3.704%  11.396% #
      [  -3,  -2)  15  4.274%  15.670% #
      [  -2,  -1)  26  7.407%  23.077% ##
      [  -1,   0)  14  3.989%  27.066% #
      [   0,   1) 185 52.707%  79.772% ############
      [   1,   2)  14  3.989%  83.761% #
      [   2,   3)   8  2.279%  86.040% #
      [   3,   4)   7  1.994%  88.034%
      [   4,   5)  32  9.117%  97.151% ##
      [   5,   6)   6  1.709%  98.860%
      [   6,   7)   4  1.140% 100.000%
      ```
      
      We looked at the slowdowns and they do not seem worth worrying
      about. E.g., the worst one was:
      
      ```
      BM_FindHit_Hot<::absl::node_hash_set,64>/set_size:4096/density:0
        2.61ns ± 1%  2.79ns ± 1%   +6.81%  (p=0.008 n=5+5)
      ```
      
      ## Detailed changes
      
      * Out-of-line slow paths in hash table sampler methods.
      * Explicitly unregister from sampler instead of from destructor.
      * Introduced a non-templated CommonFields struct that holds some of
        the hash table fields (infoz, ctrl, slots, size, capacity). This
        struct can be passed to new non-templated helpers. The struct is
        a private base class of raw_hash_set.
      * Made non-inlined InitializeSlots<> that is only templated on
        allocator and size/alignment of the slot type so that we can share
        instantiations across types that have the same size/alignment.
      * Moved some infrequently called code paths into non-inlined type-erased.
        functions. Pass a suite of type-specific function pointers to these
        routines for when they need to operate on slots.
      * Marked some methods as non-inlined.
      * Avoid unnecessary reinitialization in destructor.
      * Introduce UpdateSpine type-erased helper that is called from
        clear() and rehash().
      
      PiperOrigin-RevId: 491413386
      Change-Id: Ia5495c5a6ec73622a785a0d260e406ddb9085a7c
      Abseil Team committed
    • Use ABSL_HAVE_BUILTIN to fix -Wundef __has_builtin warning · e3158086
      Fixes #1329
      
      PiperOrigin-RevId: 491372279
      Change-Id: I93c094b06ece9cb9bdb39fd4541353e0344a1a57
      Derek Mauro committed
    • Add a TODO for the deprecation of absl::aligned_storage_t · 04596b25
      PiperOrigin-RevId: 491367420
      Change-Id: I6a0ab74bb0675fd910ed9fc95ee20c5023eb0cb6
      Derek Mauro committed
    • TSAN: Remove report_atomic_races=0 from CI now that it has been fixed · 091842be
      PiperOrigin-RevId: 491338755
      Change-Id: I813566ef69ba6121bb4d4b64ea483cd7c4cd6019
      Derek Mauro committed
    • absl: fix Mutex TSan annotations · bb7be494
      TSan misses synchronization around passing PerThreadSynch between threads
      since it happens inside of the Mutex code (which me mostly ignore),
      so we need to ignore all accesses to the object.
      
      PiperOrigin-RevId: 491297912
      Change-Id: I13ea2015dee5c1a3fc4315c85112902ccffccc45
      Abseil Team committed
    • CMake: Remove trailing commas in `AbseilDll.cmake` · 9f4bde36
      PiperOrigin-RevId: 491266544
      Change-Id: I0dd222f6d9fe49f1fdcdb11cf732c13c353e7695
      Christian Blichmann committed
  4. 23 Nov, 2022 2 commits
    • Fix AMD cpu detection. · e51b4ef7
      Currently we take generic/default code-path on AMD due to misspelling.
      Mostly helps with crc+memcpy:
      
      name                            old speed               new speed               delta
      BM_Memcpy/1                      156MB/s ± 1%            156MB/s ± 1%     ~           (p=0.563 n=18+18)
      BM_Memcpy/100                   6.38GB/s ± 1%           6.50GB/s ± 1%   +1.89%        (p=0.000 n=19+19)
      BM_Memcpy/10000                 14.6GB/s ± 1%           21.7GB/s ± 0%  +49.01%        (p=0.000 n=20+19)
      BM_Memcpy/500000                13.5GB/s ± 1%           19.9GB/s ± 0%  +47.35%        (p=0.000 n=18+17)
      
      PiperOrigin-RevId: 490572650
      Change-Id: Id7901321a23262c0ab62a2d82fae86cf42acf16d
      Ilya Tokar committed
    • CRC: Get CPU detection and hardware acceleration working on MSVC x86(_64) · c2e9ce1d
      Using /arch:AVX on MSVC now uses the accelerated implementation
      
      PiperOrigin-RevId: 490550573
      Change-Id: I924259845f38ee41d15f23f95ad085ad664642b5
      Derek Mauro committed
  5. 22 Nov, 2022 4 commits
  6. 21 Nov, 2022 2 commits
  7. 18 Nov, 2022 1 commit
  8. 17 Nov, 2022 1 commit
    • Release structured logging. · ebab79b5
      This stores the operands to LOG (and CHECK) as separate fields in a serialized protobuf.  The protobuf format is not yet published.
      
      PiperOrigin-RevId: 489275799
      Change-Id: I86d83671a6b1feb2bddd5bee51552907897ca8eb
      Andy Getzendanner committed
  9. 16 Nov, 2022 7 commits
  10. 15 Nov, 2022 4 commits
    • Add a new API for `extract_and_get_next()` in b-tree that returns both the… · 7c022b94
      Add a new API for `extract_and_get_next()` in b-tree that returns both the extracted node and an iterator to the next element in the container.
      
      Motivation: it can be useful, when calling `extract` to maintain an iterator next to the location of the extracted element. `std::set`, et al. allow for this because they have iterator stability. `absl::{flat,node}_hash_{set,map}` allow for this because they are guaranteed not to rehash when elements are removed so they also have iterator stability across calls to `extract()`. But b-tree doesn't support this use case without this API because removing elements can cause rebalancing, which invalidates iterators. We can get the next iterator without this API using `lower_bound(node_handle.value())`, but that requires an extra lookup.
      PiperOrigin-RevId: 488721247
      Change-Id: Id66f17311bf53678f536e4e4f070775f5ce0c542
      Evan Brown committed
    • Use AnyInvocable in internal thread_pool · 842560d2
      PiperOrigin-RevId: 488676817
      Change-Id: I13f15bb93ab6dda4c56caf969be3c14f84ada6a0
      Abseil Team committed
    • Remove absl/time/internal/zoneinfo.inc. It was used to guarantee · d6fa16c8
      availability of a few timezones for "time_test" and "time_benchmark",
      but (file-based) zoneinfo is now secured via existing Bazel data/env
      attributes, or new CMake environment settings.
      
      This also avoids the need for employing the CCTZ zone-info-source
      extension mechanism (which is a win).
      
      PiperOrigin-RevId: 488673952
      Change-Id: I9def9d705c8f0dca3c0bcddc2406edb098ea5da3
      Abseil Team committed
    • Updated documentation on use of %v · 3ed4ca1f
      Also updated documentation around FormatSink and PutPaddedString
      
      PiperOrigin-RevId: 488651398
      Change-Id: Ic6c586dbb8bea61df841a142f12d22c7e5b03f43
      Tom Manshreck committed
  11. 14 Nov, 2022 2 commits
  12. 11 Nov, 2022 1 commit
    • Stop unnecessary clearing of fields in ~raw_hash_set. · 1b976982
      Previously, ~raw_hash_set() would change *this to have the same
      representation as an empty hash table. This is unnecessary since
      nobody should be touching a destroyed hash table, and prevents future
      optimizations/changes that might not be able to preserve this
      behavior.
      
      PiperOrigin-RevId: 487899950
      Change-Id: I2d4470677bdd411c2e48ef511187e39f4e7fc2f4
      Abseil Team committed