re2 1.23.0 → 1.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +2 -0
  2. package/binding.gyp +3 -2
  3. package/package.json +5 -5
  4. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +25 -4
  5. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +6 -1
  6. package/vendor/abseil-cpp/CMakeLists.txt +2 -2
  7. package/vendor/abseil-cpp/MODULE.bazel +2 -2
  8. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +0 -1
  9. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -2
  10. package/vendor/abseil-cpp/absl/algorithm/container.h +191 -140
  11. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +818 -0
  12. package/vendor/abseil-cpp/absl/base/BUILD.bazel +44 -5
  13. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +42 -3
  14. package/vendor/abseil-cpp/absl/base/attributes.h +5 -1
  15. package/vendor/abseil-cpp/absl/base/call_once_test.cc +10 -10
  16. package/vendor/abseil-cpp/absl/base/casts.cc +61 -0
  17. package/vendor/abseil-cpp/absl/base/casts.h +128 -2
  18. package/vendor/abseil-cpp/absl/base/casts_test.cc +151 -0
  19. package/vendor/abseil-cpp/absl/base/config.h +13 -37
  20. package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  21. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +4 -0
  22. package/vendor/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
  23. package/vendor/abseil-cpp/absl/base/internal/nullability_traits_test.cc +98 -0
  24. package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  25. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +13 -7
  26. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +16 -11
  27. package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +2 -1
  28. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +0 -9
  29. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -6
  30. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -1
  31. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  32. package/vendor/abseil-cpp/absl/base/macros.h +40 -17
  33. package/vendor/abseil-cpp/absl/base/nullability.h +1 -1
  34. package/vendor/abseil-cpp/absl/base/optimization.h +1 -3
  35. package/vendor/abseil-cpp/absl/base/options.h +1 -27
  36. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +5 -8
  37. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +4 -0
  38. package/vendor/abseil-cpp/absl/container/BUILD.bazel +195 -2
  39. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +136 -2
  40. package/vendor/abseil-cpp/absl/container/btree_map.h +56 -6
  41. package/vendor/abseil-cpp/absl/container/btree_set.h +52 -6
  42. package/vendor/abseil-cpp/absl/container/btree_test.cc +107 -1
  43. package/vendor/abseil-cpp/absl/container/chunked_queue.h +755 -0
  44. package/vendor/abseil-cpp/absl/container/chunked_queue_benchmark.cc +386 -0
  45. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +768 -0
  46. package/vendor/abseil-cpp/absl/container/fixed_array.h +4 -6
  47. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +16 -6
  48. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +1 -2
  49. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +16 -6
  50. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -2
  51. package/vendor/abseil-cpp/absl/container/inlined_vector.h +12 -4
  52. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +21 -0
  53. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +14 -5
  54. package/vendor/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
  55. package/vendor/abseil-cpp/absl/container/internal/common.h +51 -0
  56. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +7 -1
  57. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +11 -0
  58. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -2
  59. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +1 -2
  60. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -14
  61. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +11 -8
  62. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +3 -4
  63. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +23 -6
  64. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +31 -15
  65. package/vendor/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
  66. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +4 -12
  67. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -10
  68. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +149 -23
  69. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +120 -126
  70. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +4 -0
  71. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +8 -0
  72. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +14 -59
  73. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +111 -22
  74. package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +53 -112
  75. package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +10 -15
  76. package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +3 -3
  77. package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +45 -61
  78. package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +53 -112
  79. package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +6 -9
  80. package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +3 -3
  81. package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +25 -31
  82. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +666 -0
  83. package/vendor/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +140 -0
  84. package/vendor/abseil-cpp/absl/container/linked_hash_map_test.cc +987 -0
  85. package/vendor/abseil-cpp/absl/container/linked_hash_set.h +527 -0
  86. package/vendor/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +84 -0
  87. package/vendor/abseil-cpp/absl/container/linked_hash_set_test.cc +947 -0
  88. package/vendor/abseil-cpp/absl/container/node_hash_map.h +17 -6
  89. package/vendor/abseil-cpp/absl/container/node_hash_set.h +16 -5
  90. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +1 -2
  91. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +79 -0
  92. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +79 -0
  93. package/vendor/abseil-cpp/absl/copts/copts.py +17 -4
  94. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +67 -13
  95. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  96. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +31 -0
  97. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +34 -0
  98. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +2 -2
  99. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +118 -0
  100. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +71 -0
  101. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +97 -0
  102. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  103. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  104. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +4 -0
  105. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -0
  106. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +1 -1
  107. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -7
  108. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  109. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +2 -1
  110. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  111. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +2 -2
  112. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +35 -67
  113. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +3 -0
  114. package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +24 -1
  115. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +39 -15
  116. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  117. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +25 -40
  118. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  119. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +1 -0
  120. package/vendor/abseil-cpp/absl/flags/declare.h +9 -0
  121. package/vendor/abseil-cpp/absl/flags/flag.h +2 -1
  122. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  123. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +3 -2
  124. package/vendor/abseil-cpp/absl/flags/marshalling.cc +1 -16
  125. package/vendor/abseil-cpp/absl/flags/parse.cc +4 -2
  126. package/vendor/abseil-cpp/absl/flags/parse_test.cc +1 -1
  127. package/vendor/abseil-cpp/absl/flags/reflection.cc +4 -3
  128. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +4 -0
  129. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +4 -0
  130. package/vendor/abseil-cpp/absl/functional/any_invocable.h +3 -1
  131. package/vendor/abseil-cpp/absl/functional/function_ref.h +125 -20
  132. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +122 -9
  133. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +13 -2
  134. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +42 -4
  135. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +11 -0
  136. package/vendor/abseil-cpp/absl/hash/hash_test.cc +5 -2
  137. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +184 -53
  138. package/vendor/abseil-cpp/absl/hash/internal/hash.h +116 -10
  139. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +43 -4
  140. package/vendor/abseil-cpp/absl/log/BUILD.bazel +2 -0
  141. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +35 -1
  142. package/vendor/abseil-cpp/absl/log/check_test_impl.inc +59 -4
  143. package/vendor/abseil-cpp/absl/log/die_if_null.cc +3 -1
  144. package/vendor/abseil-cpp/absl/log/die_if_null.h +24 -3
  145. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +31 -1
  146. package/vendor/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  147. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +3 -1
  148. package/vendor/abseil-cpp/absl/log/internal/check_op.h +44 -18
  149. package/vendor/abseil-cpp/absl/log/internal/conditions.h +38 -35
  150. package/vendor/abseil-cpp/absl/log/internal/container.h +312 -0
  151. package/vendor/abseil-cpp/absl/log/internal/container_test.cc +254 -0
  152. package/vendor/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  153. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -2
  154. package/vendor/abseil-cpp/absl/log/internal/log_message.h +5 -1
  155. package/vendor/abseil-cpp/absl/log/internal/strip.h +30 -31
  156. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +19 -19
  157. package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  158. package/vendor/abseil-cpp/absl/log/log.h +2 -2
  159. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +51 -0
  160. package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +46 -0
  161. package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
  162. package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +40 -0
  163. package/vendor/abseil-cpp/absl/meta/internal/requires.h +67 -0
  164. package/vendor/abseil-cpp/absl/meta/internal/requires_test.cc +66 -0
  165. package/vendor/abseil-cpp/absl/meta/type_traits.h +42 -1
  166. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +14 -0
  167. package/vendor/abseil-cpp/absl/numeric/int128.h +41 -21
  168. package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  169. package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  170. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +52 -5
  171. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +1 -0
  172. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +1 -0
  173. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +18 -7
  174. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +1 -0
  175. package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +3 -5
  176. package/vendor/abseil-cpp/absl/random/internal/platform.h +0 -13
  177. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -1
  178. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +1 -27
  179. package/vendor/abseil-cpp/absl/status/BUILD.bazel +17 -0
  180. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +16 -0
  181. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +4 -2
  182. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +2 -2
  183. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +2 -1
  184. package/vendor/abseil-cpp/absl/status/status.cc +4 -0
  185. package/vendor/abseil-cpp/absl/status/status.h +5 -0
  186. package/vendor/abseil-cpp/absl/status/status_matchers.h +48 -0
  187. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +27 -0
  188. package/vendor/abseil-cpp/absl/status/status_test.cc +1 -0
  189. package/vendor/abseil-cpp/absl/status/statusor.h +1 -1
  190. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +101 -21
  191. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +99 -5
  192. package/vendor/abseil-cpp/absl/strings/ascii.h +9 -4
  193. package/vendor/abseil-cpp/absl/strings/cord.cc +15 -10
  194. package/vendor/abseil-cpp/absl/strings/cord.h +1 -1
  195. package/vendor/abseil-cpp/absl/strings/escaping.cc +126 -94
  196. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  197. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +95 -0
  198. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +2 -0
  199. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +8 -8
  200. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +24 -18
  201. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +10 -16
  202. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +9 -7
  203. package/vendor/abseil-cpp/absl/strings/internal/generic_printer.cc +107 -0
  204. package/vendor/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
  205. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +423 -0
  206. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +685 -0
  207. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -12
  208. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  209. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +21 -7
  210. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +495 -8
  211. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -15
  212. package/vendor/abseil-cpp/absl/strings/numbers.cc +71 -8
  213. package/vendor/abseil-cpp/absl/strings/numbers.h +25 -12
  214. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +70 -0
  215. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +194 -0
  216. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +154 -0
  217. package/vendor/abseil-cpp/absl/strings/str_cat.cc +96 -91
  218. package/vendor/abseil-cpp/absl/strings/str_cat.h +17 -12
  219. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +4 -4
  220. package/vendor/abseil-cpp/absl/strings/str_split.h +1 -1
  221. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +1 -1
  222. package/vendor/abseil-cpp/absl/strings/string_view.h +8 -718
  223. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1 -1265
  224. package/vendor/abseil-cpp/absl/strings/substitute.cc +24 -24
  225. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +2 -3
  226. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +1 -0
  227. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  228. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +15 -5
  229. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2 -1
  230. package/vendor/abseil-cpp/absl/synchronization/mutex.h +47 -23
  231. package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
  232. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +2 -0
  233. package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +1 -2
  234. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +58 -103
  235. package/vendor/abseil-cpp/absl/time/clock.cc +18 -16
  236. package/vendor/abseil-cpp/absl/time/clock_test.cc +2 -2
  237. package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +144 -0
  238. package/vendor/abseil-cpp/absl/time/duration_test.cc +26 -29
  239. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +7 -1
  240. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +4 -2
  241. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  242. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +186 -0
  243. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  244. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  245. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
  246. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
  247. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
  248. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
  249. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +9 -9
  250. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +12 -12
  251. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +47 -47
  252. package/vendor/abseil-cpp/absl/time/time.cc +4 -4
  253. package/vendor/abseil-cpp/absl/time/time.h +10 -10
  254. package/vendor/abseil-cpp/absl/time/time_test.cc +1 -0
  255. package/vendor/abseil-cpp/absl/types/compare.h +62 -61
  256. package/vendor/abseil-cpp/absl/types/compare_test.cc +3 -3
  257. package/vendor/abseil-cpp/absl/types/internal/span.h +1 -0
  258. package/vendor/abseil-cpp/absl/types/optional.h +2 -2
  259. package/vendor/abseil-cpp/absl/types/span.h +10 -2
  260. package/vendor/abseil-cpp/absl/utility/utility.h +13 -0
  261. package/vendor/abseil-cpp/ci/absl_alternate_options.h +0 -1
  262. package/vendor/abseil-cpp/ci/cmake_common.sh +1 -1
  263. package/vendor/abseil-cpp/ci/cmake_install_test.sh +6 -0
  264. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +1 -0
  265. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +2 -0
  266. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +1 -0
  267. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +1 -0
  268. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +1 -0
  269. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +1 -0
  270. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +1 -0
  271. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +6 -0
  272. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +6 -0
  273. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +3 -2
  274. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +5 -0
  275. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -0
  276. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -0
  277. package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +6 -1
  278. package/vendor/abseil-cpp/absl/base/internal/identity.h +0 -39
  279. package/vendor/abseil-cpp/absl/strings/string_view.cc +0 -257
  280. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +0 -380
