1. 05 Sep, 2023 4 commits
    • Remove the unused LowerBoundAllocatedByteSize function. · 415a1d1c
      PiperOrigin-RevId: 562832827
      Change-Id: If37f83e67b3b2ea350f74dd6bffae51ea5508f12
      Evan Brown committed
    • Invert the "is inlined" bit of absl::Status · 5c9f72fa
      This change makes  RepToPointer/PointerToRep have 0 instructions.
      This makes IsMovedFrom simpler (although this could always have left out the IsInlined check since that bit can never be set on the aligned pointer)
      
      In exchange, it makes CodeToInlinedRep slower, but does not inhibit replacing it with a constant.
      InlinedRepToCode is unaffected.
      
      PiperOrigin-RevId: 562826801
      Change-Id: I2732f04ab293b773edc2efdec546b3a287b980c2
      Abseil Team committed
    • Rollback adding support for ARM intrinsics · 461f1e49
      In some configurations this change causes compilation errors. We will roll this
      forward again after those issue are addressed.
      
      PiperOrigin-RevId: 562810916
      Change-Id: I45b2a8d456273e9eff188f36da8f11323c4dfe66
      Abseil Team committed
    • Add support for ARM intrinsics in crc_memcpy · 1a882833
      This change replaces inline x86 intrinsics with generic versions that compile
      for both x86 and ARM depending on the target arch.
      
      This change does not enable the accelerated crc memcpy engine on ARM. That will
      be done in a subsequent change after the optimal number of vector and integer
      regions for different CPUs is determined.
      
      PiperOrigin-RevId: 562785420
      Change-Id: I8ba4aa8de17587cedd92532f03767059a481f159
      Abseil Team committed
  2. 01 Sep, 2023 1 commit
  3. 31 Aug, 2023 3 commits
  4. 30 Aug, 2023 5 commits
    • Remove unused ReservedFlag. · a86bb8a9
      PiperOrigin-RevId: 561444343
      Change-Id: I26c648b28b626e11caa32b0a34aef92932d5ddb9
      Tomas Dzetkulic committed
    • Add CPU detection for Ampere Siryn · c99fbc0a
      PiperOrigin-RevId: 561444259
      Change-Id: I205ba9f11f4d41163ce74ae9cfa417fe500ccab3
      Abseil Team committed
    • Optimize Resize and Iteration on Arm · 37770938
      There is a few cycles of overhead when transfering between GPR and Neon registers. We pay this cost for GroupAarch64Impl, largely because the speedup we get in Match() makes it profitable. After a Match call, if we do subsequent Group operations, we don't have to pay the full GPR <-> Neon cost, so it makes sense to do them with Neon instructions as well.
      
      However, in iteration and find_first_non_full(), we do not do a prior Match(), so the Mask/Count EmptyOrDeleted calls pay the full GPR <-> Neon cost. We can avoid this by using the GPR versions of the functions in the portable implementation of Group instead. We slightly change the order of operations in these functions (should be functionally a nop) in order to take advantage of Arm's free flexible second operand shifts with Logical operations.
      
      Iteration and Resize are roughly 8% and 12.6% faster respectively.
      
      This is not profitable on x86 because there is much lower GPR <-> xmm register latency and we use a 16-bit wide Group size.
      
      PiperOrigin-RevId: 561415183
      Change-Id: I660b5bb84afedb05a12dcdf04d5b2e1514902760
      Connal de Souza committed
    • Add missing #include options.h in optimization.h. · 99a3a6ae
      options.h was already included indirectly from config.h. This CL is just to include what you use.
      
      PiperOrigin-RevId: 561376910
      Change-Id: I5b96b2aedc1e02eddc049f5bf0e6faa91799930d
      Abseil Team committed
    • absl: fix a priority bug in CondVar wait morphing · b06ab1f3
      Enqueue updates priority of the queued thread.
      It was assumed that the queued thread is the current thread.
      But it's not the case in CondVar wait morhping,
      where we requeue an existing CondVar waiter on the Mutex.
      As the result one thread can falsely get priority of another thread.
      
      Fix this by not updating priority in this case.
      And make the assumption explicit and checked.
      
      PiperOrigin-RevId: 561249402
      Change-Id: I9476c047757090b893a88a2839b795b85fe220ad
      Abseil Team committed
  5. 29 Aug, 2023 6 commits
  6. 28 Aug, 2023 1 commit
    • Implement ABSL_ATTRIBUTE_PURE_FUNCTION and ABSL_ATTRIBUTE_CONST_FUNCTION · 1d83ac71
      Pure functions have no effects except to return a value, and their
      return value depends only on the parameters and global
      variables. Functions of this kind can be subject to data flow analysis
      and might be eliminated. In practice, this means that repeated calls
      to the same function with the same arguments may be optimized away and
      only evaluated once.
      
      Const functions are similar to pure functions, but may not depend on
      global variables at all.
      
      It is an error not to use the result of a function with one of these
      attributes, since these functions have no other visible effects.
      
      Since some Abseil functions are tagged with these attributes, this is
      potentially a breaking change for code that doesn't use the result of
      these functions.
      
      For example, absl::Minutes() is tagged with
      ABSL_ATTRIBUTE_CONST_FUNCTION.  If, for example, the result of
      absl::Minutes(n) is unused, some compilers with issue a warning or
      error. If this is the case, it is likely that there is a typo in the
      code, or the call can be removed.
      PiperOrigin-RevId: 560803581
      Change-Id: Icd6f218be2cfb7226f8ab6b2d97cd960c0d3d72f
      Derek Mauro committed
  7. 25 Aug, 2023 1 commit
  8. 23 Aug, 2023 2 commits
  9. 21 Aug, 2023 2 commits
  10. 18 Aug, 2023 1 commit
    • Check CRC cordrep child nodes for nullptr. · 94b37802
      Some time ago the invariant for CRC cordreps was relaxed to allow for nullptr values on empty cords with an explicit empty CRC value. The CordzInfo analysis never checked for nullptr values causing cord sampling to crash if the sampling happened to include a (very unlikely) empty Cord value.
      
      PiperOrigin-RevId: 558202613
      Change-Id: Ib0e1eadd08047167e4df5d3035b36dca2c285a0d
      Martijn Vels committed
  11. 17 Aug, 2023 4 commits
  12. 16 Aug, 2023 3 commits
  13. 15 Aug, 2023 3 commits
  14. 14 Aug, 2023 3 commits
  15. 11 Aug, 2023 1 commit