@@ -19,6 +19,8 @@
19
19
  #include <cstddef>
20
20
  #include <cstdint>
21
21
  #include <cstring>
22
+ #include <memory>
23
+ #include <tuple>
22
24
  #include <utility>
23
25
 
24
26
  #include "absl/base/attributes.h"
@@ -108,6 +110,13 @@ size_t Resize1To3NewOffset(size_t hash, PerTableSeed seed) {
108
110
  return SingleGroupTableH1(hash, seed) & 2;
109
111
  }
110
112
 
113
+ // Returns the address of the ith slot in slots where each slot occupies
114
+ // slot_size.
115
+ inline void* SlotAddress(void* slot_array, size_t slot, size_t slot_size) {
116
+ return static_cast<void*>(static_cast<char*>(slot_array) +
117
+ (slot * slot_size));
118
+ }
119
+
111
120
  // Returns the address of the slot `i` iterations after `slot` assuming each
112
121
  // slot has the specified size.
113
122
  inline void* NextSlot(void* slot, size_t slot_size, size_t i = 1) {
@@ -123,6 +132,16 @@ inline void* PrevSlot(void* slot, size_t slot_size) {
123
132
 
124
133
  } // namespace
125
134
 
135
+ // Must be defined out-of-line to avoid MSVC error C2482 on some platforms,
136
+ // which is caused by non-constexpr initialization.
137
+ uint16_t HashtableSize::NextSeed() {
138
+ static_assert(PerTableSeed::kBitCount == 16);
139
+ thread_local uint16_t seed =
140
+ static_cast<uint16_t>(reinterpret_cast<uintptr_t>(&seed));
141
+ seed += uint16_t{0xad53};
142
+ return seed;
143
+ }
144
+
126
145
  GenerationType* EmptyGeneration() {
127
146
  if (SwisstableGenerationsEnabled()) {
128
147
  constexpr size_t kNumEmptyGenerations = 1024;
@@ -147,23 +166,33 @@ bool CommonFieldsGenerationInfoEnabled::should_rehash_for_bug_detection_on_move(
147
166
 
148
167
  namespace {
149
168
 
150
- FindInfo find_first_non_full_from_h1(const ctrl_t* ctrl, size_t h1,
151
- size_t capacity) {
152
- auto seq = probe_h1(capacity, h1);
153
- if (IsEmptyOrDeleted(ctrl[seq.offset()])) {
154
- return {seq.offset(), /*probe_length=*/0};
155
- }
169
+ // Probes an array of control bits using a probe sequence,
170
+ // and returns the mask corresponding to the first group with a deleted or empty
171
+ // slot.
172
+ inline Group::NonIterableBitMaskType probe_till_first_non_full_group(
173
+ const ctrl_t* ctrl, probe_seq<Group::kWidth>& seq,
174
+ [[maybe_unused]] size_t capacity) {
156
175
  while (true) {
157
176
  GroupFullEmptyOrDeleted g{ctrl + seq.offset()};
158
177
  auto mask = g.MaskEmptyOrDeleted();
159
178
  if (mask) {
160
- return {seq.offset(mask.LowestBitSet()), seq.index()};
179
+ return mask;
161
180
  }
162
181
  seq.next();
163
182
  ABSL_SWISSTABLE_ASSERT(seq.index() <= capacity && "full table!");
164
183
  }
165
184
  }
166
185
 
186
+ FindInfo find_first_non_full_from_h1(const ctrl_t* ctrl, size_t h1,
187
+ size_t capacity) {
188
+ auto seq = probe_h1(capacity, h1);
189
+ if (IsEmptyOrDeleted(ctrl[seq.offset()])) {
190
+ return {seq.offset(), /*probe_length=*/0};
191
+ }
192
+ auto mask = probe_till_first_non_full_group(ctrl, seq, capacity);
193
+ return {seq.offset(mask.LowestBitSet()), seq.index()};
194
+ }
195
+
167
196
  // Probes an array of control bits using a probe sequence derived from `hash`,
168
197
  // and returns the offset corresponding to the first deleted or empty slot.
169
198
  //
@@ -176,6 +205,16 @@ FindInfo find_first_non_full(const CommonFields& common, size_t hash) {
176
205
  common.capacity());
177
206
  }
178
207
 
208
+ // Same as `find_first_non_full`, but returns the mask corresponding to the
209
+ // first group with a deleted or empty slot.
210
+ std::pair<FindInfo, Group::NonIterableBitMaskType> find_first_non_full_group(
211
+ const CommonFields& common, size_t hash) {
212
+ auto seq = probe(common, hash);
213
+ auto mask =
214
+ probe_till_first_non_full_group(common.control(), seq, common.capacity());
215
+ return {{seq.offset(), seq.index()}, mask};
216
+ }
217
+
179
218
  // Whether a table fits in half a group. A half-group table fits entirely into a
180
219
  // probing group, i.e., has a capacity < `Group::kWidth`.
181
220
  //
@@ -297,6 +336,69 @@ void PrepareInsertCommon(CommonFields& common) {
297
336
  common.maybe_increment_generation_on_insert();
298
337
  }
299
338
 
339
+ // Sets sanitizer poisoning for slot corresponding to control byte being set.
340
+ inline void DoSanitizeOnSetCtrl(const CommonFields& c, size_t i, ctrl_t h,
341
+ size_t slot_size) {
342
+ ABSL_SWISSTABLE_ASSERT(i < c.capacity());
343
+ auto* slot_i = static_cast<const char*>(c.slot_array()) + i * slot_size;
344
+ if (IsFull(h)) {
345
+ SanitizerUnpoisonMemoryRegion(slot_i, slot_size);
346
+ } else {
347
+ SanitizerPoisonMemoryRegion(slot_i, slot_size);
348
+ }
349
+ }
350
+
351
+ // Sets `ctrl[i]` to `h`.
352
+ //
353
+ // Unlike setting it directly, this function will perform bounds checks and
354
+ // mirror the value to the cloned tail if necessary.
355
+ inline void SetCtrl(const CommonFields& c, size_t i, ctrl_t h,
356
+ size_t slot_size) {
357
+ ABSL_SWISSTABLE_ASSERT(!c.is_small());
358
+ DoSanitizeOnSetCtrl(c, i, h, slot_size);
359
+ ctrl_t* ctrl = c.control();
360
+ ctrl[i] = h;
361
+ ctrl[((i - NumClonedBytes()) & c.capacity()) +
362
+ (NumClonedBytes() & c.capacity())] = h;
363
+ }
364
+ // Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`.
365
+ inline void SetCtrl(const CommonFields& c, size_t i, h2_t h, size_t slot_size) {
366
+ SetCtrl(c, i, static_cast<ctrl_t>(h), slot_size);
367
+ }
368
+
369
+ // Like SetCtrl, but in a single group table, we can save some operations when
370
+ // setting the cloned control byte.
371
+ inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, ctrl_t h,
372
+ size_t slot_size) {
373
+ ABSL_SWISSTABLE_ASSERT(!c.is_small());
374
+ ABSL_SWISSTABLE_ASSERT(is_single_group(c.capacity()));
375
+ DoSanitizeOnSetCtrl(c, i, h, slot_size);
376
+ ctrl_t* ctrl = c.control();
377
+ ctrl[i] = h;
378
+ ctrl[i + c.capacity() + 1] = h;
379
+ }
380
+ // Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`.
381
+ inline void SetCtrlInSingleGroupTable(const CommonFields& c, size_t i, h2_t h,
382
+ size_t slot_size) {
383
+ SetCtrlInSingleGroupTable(c, i, static_cast<ctrl_t>(h), slot_size);
384
+ }
385
+
386
+ // Like SetCtrl, but in a table with capacity >= Group::kWidth - 1,
387
+ // we can save some operations when setting the cloned control byte.
388
+ inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, ctrl_t h,
389
+ size_t slot_size) {
390
+ ABSL_SWISSTABLE_ASSERT(c.capacity() >= Group::kWidth - 1);
391
+ DoSanitizeOnSetCtrl(c, i, h, slot_size);
392
+ ctrl_t* ctrl = c.control();
393
+ ctrl[i] = h;
394
+ ctrl[((i - NumClonedBytes()) & c.capacity()) + NumClonedBytes()] = h;
395
+ }
396
+ // Overload for setting to an occupied `h2_t` rather than a special `ctrl_t`.
397
+ inline void SetCtrlInLargeTable(const CommonFields& c, size_t i, h2_t h,
398
+ size_t slot_size) {
399
+ SetCtrlInLargeTable(c, i, static_cast<ctrl_t>(h), slot_size);
400
+ }
401
+
300
402
  size_t DropDeletesWithoutResizeAndPrepareInsert(
301
403
  CommonFields& common, const PolicyFunctions& __restrict policy,
302
404
  size_t new_hash) {
@@ -402,7 +504,7 @@ size_t DropDeletesWithoutResizeAndPrepareInsert(
402
504
  ResetGrowthLeft(common);
403
505
  FindInfo find_info = find_first_non_full(common, new_hash);
404
506
  SetCtrlInLargeTable(common, find_info.offset, H2(new_hash), slot_size);
405
- common.infoz().RecordInsert(new_hash, find_info.probe_length);
507
+ common.infoz().RecordInsertMiss(new_hash, find_info.probe_length);
406
508
  common.infoz().RecordRehash(total_probe_length);
407
509
  return find_info.offset;
408
510
  }
@@ -618,7 +720,7 @@ void ReportGrowthToInfozImpl(CommonFields& common, HashtablezInfoHandle infoz,
618
720
  ABSL_SWISSTABLE_ASSERT(infoz.IsSampled());
619
721
  infoz.RecordStorageChanged(common.size() - 1, common.capacity());
620
722
  infoz.RecordRehash(total_probe_length);
621
- infoz.RecordInsert(hash, distance_from_desired);
723
+ infoz.RecordInsertMiss(hash, distance_from_desired);
622
724
  common.set_has_infoz();
623
725
  // TODO(b/413062340): we could potentially store infoz in place of the
624
726
  // control pointer for the capacity 1 case.
@@ -662,7 +764,16 @@ BackingArrayPtrs AllocBackingArray(CommonFields& common,
662
764
  void* alloc) {
663
765
  RawHashSetLayout layout(new_capacity, policy.slot_size, policy.slot_align,
664
766
  has_infoz);
665
- char* mem = static_cast<char*>(policy.alloc(alloc, layout.alloc_size()));
767
+ // Perform a direct call in the common case to allow for profile-guided
768
+ // heap optimization (PGHO) to understand which allocation function is used.
769
+ constexpr size_t kDefaultAlignment = BackingArrayAlignment(alignof(size_t));
770
+ char* mem = static_cast<char*>(
771
+ ABSL_PREDICT_TRUE(
772
+ policy.alloc ==
773
+ (&AllocateBackingArray<kDefaultAlignment, std::allocator<char>>))
774
+ ? AllocateBackingArray<kDefaultAlignment, std::allocator<char>>(
775
+ alloc, layout.alloc_size())
776
+ : policy.alloc(alloc, layout.alloc_size()));
666
777
  const GenerationType old_generation = common.generation();
667
778
  common.set_generation_ptr(
668
779
  reinterpret_cast<GenerationType*>(mem + layout.generation_offset()));
@@ -1295,12 +1406,12 @@ std::pair<ctrl_t*, void*> Grow1To3AndPrepareInsert(
1295
1406
  ctrl_t* old_ctrl = common.control();
1296
1407
  void* old_slots = common.slot_array();
1297
1408
 
1298
- common.set_capacity(kNewCapacity);
1299
1409
  const size_t slot_size = policy.slot_size;
1300
1410
  const size_t slot_align = policy.slot_align;
1301
1411
  void* alloc = policy.get_char_alloc(common);
1302
1412
  HashtablezInfoHandle infoz = common.infoz();
1303
1413
  const bool has_infoz = infoz.IsSampled();
1414
+ common.set_capacity(kNewCapacity);
1304
1415
 
1305
1416
  const auto [new_ctrl, new_slots] =
1306
1417
  AllocBackingArray(common, policy, kNewCapacity, has_infoz, alloc);
@@ -1536,7 +1647,7 @@ size_t PrepareInsertLargeSlow(CommonFields& common,
1536
1647
  PrepareInsertCommon(common);
1537
1648
  common.growth_info().OverwriteControlAsFull(common.control()[target.offset]);
1538
1649
  SetCtrlInLargeTable(common, target.offset, H2(hash), policy.slot_size);
1539
- common.infoz().RecordInsert(hash, target.probe_length);
1650
+ common.infoz().RecordInsertMiss(hash, target.probe_length);
1540
1651
  return target.offset;
1541
1652
  }
1542
1653
 
@@ -1557,7 +1668,7 @@ GrowEmptySooTableToNextCapacityForceSamplingAndPrepareInsert(
1557
1668
  const size_t new_hash = get_hash(common.seed().seed());
1558
1669
  SetCtrlInSingleGroupTable(common, SooSlotIndex(), H2(new_hash),
1559
1670
  policy.slot_size);
1560
- common.infoz().RecordInsert(new_hash, /*distance_from_desired=*/0);
1671
+ common.infoz().RecordInsertMiss(new_hash, /*distance_from_desired=*/0);
1561
1672
  return SooSlotIndex();
1562
1673
  }
1563
1674
 
@@ -1820,7 +1931,7 @@ void Copy(CommonFields& common, const PolicyFunctions& __restrict policy,
1820
1931
  // a full `insert`.
1821
1932
  const size_t hash = (*hasher)(hash_fn, that_slot, seed);
1822
1933
  FindInfo target = find_first_non_full(common, hash);
1823
- infoz.RecordInsert(hash, target.probe_length);
1934
+ infoz.RecordInsertMiss(hash, target.probe_length);
1824
1935
  offset = target.offset;
1825
1936
  SetCtrl(common, offset, H2(hash), slot_size);
1826
1937
  copy_fn(SlotAddress(common.slot_array(), offset, slot_size), that_slot);
@@ -1854,7 +1965,9 @@ void ReserveTableToFitNewSize(CommonFields& common,
1854
1965
  namespace {
1855
1966
  size_t PrepareInsertLargeImpl(CommonFields& common,
1856
1967
  const PolicyFunctions& __restrict policy,
1857
- size_t hash, FindInfo target) {
1968
+ size_t hash,
1969
+ Group::NonIterableBitMaskType mask_empty,
1970
+ FindInfo target_group) {
1858
1971
  ABSL_SWISSTABLE_ASSERT(!common.is_small());
1859
1972
  const GrowthInfo growth_info = common.growth_info();
1860
1973
  // When there are no deleted slots in the table
@@ -1865,23 +1978,27 @@ size_t PrepareInsertLargeImpl(CommonFields& common,
1865
1978
  }
1866
1979
  PrepareInsertCommon(common);
1867
1980
  common.growth_info().OverwriteEmptyAsFull();
1868
- SetCtrl(common, target.offset, H2(hash), policy.slot_size);
1869
- common.infoz().RecordInsert(hash, target.probe_length);
1870
- return target.offset;
1981
+ target_group.offset += mask_empty.LowestBitSet();
1982
+ target_group.offset &= common.capacity();
1983
+ SetCtrl(common, target_group.offset, H2(hash), policy.slot_size);
1984
+ common.infoz().RecordInsertMiss(hash, target_group.probe_length);
1985
+ return target_group.offset;
1871
1986
  }
1872
1987
  } // namespace
1873
1988
 
1874
1989
  size_t PrepareInsertLarge(CommonFields& common,
1875
1990
  const PolicyFunctions& __restrict policy, size_t hash,
1876
- FindInfo target) {
1991
+ Group::NonIterableBitMaskType mask_empty,
1992
+ FindInfo target_group) {
1877
1993
  // NOLINTNEXTLINE(misc-static-assert)
1878
1994
  ABSL_SWISSTABLE_ASSERT(!SwisstableGenerationsEnabled());
1879
- return PrepareInsertLargeImpl(common, policy, hash, target);
1995
+ return PrepareInsertLargeImpl(common, policy, hash, mask_empty, target_group);
1880
1996
  }
1881
1997
 
1882
1998
  size_t PrepareInsertLargeGenerationsEnabled(
1883
1999
  CommonFields& common, const PolicyFunctions& policy, size_t hash,
1884
- FindInfo target, absl::FunctionRef<size_t(size_t)> recompute_hash) {
2000
+ Group::NonIterableBitMaskType mask_empty, FindInfo target_group,
2001
+ absl::FunctionRef<size_t(size_t)> recompute_hash) {
1885
2002
  // NOLINTNEXTLINE(misc-static-assert)
1886
2003
  ABSL_SWISSTABLE_ASSERT(SwisstableGenerationsEnabled());
1887
2004
  if (common.should_rehash_for_bug_detection_on_insert()) {
@@ -1890,9 +2007,10 @@ size_t PrepareInsertLargeGenerationsEnabled(
1890
2007
  ResizeAllocatedTableWithSeedChange(
1891
2008
  common, policy, common.growth_left() > 0 ? cap : NextCapacity(cap));
1892
2009
  hash = recompute_hash(common.seed().seed());
1893
- target = find_first_non_full(common, hash);
2010
+ std::tie(target_group, mask_empty) =
2011
+ find_first_non_full_group(common, hash);
1894
2012
  }
1895
- return PrepareInsertLargeImpl(common, policy, hash, target);
2013
+ return PrepareInsertLargeImpl(common, policy, hash, mask_empty, target_group);
1896
2014
  }
1897
2015
 
1898
2016
  namespace {
@@ -1959,6 +2077,14 @@ template size_t GrowSooTableToNextCapacityAndPrepareInsert<
1959
2077
  static_assert(MaxSooSlotSize() == 16);
1960
2078
  #endif
1961
2079
 
2080
+ template void* AllocateBackingArray<BackingArrayAlignment(alignof(size_t)),
2081
+ std::allocator<char>>(void* alloc,
2082
+ size_t n);
2083
+ template void DeallocateBackingArray<BackingArrayAlignment(alignof(size_t)),
2084
+ std::allocator<char>>(
2085
+ void* alloc, size_t capacity, ctrl_t* ctrl, size_t slot_size,
2086
+ size_t slot_align, bool had_infoz);
2087
+
1962
2088
  } // namespace container_internal
1963
2089
  ABSL_NAMESPACE_END
1964
2090
  } // namespace absl