react-native-windows 0.83.2 → 0.83.3

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 (926) hide show
  1. package/Directory.Build.props +2 -17
  2. package/Folly/ThreadNameStub.cpp +4 -6
  3. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +17 -4
  4. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +8 -4
  5. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
  6. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
  7. package/PropertySheets/CIBuildOptimizations.props +2 -2
  8. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  9. package/PropertySheets/JSEngine.props +1 -1
  10. package/PropertySheets/NuGet.LockFile.props +9 -1
  11. package/PropertySheets/React.Cpp.props +3 -3
  12. package/PropertySheets/WinUI.props +2 -1
  13. package/ReactCommon/ReactCommon.vcxproj +0 -5
  14. package/Scripts/ConfigureYarnPackageAgeGate.ps1 +25 -0
  15. package/Scripts/EnableInternalWinAppSDKFeed.ps1 +12 -5
  16. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +103 -6
  17. package/Scripts/RunRnwInitWindows.js +37 -0
  18. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
  19. package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
  20. package/Scripts/creaternwapp.cmd +30 -17
  21. package/Scripts/creaternwlib.cmd +36 -23
  22. package/Shared/Shared.vcxitems +2 -0
  23. package/{Folly → external}/.clang-format +0 -1
  24. package/external/External.vcxitems +10 -0
  25. package/external/fast-float/.syncignore +10 -0
  26. package/external/fast-float/LICENSE-APACHE +190 -0
  27. package/external/fast-float/LICENSE-BOOST +23 -0
  28. package/external/fast-float/LICENSE-MIT +27 -0
  29. package/external/fast-float/README.md +545 -0
  30. package/external/fast-float/cgmanifest.json +15 -0
  31. package/external/fast-float/fast-float.vcxitems +14 -0
  32. package/external/fast-float/include/fast_float/ascii_number.h +588 -0
  33. package/external/fast-float/include/fast_float/bigint.h +638 -0
  34. package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
  35. package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
  36. package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
  37. package/external/fast-float/include/fast_float/fast_float.h +59 -0
  38. package/external/fast-float/include/fast_float/fast_table.h +708 -0
  39. package/external/fast-float/include/fast_float/float_common.h +1240 -0
  40. package/external/fast-float/include/fast_float/parse_number.h +399 -0
  41. package/external/fast-float/sync-config.json +8 -0
  42. package/external/fmt/.syncignore +10 -0
  43. package/external/fmt/CONTRIBUTING.md +20 -0
  44. package/external/fmt/LICENSE +27 -0
  45. package/external/fmt/README.md +484 -0
  46. package/external/fmt/doc/ChangeLog-old.md +3290 -0
  47. package/external/fmt/doc/api.md +650 -0
  48. package/external/fmt/doc/fmt.css +61 -0
  49. package/external/fmt/doc/fmt.js +4 -0
  50. package/external/fmt/doc/get-started.md +222 -0
  51. package/external/fmt/doc/index.md +151 -0
  52. package/external/fmt/doc/perf.svg +1 -0
  53. package/external/fmt/doc/python-license.txt +290 -0
  54. package/external/fmt/doc/syntax.md +887 -0
  55. package/external/fmt/fmt.vcxitems +28 -0
  56. package/external/fmt/include/fmt/args.h +228 -0
  57. package/external/fmt/include/fmt/base.h +3077 -0
  58. package/external/fmt/include/fmt/chrono.h +2432 -0
  59. package/external/fmt/include/fmt/color.h +612 -0
  60. package/external/fmt/include/fmt/compile.h +529 -0
  61. package/external/fmt/include/fmt/core.h +5 -0
  62. package/external/fmt/include/fmt/format-inl.h +1928 -0
  63. package/external/fmt/include/fmt/format.h +4427 -0
  64. package/external/fmt/include/fmt/os.h +439 -0
  65. package/external/fmt/include/fmt/ostream.h +211 -0
  66. package/external/fmt/include/fmt/printf.h +656 -0
  67. package/external/fmt/include/fmt/ranges.h +882 -0
  68. package/external/fmt/include/fmt/std.h +699 -0
  69. package/external/fmt/include/fmt/xchar.h +322 -0
  70. package/external/fmt/src/fmt.cc +135 -0
  71. package/external/fmt/src/format.cc +43 -0
  72. package/external/fmt/src/os.cc +403 -0
  73. package/external/fmt/sync-config.json +8 -0
  74. package/external/folly/.syncignore +60 -0
  75. package/external/folly/LICENSE +200 -0
  76. package/external/folly/README.md +263 -0
  77. package/{fmt → external/folly/folly}/.clang-format +0 -1
  78. package/external/folly/folly/AtomicHashArray-inl.h +546 -0
  79. package/external/folly/folly/AtomicHashArray.h +431 -0
  80. package/external/folly/folly/AtomicHashMap-inl.h +653 -0
  81. package/external/folly/folly/AtomicHashMap.h +484 -0
  82. package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
  83. package/external/folly/folly/AtomicLinkedList.h +110 -0
  84. package/external/folly/folly/AtomicUnorderedMap.h +522 -0
  85. package/external/folly/folly/BUCK +1631 -0
  86. package/external/folly/folly/BUILD_MODE.bzl +72 -0
  87. package/external/folly/folly/Benchmark.cpp +986 -0
  88. package/external/folly/folly/Benchmark.h +680 -0
  89. package/external/folly/folly/BenchmarkUtil.h +47 -0
  90. package/external/folly/folly/Bits.h +17 -0
  91. package/external/folly/folly/CMakeLists.txt +110 -0
  92. package/external/folly/folly/CPortability.h +338 -0
  93. package/external/folly/folly/CancellationToken-inl.h +449 -0
  94. package/external/folly/folly/CancellationToken.cpp +250 -0
  95. package/external/folly/folly/CancellationToken.h +365 -0
  96. package/external/folly/folly/Chrono.h +132 -0
  97. package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
  98. package/external/folly/folly/ClockGettimeWrappers.h +29 -0
  99. package/external/folly/folly/ConcurrentBitSet.h +157 -0
  100. package/external/folly/folly/ConcurrentLazy.h +74 -0
  101. package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
  102. package/external/folly/folly/ConcurrentSkipList.h +824 -0
  103. package/external/folly/folly/ConstructorCallbackList.h +158 -0
  104. package/external/folly/folly/Conv.h +2026 -0
  105. package/external/folly/folly/CppAttributes.h +170 -0
  106. package/external/folly/folly/CpuId.h +297 -0
  107. package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
  108. package/external/folly/folly/Demangle.cpp +255 -0
  109. package/external/folly/folly/Demangle.h +73 -0
  110. package/external/folly/folly/DiscriminatedPtr.h +236 -0
  111. package/external/folly/folly/DynamicConverter.h +17 -0
  112. package/external/folly/folly/Exception.h +150 -0
  113. package/external/folly/folly/ExceptionString.cpp +51 -0
  114. package/external/folly/folly/ExceptionString.h +33 -0
  115. package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
  116. package/external/folly/folly/ExceptionWrapper.cpp +37 -0
  117. package/external/folly/folly/ExceptionWrapper.h +377 -0
  118. package/external/folly/folly/Executor.cpp +111 -0
  119. package/external/folly/folly/Executor.h +351 -0
  120. package/external/folly/folly/Expected.h +1725 -0
  121. package/external/folly/folly/FBString.h +2888 -0
  122. package/external/folly/folly/FBVector.h +17 -0
  123. package/external/folly/folly/File.cpp +180 -0
  124. package/external/folly/folly/File.h +177 -0
  125. package/external/folly/folly/FileUtil.cpp +378 -0
  126. package/external/folly/folly/FileUtil.h +332 -0
  127. package/external/folly/folly/Fingerprint.cpp +135 -0
  128. package/external/folly/folly/Fingerprint.h +289 -0
  129. package/external/folly/folly/FixedString.h +2965 -0
  130. package/external/folly/folly/FollyMemcpy.cpp +30 -0
  131. package/external/folly/folly/FollyMemcpy.h +23 -0
  132. package/external/folly/folly/FollyMemset.cpp +29 -0
  133. package/external/folly/folly/FollyMemset.h +25 -0
  134. package/external/folly/folly/Format-inl.h +1152 -0
  135. package/external/folly/folly/Format.cpp +429 -0
  136. package/external/folly/folly/Format.h +463 -0
  137. package/external/folly/folly/FormatArg.h +285 -0
  138. package/external/folly/folly/FormatTraits.h +65 -0
  139. package/external/folly/folly/Function.h +1159 -0
  140. package/external/folly/folly/GLog.h +85 -0
  141. package/external/folly/folly/GroupVarint.cpp +153 -0
  142. package/external/folly/folly/GroupVarint.h +630 -0
  143. package/external/folly/folly/Hash.h +20 -0
  144. package/external/folly/folly/IPAddress.cpp +490 -0
  145. package/external/folly/folly/IPAddress.h +667 -0
  146. package/external/folly/folly/IPAddressException.h +82 -0
  147. package/external/folly/folly/IPAddressV4.cpp +305 -0
  148. package/external/folly/folly/IPAddressV4.h +495 -0
  149. package/external/folly/folly/IPAddressV6.cpp +541 -0
  150. package/external/folly/folly/IPAddressV6.h +627 -0
  151. package/external/folly/folly/Indestructible.h +164 -0
  152. package/external/folly/folly/IndexedMemPool.h +550 -0
  153. package/external/folly/folly/IntrusiveList.h +17 -0
  154. package/external/folly/folly/Lazy.h +142 -0
  155. package/external/folly/folly/Likely.h +76 -0
  156. package/external/folly/folly/MPMCPipeline.h +280 -0
  157. package/external/folly/folly/MPMCQueue.h +1556 -0
  158. package/external/folly/folly/MacAddress.cpp +188 -0
  159. package/external/folly/folly/MacAddress.h +260 -0
  160. package/external/folly/folly/MapUtil.h +17 -0
  161. package/external/folly/folly/Math.h +258 -0
  162. package/external/folly/folly/MaybeManagedPtr.h +120 -0
  163. package/external/folly/folly/Memory.h +900 -0
  164. package/external/folly/folly/MicroLock.cpp +76 -0
  165. package/external/folly/folly/MicroLock.h +354 -0
  166. package/external/folly/folly/MicroSpinLock.h +17 -0
  167. package/external/folly/folly/MoveWrapper.h +76 -0
  168. package/external/folly/folly/ObserverContainer.h +1026 -0
  169. package/external/folly/folly/Optional.h +743 -0
  170. package/external/folly/folly/Overload.h +325 -0
  171. package/external/folly/folly/PackedSyncPtr.h +147 -0
  172. package/external/folly/folly/Padded.h +464 -0
  173. package/external/folly/folly/Poly-inl.h +230 -0
  174. package/external/folly/folly/Poly.h +1095 -0
  175. package/external/folly/folly/PolyException.h +43 -0
  176. package/external/folly/folly/Portability.h +644 -0
  177. package/external/folly/folly/Preprocessor.h +236 -0
  178. package/external/folly/folly/ProducerConsumerQueue.h +182 -0
  179. package/external/folly/folly/RWSpinLock.h +17 -0
  180. package/external/folly/folly/Random-inl.h +86 -0
  181. package/external/folly/folly/Random.cpp +184 -0
  182. package/external/folly/folly/Random.h +434 -0
  183. package/external/folly/folly/Range.h +1772 -0
  184. package/external/folly/folly/Replaceable.h +636 -0
  185. package/external/folly/folly/ScopeGuard.cpp +29 -0
  186. package/external/folly/folly/ScopeGuard.h +420 -0
  187. package/external/folly/folly/SharedMutex.cpp +81 -0
  188. package/external/folly/folly/SharedMutex.h +1751 -0
  189. package/external/folly/folly/Singleton-inl.h +332 -0
  190. package/external/folly/folly/Singleton.cpp +512 -0
  191. package/external/folly/folly/Singleton.h +891 -0
  192. package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
  193. package/external/folly/folly/SingletonThreadLocal.h +263 -0
  194. package/external/folly/folly/SocketAddress.cpp +786 -0
  195. package/external/folly/folly/SocketAddress.h +768 -0
  196. package/external/folly/folly/SpinLock.h +55 -0
  197. package/external/folly/folly/String-inl.h +668 -0
  198. package/external/folly/folly/String.cpp +777 -0
  199. package/external/folly/folly/String.h +767 -0
  200. package/external/folly/folly/Subprocess.cpp +1142 -0
  201. package/external/folly/folly/Subprocess.h +1055 -0
  202. package/external/folly/folly/Synchronized.h +1833 -0
  203. package/external/folly/folly/SynchronizedPtr.h +106 -0
  204. package/external/folly/folly/ThreadCachedInt.h +175 -0
  205. package/external/folly/folly/ThreadLocal.h +478 -0
  206. package/external/folly/folly/TimeoutQueue.cpp +78 -0
  207. package/external/folly/folly/TimeoutQueue.h +123 -0
  208. package/external/folly/folly/TokenBucket.h +673 -0
  209. package/external/folly/folly/Traits.h +1442 -0
  210. package/external/folly/folly/Try-inl.h +372 -0
  211. package/external/folly/folly/Try.cpp +23 -0
  212. package/external/folly/folly/Try.h +728 -0
  213. package/external/folly/folly/UTF8String.h +56 -0
  214. package/external/folly/folly/Unicode.cpp +201 -0
  215. package/external/folly/folly/Unicode.h +94 -0
  216. package/external/folly/folly/Unit.h +65 -0
  217. package/external/folly/folly/Uri-inl.h +101 -0
  218. package/external/folly/folly/Uri.cpp +190 -0
  219. package/external/folly/folly/Uri.h +142 -0
  220. package/external/folly/folly/Utility.h +932 -0
  221. package/external/folly/folly/VERSION +1 -0
  222. package/external/folly/folly/Varint.h +230 -0
  223. package/external/folly/folly/VirtualExecutor.h +17 -0
  224. package/external/folly/folly/algorithm/simd/BUCK +47 -0
  225. package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
  226. package/external/folly/folly/algorithm/simd/Contains.h +116 -0
  227. package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
  228. package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
  229. package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
  230. package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
  231. package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
  232. package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
  233. package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
  234. package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
  235. package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
  236. package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
  237. package/external/folly/folly/base64.h +264 -0
  238. package/external/folly/folly/chrono/BUCK +29 -0
  239. package/external/folly/folly/chrono/Clock.h +65 -0
  240. package/external/folly/folly/chrono/Conv.h +712 -0
  241. package/external/folly/folly/chrono/test/BUCK +26 -0
  242. package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
  243. package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
  244. package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
  245. package/external/folly/folly/concurrency/BUCK +170 -0
  246. package/external/folly/folly/concurrency/CacheLocality.h +460 -0
  247. package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
  248. package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
  249. package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
  250. package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
  251. package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
  252. package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
  253. package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
  254. package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
  255. package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
  256. package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
  257. package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
  258. package/external/folly/folly/concurrency/container/BUCK +77 -0
  259. package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
  260. package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
  261. package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
  262. package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
  263. package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
  264. package/external/folly/folly/concurrency/container/test/BUCK +75 -0
  265. package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
  266. package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
  267. package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
  268. package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
  269. package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
  270. package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
  271. package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
  272. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
  273. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
  274. package/external/folly/folly/concurrency/memory/BUCK +53 -0
  275. package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
  276. package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
  277. package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
  278. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
  279. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
  280. package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
  281. package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
  282. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
  283. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
  284. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
  285. package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
  286. package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
  287. package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
  288. package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
  289. package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
  290. package/external/folly/folly/concurrency/test/BUCK +229 -0
  291. package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
  292. package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
  293. package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
  294. package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
  295. package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
  296. package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
  297. package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
  298. package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
  299. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
  300. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
  301. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
  302. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
  303. package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
  304. package/external/folly/folly/container/Access.h +57 -0
  305. package/external/folly/folly/container/Array.h +87 -0
  306. package/external/folly/folly/container/BUCK +353 -0
  307. package/external/folly/folly/container/BitIterator.h +203 -0
  308. package/external/folly/folly/container/Enumerate.h +162 -0
  309. package/external/folly/folly/container/EvictingCacheMap.h +730 -0
  310. package/external/folly/folly/container/F14.md +300 -0
  311. package/external/folly/folly/container/F14Map-fwd.h +113 -0
  312. package/external/folly/folly/container/F14Map.h +2108 -0
  313. package/external/folly/folly/container/F14Set-fwd.h +95 -0
  314. package/external/folly/folly/container/F14Set.h +1603 -0
  315. package/external/folly/folly/container/FBVector.h +1711 -0
  316. package/external/folly/folly/container/Foreach-inl.h +316 -0
  317. package/external/folly/folly/container/Foreach.h +209 -0
  318. package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
  319. package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
  320. package/external/folly/folly/container/IntrusiveHeap.h +268 -0
  321. package/external/folly/folly/container/IntrusiveList.h +131 -0
  322. package/external/folly/folly/container/Iterator.h +843 -0
  323. package/external/folly/folly/container/MapUtil.h +376 -0
  324. package/external/folly/folly/container/Merge.h +90 -0
  325. package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
  326. package/external/folly/folly/container/RegexMatchCache.h +699 -0
  327. package/external/folly/folly/container/Reserve.h +109 -0
  328. package/external/folly/folly/container/SparseByteSet.h +123 -0
  329. package/external/folly/folly/container/View.h +81 -0
  330. package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
  331. package/external/folly/folly/container/detail/BUCK +115 -0
  332. package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
  333. package/external/folly/folly/container/detail/F14Defaults.h +34 -0
  334. package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
  335. package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
  336. package/external/folly/folly/container/detail/F14Mask.h +235 -0
  337. package/external/folly/folly/container/detail/F14Policy.h +1523 -0
  338. package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
  339. package/external/folly/folly/container/detail/F14Table.cpp +71 -0
  340. package/external/folly/folly/container/detail/F14Table.h +2680 -0
  341. package/external/folly/folly/container/detail/Util.h +303 -0
  342. package/external/folly/folly/container/detail/tape_detail.h +135 -0
  343. package/external/folly/folly/container/detail/test/BUCK +14 -0
  344. package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
  345. package/external/folly/folly/container/heap_vector_types.h +1683 -0
  346. package/external/folly/folly/container/range_traits.h +81 -0
  347. package/external/folly/folly/container/small_vector.h +1476 -0
  348. package/external/folly/folly/container/sorted_vector_types.h +1652 -0
  349. package/external/folly/folly/container/span.h +408 -0
  350. package/external/folly/folly/container/tape.h +608 -0
  351. package/external/folly/folly/container/test/.clang-tidy +12 -0
  352. package/external/folly/folly/container/test/AccessTest.cpp +138 -0
  353. package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
  354. package/external/folly/folly/container/test/BUCK +568 -0
  355. package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
  356. package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
  357. package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
  358. package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
  359. package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
  360. package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
  361. package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
  362. package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
  363. package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
  364. package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
  365. package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
  366. package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
  367. package/external/folly/folly/container/test/F14TestUtil.h +117 -0
  368. package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
  369. package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
  370. package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
  371. package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
  372. package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
  373. package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
  374. package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
  375. package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
  376. package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
  377. package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
  378. package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
  379. package/external/folly/folly/container/test/MergeTest.cpp +66 -0
  380. package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
  381. package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
  382. package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
  383. package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
  384. package/external/folly/folly/container/test/TrackingTypes.h +584 -0
  385. package/external/folly/folly/container/test/UtilTest.cpp +609 -0
  386. package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
  387. package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
  388. package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
  389. package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
  390. package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
  391. package/external/folly/folly/container/test/span_test.cpp +520 -0
  392. package/external/folly/folly/container/test/tape_bench.cpp +200 -0
  393. package/external/folly/folly/container/test/tape_test.cpp +590 -0
  394. package/external/folly/folly/defs.bzl +238 -0
  395. package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
  396. package/external/folly/folly/detail/AsyncTrace.h +44 -0
  397. package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
  398. package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
  399. package/external/folly/folly/detail/BUCK +406 -0
  400. package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
  401. package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
  402. package/external/folly/folly/detail/FileUtilDetail.h +85 -0
  403. package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
  404. package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
  405. package/external/folly/folly/detail/Futex-inl.h +123 -0
  406. package/external/folly/folly/detail/Futex.cpp +273 -0
  407. package/external/folly/folly/detail/Futex.h +109 -0
  408. package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
  409. package/external/folly/folly/detail/IPAddress.cpp +37 -0
  410. package/external/folly/folly/detail/IPAddress.h +57 -0
  411. package/external/folly/folly/detail/IPAddressSource.h +278 -0
  412. package/external/folly/folly/detail/Iterators.h +156 -0
  413. package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
  414. package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
  415. package/external/folly/folly/detail/MemoryIdler.h +216 -0
  416. package/external/folly/folly/detail/PerfScoped.cpp +112 -0
  417. package/external/folly/folly/detail/PerfScoped.h +70 -0
  418. package/external/folly/folly/detail/PolyDetail.h +921 -0
  419. package/external/folly/folly/detail/RangeCommon.cpp +55 -0
  420. package/external/folly/folly/detail/RangeCommon.h +93 -0
  421. package/external/folly/folly/detail/RangeSse42.cpp +198 -0
  422. package/external/folly/folly/detail/RangeSse42.h +30 -0
  423. package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
  424. package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
  425. package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
  426. package/external/folly/folly/detail/Singleton.h +34 -0
  427. package/external/folly/folly/detail/SlowFingerprint.h +90 -0
  428. package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
  429. package/external/folly/folly/detail/SocketFastOpen.h +89 -0
  430. package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
  431. package/external/folly/folly/detail/SplitStringSimd.h +151 -0
  432. package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
  433. package/external/folly/folly/detail/Sse.cpp +35 -0
  434. package/external/folly/folly/detail/Sse.h +45 -0
  435. package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
  436. package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
  437. package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
  438. package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
  439. package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
  440. package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
  441. package/external/folly/folly/detail/TurnSequencer.h +295 -0
  442. package/external/folly/folly/detail/TypeList.h +551 -0
  443. package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
  444. package/external/folly/folly/detail/UniqueInstance.h +68 -0
  445. package/external/folly/folly/detail/base64_detail/BUCK +102 -0
  446. package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
  447. package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
  448. package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
  449. package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
  450. package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
  451. package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
  452. package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
  453. package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
  454. package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
  455. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
  456. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
  457. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
  458. package/external/folly/folly/detail/base64_detail/README.md +392 -0
  459. package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
  460. package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
  461. package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
  462. package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
  463. package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
  464. package/external/folly/folly/detail/test/BUCK +118 -0
  465. package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
  466. package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
  467. package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
  468. package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
  469. package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
  470. package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
  471. package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
  472. package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
  473. package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
  474. package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
  475. package/external/folly/folly/detail/thread_local_globals.h +36 -0
  476. package/external/folly/folly/docs/AtomicHashMap.md +134 -0
  477. package/external/folly/folly/docs/Benchmark.md +310 -0
  478. package/external/folly/folly/docs/Conv.md +291 -0
  479. package/external/folly/folly/docs/Dynamic.md +220 -0
  480. package/external/folly/folly/docs/DynamicConverter.md +71 -0
  481. package/external/folly/folly/docs/Executors.md +63 -0
  482. package/external/folly/folly/docs/FBString.md +46 -0
  483. package/external/folly/folly/docs/FBVector.md +200 -0
  484. package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
  485. package/external/folly/folly/docs/Format.md +177 -0
  486. package/external/folly/folly/docs/Function.md +92 -0
  487. package/external/folly/folly/docs/Futures.md +263 -0
  488. package/external/folly/folly/docs/GroupVarint.md +46 -0
  489. package/external/folly/folly/docs/Histogram.md +104 -0
  490. package/external/folly/folly/docs/MapUtils.md +80 -0
  491. package/external/folly/folly/docs/Overview.md +263 -0
  492. package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
  493. package/external/folly/folly/docs/Poly.md +500 -0
  494. package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
  495. package/external/folly/folly/docs/Rcu.md +218 -0
  496. package/external/folly/folly/docs/SmallLocks.md +24 -0
  497. package/external/folly/folly/docs/Synchronized.md +793 -0
  498. package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
  499. package/external/folly/folly/docs/ThreadLocal.md +105 -0
  500. package/external/folly/folly/docs/Traits.md +161 -0
  501. package/external/folly/folly/docs/small_vector.md +64 -0
  502. package/external/folly/folly/docs/style.css +23 -0
  503. package/external/folly/folly/dynamic-inl.h +17 -0
  504. package/external/folly/folly/dynamic.h +17 -0
  505. package/external/folly/folly/folly_extended_library.bzl +28 -0
  506. package/external/folly/folly/functional/ApplyTuple.h +204 -0
  507. package/external/folly/folly/functional/BUCK +57 -0
  508. package/external/folly/folly/functional/Invoke.h +880 -0
  509. package/external/folly/folly/functional/Partial.h +130 -0
  510. package/external/folly/folly/functional/protocol.h +203 -0
  511. package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
  512. package/external/folly/folly/functional/test/BUCK +57 -0
  513. package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
  514. package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
  515. package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
  516. package/external/folly/folly/functional/test/traits_test.cpp +551 -0
  517. package/external/folly/folly/functional/traits.h +675 -0
  518. package/external/folly/folly/hash/BUCK +86 -0
  519. package/external/folly/folly/hash/Checksum.cpp +275 -0
  520. package/external/folly/folly/hash/Checksum.h +94 -0
  521. package/external/folly/folly/hash/FarmHash.h +46 -0
  522. package/external/folly/folly/hash/Hash.h +1045 -0
  523. package/external/folly/folly/hash/MurmurHash.h +86 -0
  524. package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
  525. package/external/folly/folly/hash/SpookyHashV1.h +307 -0
  526. package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
  527. package/external/folly/folly/hash/SpookyHashV2.h +339 -0
  528. package/external/folly/folly/hash/detail/BUCK +26 -0
  529. package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
  530. package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
  531. package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
  532. package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
  533. package/external/folly/folly/hash/test/BUCK +132 -0
  534. package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
  535. package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
  536. package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
  537. package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
  538. package/external/folly/folly/hash/test/HashTest.cpp +997 -0
  539. package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
  540. package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
  541. package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
  542. package/external/folly/folly/hash/test/traits_test.cpp +69 -0
  543. package/external/folly/folly/hash/traits.h +115 -0
  544. package/external/folly/folly/json/BUCK +155 -0
  545. package/external/folly/folly/json/DynamicConverter.h +464 -0
  546. package/external/folly/folly/json/DynamicParser-inl.h +316 -0
  547. package/external/folly/folly/json/DynamicParser.cpp +198 -0
  548. package/external/folly/folly/json/DynamicParser.h +394 -0
  549. package/external/folly/folly/json/JSONSchema.cpp +1030 -0
  550. package/external/folly/folly/json/JSONSchema.h +73 -0
  551. package/external/folly/folly/json/JsonMockUtil.h +73 -0
  552. package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
  553. package/external/folly/folly/json/JsonTestUtil.h +88 -0
  554. package/external/folly/folly/json/bser/BUCK +24 -0
  555. package/external/folly/folly/json/bser/Bser.h +107 -0
  556. package/external/folly/folly/json/bser/Dump.cpp +253 -0
  557. package/external/folly/folly/json/bser/Load.cpp +246 -0
  558. package/external/folly/folly/json/bser/test/BUCK +14 -0
  559. package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
  560. package/external/folly/folly/json/dynamic.cpp +552 -0
  561. package/external/folly/folly/json/dynamic.h +1346 -0
  562. package/external/folly/folly/json/json.h +238 -0
  563. package/external/folly/folly/json/json_patch.cpp +325 -0
  564. package/external/folly/folly/json/json_patch.h +126 -0
  565. package/external/folly/folly/json/json_pointer.cpp +114 -0
  566. package/external/folly/folly/json/json_pointer.h +87 -0
  567. package/external/folly/folly/json/test/BUCK +147 -0
  568. package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
  569. package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
  570. package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
  571. package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
  572. package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
  573. package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
  574. package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
  575. package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
  576. package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
  577. package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
  578. package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
  579. package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
  580. package/external/folly/folly/json/tool/BUCK +13 -0
  581. package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
  582. package/external/folly/folly/json.h +17 -0
  583. package/external/folly/folly/json_patch.h +17 -0
  584. package/external/folly/folly/json_pointer.h +17 -0
  585. package/external/folly/folly/lang/Access.h +29 -0
  586. package/external/folly/folly/lang/Align.h +240 -0
  587. package/external/folly/folly/lang/Aligned.h +92 -0
  588. package/external/folly/folly/lang/Assume.h +82 -0
  589. package/external/folly/folly/lang/BUCK +287 -0
  590. package/external/folly/folly/lang/Badge.h +108 -0
  591. package/external/folly/folly/lang/Bits.h +570 -0
  592. package/external/folly/folly/lang/BitsClass.h +312 -0
  593. package/external/folly/folly/lang/Builtin.h +74 -0
  594. package/external/folly/folly/lang/CArray.h +34 -0
  595. package/external/folly/folly/lang/CString.cpp +86 -0
  596. package/external/folly/folly/lang/CString.h +55 -0
  597. package/external/folly/folly/lang/Cast.h +51 -0
  598. package/external/folly/folly/lang/CheckedMath.h +253 -0
  599. package/external/folly/folly/lang/CustomizationPoint.h +58 -0
  600. package/external/folly/folly/lang/Exception.cpp +822 -0
  601. package/external/folly/folly/lang/Exception.h +716 -0
  602. package/external/folly/folly/lang/Extern.h +55 -0
  603. package/external/folly/folly/lang/Hint-inl.h +144 -0
  604. package/external/folly/folly/lang/Hint.h +238 -0
  605. package/external/folly/folly/lang/Keep.h +98 -0
  606. package/external/folly/folly/lang/New.h +124 -0
  607. package/external/folly/folly/lang/Ordering.h +140 -0
  608. package/external/folly/folly/lang/Pretty.h +159 -0
  609. package/external/folly/folly/lang/PropagateConst.h +413 -0
  610. package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
  611. package/external/folly/folly/lang/SafeAssert.cpp +589 -0
  612. package/external/folly/folly/lang/StaticConst.h +33 -0
  613. package/external/folly/folly/lang/Thunk.h +100 -0
  614. package/external/folly/folly/lang/TypeInfo.h +58 -0
  615. package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
  616. package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
  617. package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
  618. package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
  619. package/external/folly/folly/lang/test/BUCK +258 -0
  620. package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
  621. package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
  622. package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
  623. package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
  624. package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
  625. package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
  626. package/external/folly/folly/lang/test/CastTest.cpp +47 -0
  627. package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
  628. package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
  629. package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
  630. package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
  631. package/external/folly/folly/lang/test/HintTest.cpp +100 -0
  632. package/external/folly/folly/lang/test/NewTest.cpp +38 -0
  633. package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
  634. package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
  635. package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
  636. package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
  637. package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
  638. package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
  639. package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
  640. package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
  641. package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
  642. package/external/folly/folly/memcpy.S +292 -0
  643. package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
  644. package/external/folly/folly/memory/Arena-inl.h +83 -0
  645. package/external/folly/folly/memory/Arena.h +325 -0
  646. package/external/folly/folly/memory/BUCK +191 -0
  647. package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
  648. package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
  649. package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
  650. package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
  651. package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
  652. package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
  653. package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
  654. package/external/folly/folly/memory/MallctlHelper.h +167 -0
  655. package/external/folly/folly/memory/Malloc.h +551 -0
  656. package/external/folly/folly/memory/MemoryResource.h +57 -0
  657. package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
  658. package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
  659. package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
  660. package/external/folly/folly/memory/SanitizeAddress.h +117 -0
  661. package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
  662. package/external/folly/folly/memory/SanitizeLeak.h +108 -0
  663. package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
  664. package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
  665. package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
  666. package/external/folly/folly/memory/detail/BUCK +10 -0
  667. package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
  668. package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
  669. package/external/folly/folly/memory/not_null-inl.h +522 -0
  670. package/external/folly/folly/memory/not_null.h +449 -0
  671. package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
  672. package/external/folly/folly/memory/test/BUCK +146 -0
  673. package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
  674. package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
  675. package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
  676. package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
  677. package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
  678. package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
  679. package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
  680. package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
  681. package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
  682. package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
  683. package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
  684. package/external/folly/folly/memset.S +245 -0
  685. package/external/folly/folly/memset_select_aarch64.cpp +72 -0
  686. package/external/folly/folly/portability/Asm.h +50 -0
  687. package/external/folly/folly/portability/Atomic.h +31 -0
  688. package/external/folly/folly/portability/BUCK +456 -0
  689. package/external/folly/folly/portability/Builtins.cpp +31 -0
  690. package/external/folly/folly/portability/Builtins.h +161 -0
  691. package/external/folly/folly/portability/Config.h +43 -0
  692. package/external/folly/folly/portability/Constexpr.h +145 -0
  693. package/external/folly/folly/portability/Dirent.cpp +140 -0
  694. package/external/folly/folly/portability/Dirent.h +41 -0
  695. package/external/folly/folly/portability/Event.h +44 -0
  696. package/external/folly/folly/portability/Fcntl.cpp +120 -0
  697. package/external/folly/folly/portability/Fcntl.h +67 -0
  698. package/external/folly/folly/portability/Filesystem.cpp +67 -0
  699. package/external/folly/folly/portability/Filesystem.h +114 -0
  700. package/external/folly/folly/portability/FmtCompile.h +40 -0
  701. package/external/folly/folly/portability/GFlags.h +139 -0
  702. package/external/folly/folly/portability/GMock.h +35 -0
  703. package/external/folly/folly/portability/GTest.h +35 -0
  704. package/external/folly/folly/portability/IOVec.h +34 -0
  705. package/external/folly/folly/portability/Libgen.cpp +59 -0
  706. package/external/folly/folly/portability/Libgen.h +29 -0
  707. package/external/folly/folly/portability/Libunwind.h +21 -0
  708. package/external/folly/folly/portability/Malloc.cpp +31 -0
  709. package/external/folly/folly/portability/Malloc.h +53 -0
  710. package/external/folly/folly/portability/Math.h +90 -0
  711. package/external/folly/folly/portability/Memory.h +26 -0
  712. package/external/folly/folly/portability/OpenSSL.cpp +17 -0
  713. package/external/folly/folly/portability/OpenSSL.h +102 -0
  714. package/external/folly/folly/portability/PThread.cpp +697 -0
  715. package/external/folly/folly/portability/PThread.h +148 -0
  716. package/external/folly/folly/portability/README.md +21 -0
  717. package/external/folly/folly/portability/Sched.cpp +41 -0
  718. package/external/folly/folly/portability/Sched.h +45 -0
  719. package/external/folly/folly/portability/Sockets.cpp +245 -0
  720. package/external/folly/folly/portability/Sockets.h +155 -0
  721. package/external/folly/folly/portability/SourceLocation.h +49 -0
  722. package/external/folly/folly/portability/Stdio.cpp +77 -0
  723. package/external/folly/folly/portability/Stdio.h +32 -0
  724. package/external/folly/folly/portability/Stdlib.cpp +172 -0
  725. package/external/folly/folly/portability/Stdlib.h +64 -0
  726. package/external/folly/folly/portability/String.cpp +53 -0
  727. package/external/folly/folly/portability/String.h +39 -0
  728. package/external/folly/folly/portability/SysFile.cpp +46 -0
  729. package/external/folly/folly/portability/SysFile.h +27 -0
  730. package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
  731. package/external/folly/folly/portability/SysMembarrier.h +26 -0
  732. package/external/folly/folly/portability/SysMman.cpp +242 -0
  733. package/external/folly/folly/portability/SysMman.h +68 -0
  734. package/external/folly/folly/portability/SysResource.cpp +108 -0
  735. package/external/folly/folly/portability/SysResource.h +71 -0
  736. package/external/folly/folly/portability/SysStat.cpp +66 -0
  737. package/external/folly/folly/portability/SysStat.h +52 -0
  738. package/external/folly/folly/portability/SysSyscall.h +73 -0
  739. package/external/folly/folly/portability/SysTime.cpp +62 -0
  740. package/external/folly/folly/portability/SysTime.h +50 -0
  741. package/external/folly/folly/portability/SysTypes.h +44 -0
  742. package/external/folly/folly/portability/SysUio.cpp +179 -0
  743. package/external/folly/folly/portability/SysUio.h +51 -0
  744. package/external/folly/folly/portability/Syslog.h +39 -0
  745. package/external/folly/folly/portability/Time.cpp +357 -0
  746. package/external/folly/folly/portability/Time.h +74 -0
  747. package/external/folly/folly/portability/Unistd.h +111 -0
  748. package/external/folly/folly/portability/Windows.h +108 -0
  749. package/external/folly/folly/portability/openat2.c +30 -0
  750. package/external/folly/folly/portability/openat2.h +39 -0
  751. package/external/folly/folly/portability/test/BUCK +59 -0
  752. package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
  753. package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
  754. package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
  755. package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
  756. package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
  757. package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
  758. package/external/folly/folly/small_vector.h +17 -0
  759. package/external/folly/folly/somerge_defs.bzl +399 -0
  760. package/external/folly/folly/sorted_vector_types.h +17 -0
  761. package/external/folly/folly/stop_watch.h +317 -0
  762. package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
  763. package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
  764. package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
  765. package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
  766. package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
  767. package/external/folly/folly/synchronization/AtomicRef.h +181 -0
  768. package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
  769. package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
  770. package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
  771. package/external/folly/folly/synchronization/BUCK +418 -0
  772. package/external/folly/folly/synchronization/Baton.h +419 -0
  773. package/external/folly/folly/synchronization/CallOnce.h +263 -0
  774. package/external/folly/folly/synchronization/DelayedInit.h +179 -0
  775. package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
  776. package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
  777. package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
  778. package/external/folly/folly/synchronization/EventCount.h +200 -0
  779. package/external/folly/folly/synchronization/FlatCombining.h +629 -0
  780. package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
  781. package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
  782. package/external/folly/folly/synchronization/Hazptr.h +209 -0
  783. package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
  784. package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
  785. package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
  786. package/external/folly/folly/synchronization/HazptrObj.h +533 -0
  787. package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
  788. package/external/folly/folly/synchronization/HazptrRec.h +68 -0
  789. package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
  790. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
  791. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
  792. package/external/folly/folly/synchronization/Latch.h +160 -0
  793. package/external/folly/folly/synchronization/LifoSem.h +767 -0
  794. package/external/folly/folly/synchronization/Lock.h +887 -0
  795. package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
  796. package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
  797. package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
  798. package/external/folly/folly/synchronization/ParkingLot.h +330 -0
  799. package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
  800. package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
  801. package/external/folly/folly/synchronization/Rcu.cpp +26 -0
  802. package/external/folly/folly/synchronization/Rcu.h +553 -0
  803. package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
  804. package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
  805. package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
  806. package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
  807. package/external/folly/folly/synchronization/SmallLocks.h +36 -0
  808. package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
  809. package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
  810. package/external/folly/folly/synchronization/WaitOptions.h +75 -0
  811. package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
  812. package/external/folly/folly/synchronization/detail/BUCK +104 -0
  813. package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
  814. package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
  815. package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
  816. package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
  817. package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
  818. package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
  819. package/external/folly/folly/synchronization/detail/Spin.h +96 -0
  820. package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
  821. package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
  822. package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
  823. package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
  824. package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
  825. package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
  826. package/external/folly/folly/synchronization/example/BUCK +27 -0
  827. package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
  828. package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
  829. package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
  830. package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
  831. package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
  832. package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
  833. package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
  834. package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
  835. package/external/folly/folly/synchronization/test/BUCK +495 -0
  836. package/external/folly/folly/synchronization/test/Barrier.h +52 -0
  837. package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
  838. package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
  839. package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
  840. package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
  841. package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
  842. package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
  843. package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
  844. package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
  845. package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
  846. package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
  847. package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
  848. package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
  849. package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
  850. package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
  851. package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
  852. package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
  853. package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
  854. package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
  855. package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
  856. package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
  857. package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
  858. package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
  859. package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
  860. package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
  861. package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
  862. package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
  863. package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
  864. package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
  865. package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
  866. package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
  867. package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
  868. package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
  869. package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
  870. package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
  871. package/external/folly/folly/system/AtFork.cpp +205 -0
  872. package/external/folly/folly/system/AtFork.h +116 -0
  873. package/external/folly/folly/system/AuxVector.h +198 -0
  874. package/external/folly/folly/system/BUCK +144 -0
  875. package/external/folly/folly/system/EnvUtil.cpp +93 -0
  876. package/external/folly/folly/system/EnvUtil.h +113 -0
  877. package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
  878. package/external/folly/folly/system/HardwareConcurrency.h +23 -0
  879. package/external/folly/folly/system/MemoryMapping.cpp +477 -0
  880. package/external/folly/folly/system/MemoryMapping.h +287 -0
  881. package/external/folly/folly/system/Pid.cpp +87 -0
  882. package/external/folly/folly/system/Pid.h +34 -0
  883. package/external/folly/folly/system/Shell.cpp +33 -0
  884. package/external/folly/folly/system/Shell.h +93 -0
  885. package/external/folly/folly/system/ThreadId.cpp +89 -0
  886. package/external/folly/folly/system/ThreadId.h +62 -0
  887. package/external/folly/folly/system/ThreadName.cpp +330 -0
  888. package/external/folly/folly/system/ThreadName.h +72 -0
  889. package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
  890. package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
  891. package/external/folly/folly/system/test/BUCK +120 -0
  892. package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
  893. package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
  894. package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
  895. package/external/folly/folly/system/test/PidTest.cpp +46 -0
  896. package/external/folly/folly/system/test/ShellTest.cpp +66 -0
  897. package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
  898. package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
  899. package/external/folly/folly.vcxitems +164 -0
  900. package/external/folly/static/logo.svg +1 -0
  901. package/external/folly/sync-config.json +8 -0
  902. package/package.json +5 -5
  903. package/template/cpp-lib/proj/MyLib.sln +0 -33
  904. package/template/cs-lib/proj/MyLib.sln +0 -33
  905. package/templates/cpp-app/windows/MyApp.sln +0 -33
  906. package/templates/cpp-lib/example/metro.config.js +30 -4
  907. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  908. package/Folly/Folly.vcxproj +0 -376
  909. package/Folly/Folly.vcxproj.filters +0 -558
  910. package/fmt/fmt.vcxproj +0 -153
  911. package/fmt/fmt.vcxproj.filters +0 -59
  912. package/fmt/pch.cpp +0 -4
  913. package/fmt/pch.h +0 -2
  914. /package/{fmt → external/fmt}/cgmanifest.json +0 -0
  915. /package/{Folly → external/folly}/Folly.natvis +0 -0
  916. /package/{Folly → external/folly}/cgmanifest.json +0 -0
  917. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
  918. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
  919. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
  920. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
  921. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
  922. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
  923. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
  924. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
  925. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
  926. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
@@ -0,0 +1,167 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #pragma once
18
+
19
+ #include <cstdint>
20
+ #include <folly/Portability.h>
21
+ #include <folly/detail/base64_detail/Base64HiddenConstants.h>
22
+
23
+ #if FOLLY_SSE_PREREQ(4, 2)
24
+ #include <immintrin.h>
25
+
26
+ namespace folly::detail::base64_detail {
27
+
28
+ /*
29
+ * NOTE: PLEASE SEE README FOR A DETAILED EXPLANATIONS
30
+ * VIRTUALLY IMPOSSIBLE TO DECIPHER OTHERWISE.
31
+ */
32
+
33
+ struct Base64_SSE4_2_Platform {
34
+ using reg_t = __m128i;
35
+ static constexpr std::size_t kRegisterSize = 16;
36
+
37
+ // Encode ------------------------------
38
+
39
+ static reg_t encodeToIndexesPshuvbMask() {
40
+ // PONM,LKJI,HGFE,DCBA => KLJK'GIGH,EFDE,BCAB
41
+ // clang-format off
42
+ return _mm_set_epi8 (
43
+ 10, 11, 9, 10, // KLJK
44
+ 7, 8, 6, 7, // GIGH
45
+ 4, 5, 3, 4, // EFDE
46
+ 1, 2, 0, 1 // BCAB
47
+ );
48
+ // clang-format on
49
+ }
50
+
51
+ static reg_t encodeToIndexes(reg_t in) {
52
+ in = _mm_shuffle_epi8(in, encodeToIndexesPshuvbMask());
53
+
54
+ const reg_t t0 = _mm_and_si128(in, _mm_set1_epi32(0x0fc0fc00));
55
+ const reg_t t1 = _mm_mulhi_epu16(t0, _mm_set1_epi32(0x04000040));
56
+ const reg_t t2 = _mm_and_si128(in, _mm_set1_epi32(0x003f03f0));
57
+ const reg_t t3 = _mm_mullo_epi16(t2, _mm_set1_epi32(0x01000010));
58
+
59
+ return _mm_or_si128(t1, t3);
60
+ }
61
+
62
+ static reg_t lookupByIndex(reg_t in, std::int8_t const* offsetTablePtr) {
63
+ const reg_t offsetTable =
64
+ _mm_loadu_si128(reinterpret_cast<const __m128i*>(offsetTablePtr));
65
+
66
+ // 0-51 become 0, 52 and bigger map to 1 and bigger
67
+ const reg_t reduceTooMuch = _mm_subs_epu8(in, _mm_set1_epi8(51));
68
+
69
+ // 0 when should map to A-Z, otherwise -1.
70
+ const reg_t biggerThan25 = _mm_cmpgt_epi8(in, _mm_set1_epi8(25));
71
+
72
+ const reg_t offsetLookup = _mm_sub_epi8(reduceTooMuch, biggerThan25);
73
+
74
+ return _mm_add_epi8(in, _mm_shuffle_epi8(offsetTable, offsetLookup));
75
+ }
76
+
77
+ // Decode ------------------------------------------------------------
78
+
79
+ // > 128 changes but stays > 128
80
+ // > '+' stays the same
81
+ // <= '+' becomes closer to 0 so that higher nibble in '+' is 1.
82
+ // Using 0x0f as offset because we'll need it in a different place too.
83
+ static reg_t separatePlusAndSlash(reg_t reg) {
84
+ const reg_t leThanPlus = _mm_cmplt_epi8(reg, _mm_set1_epi8('+' + 1));
85
+ const reg_t plusAndBelowOffset =
86
+ _mm_and_si128(leThanPlus, _mm_set1_epi8(0x0f));
87
+ return _mm_subs_epi8(reg, plusAndBelowOffset);
88
+ }
89
+
90
+ static reg_t initError() { return _mm_set1_epi8(0xff); }
91
+
92
+ static bool hasErrors(reg_t errorAccumulator) {
93
+ return _mm_movemask_epi8(
94
+ _mm_cmpeq_epi8(errorAccumulator, _mm_setzero_si128()));
95
+ }
96
+
97
+ static reg_t decodeErrorDetection(reg_t reg, reg_t higherNibbles) {
98
+ // clang-format off
99
+ const std::int8_t s1_7 = static_cast<std::int8_t>(1 << 7);
100
+ const reg_t pows2 = _mm_set_epi8(
101
+ 0, 0, 0, 0,
102
+ 0, 0, 0, 0,
103
+ s1_7, 1 << 6, 1 << 5, 1 << 4,
104
+ 1 << 3, 1 << 2, 1 << 1, 1 << 0);
105
+ // clang-format on
106
+
107
+ reg_t higherNibbleBit = _mm_shuffle_epi8(pows2, higherNibbles);
108
+
109
+ // Here we should lookup by lower nibbles.
110
+ // However, this is either equivalent or, if the input byte is
111
+ // negative the result is 0, which is OK since no negative input byte
112
+ // is valid.
113
+ reg_t legalHigherNibblesBits =
114
+ _mm_shuffle_epi8(loadu(constants::kValidHighByLowNibble.data()), reg);
115
+
116
+ return _mm_and_si128(higherNibbleBit, legalHigherNibblesBits);
117
+ }
118
+
119
+ static reg_t decodeComputeIndexes(reg_t reg, reg_t higherNibbles) {
120
+ reg_t offset = _mm_shuffle_epi8(
121
+ loadu(constants::kOffsetByHighNibbleDecodeTable.data()), higherNibbles);
122
+ return _mm_add_epi8(offset, reg);
123
+ }
124
+
125
+ static reg_t decodeToIndex(reg_t reg, reg_t& errorAccumulator) {
126
+ reg = separatePlusAndSlash(reg);
127
+
128
+ reg_t higherNibbles =
129
+ _mm_and_si128(_mm_srli_epi32(reg, 4), _mm_set1_epi8(0x0f));
130
+
131
+ errorAccumulator = _mm_min_epu8(
132
+ decodeErrorDetection(reg, higherNibbles), errorAccumulator);
133
+
134
+ return decodeComputeIndexes(reg, higherNibbles);
135
+ }
136
+
137
+ static reg_t packIndexesToBytes(reg_t reg) {
138
+ // ccc << 6 + ddd aaa << 6 + bbb (<< 6 == * 0x40)
139
+ reg_t cccddd_aaabbb = _mm_maddubs_epi16(reg, _mm_set1_epi16(0x01'40));
140
+
141
+ // Combine the whole epi32 aaabbb << 12 + cccddd (<< 12 == 0x1000)
142
+ reg_t aaabbbcccddd =
143
+ _mm_madd_epi16(cccddd_aaabbb, _mm_set1_epi32(0x1'1000));
144
+
145
+ // clang-format off
146
+ return _mm_shuffle_epi8(aaabbbcccddd, _mm_set_epi8(
147
+ -1, -1, -1, -1, // zero out the last 4 bytes
148
+ 12, 13, 14,
149
+ 8, 9, 10,
150
+ 4, 5, 6,
151
+ 0, 1, 2
152
+ ));
153
+ // clang-format on
154
+ }
155
+
156
+ static reg_t loadu(const void* ptr) {
157
+ return _mm_loadu_si128(reinterpret_cast<const reg_t*>(ptr));
158
+ }
159
+
160
+ static void storeu(void* ptr, reg_t reg) {
161
+ _mm_storeu_si128(reinterpret_cast<reg_t*>(ptr), reg);
162
+ }
163
+ };
164
+
165
+ } // namespace folly::detail::base64_detail
166
+
167
+ #endif // FOLLY_SSE_PREREQ(4, 2)
@@ -0,0 +1,392 @@
1
+ *This file contains explanation of how SIMD implementation of Base64 functions*
2
+
3
+ Our solution is based on 0x80 blog: [encoding](http://0x80.pl/notesen/2016-01-12-sse-base64-encoding.html), [decoding](http://0x80.pl/notesen/2016-01-17-sse-base64-decoding.html).
4
+
5
+ This is a different version of the same explanation + we have some differences.
6
+
7
+ *NOTE: We are using 1 digit for two bits when writing data*
8
+
9
+ # Understanding Base64 encoding.
10
+
11
+ *If you find it easier, [Wikipedia](https://en.wikipedia.org/wiki/Base64).*
12
+
13
+ The goal of base64 is to encode arbitrary byte data as text that can be passed around.
14
+ It works as follows:
15
+ * we select a 64 character alphabet.
16
+ * we insert two 0 bits after each 6 bits. 2^6 is 64.
17
+ * because we now only need to encode 64 values, our alphabet is sufficient.
18
+
19
+ # Encoding
20
+
21
+ So, we have 2 steps needed to do the conversion: 1. get indexes 0-64, 2. lookup the corresponding char.
22
+ There is also a little bit of tail handling, see the apropriate section.
23
+
24
+ If one letter represents two bits, it looks smth like this (remember - our machines are little endian):
25
+
26
+ ```
27
+ `cddd`bbcc`aaab => 0ddd`0ccc`0bbb`0aaa
28
+ ```
29
+
30
+ After this we just have to convert the bytes into the selected alphabet.
31
+
32
+ This means we have two steps to the algorithm: encodeToIndexes and lookupByIndex.
33
+
34
+ ## encodeToIndexes
35
+
36
+ *NOTE: assume 16 byte registers.*
37
+
38
+ We will only be converting 12 bytes to output 16 bytes.
39
+ The last 4 loaded bytes are ignored.
40
+
41
+ 1. We need to shuffle bytes in a way that each dword contains all the bits to construct output for that dword. Specifically:
42
+
43
+ ```
44
+ PONM,LKJI,HGFE,DCBA => KLJK,GIGH,EFDE,BCAB
45
+ ```
46
+
47
+ > STEP BY STEP:
48
+ > * We had bytes in memory ABCD.
49
+ > * Loaded on a LE machine they become DCBA.
50
+ > * The first output dword will only fit ABC,
51
+ D goes into the second dword.
52
+ > * We will also reshuffle CBA as BCAB becuase this will make
53
+ futher operations simpler.
54
+
55
+ After this we will mutate each dword (letter+digit indicate 2 bits):
56
+
57
+ ```
58
+ shuffled b2b3c1c2'c3d1d2d3'a1a2a3b1'b2b3c1c2
59
+ exepcted 00d1d2d3'00c1c2c3'00b1b2b3'00a1a2a3
60
+ ```
61
+
62
+ At the moment of writing this we only have an SSE4.2 version. We can do it fairly straightforwardly with shifts and blends. However the 0x80 blogs suggests that using a tricky mutliplication scheme is superior, and that's what we do.
63
+
64
+ For neon there are by element shift instructions which would help.
65
+ On avx2 there are `srlv` family of instructions that can come in handy as well.
66
+ The 0x80 blog also talks about a BMI implementation (pdep/pext instructions). They had issues on AMD but apparently not on the AMDs in Meta's fleet, so in the future we can consider it as a possibility as well.
67
+
68
+ ## lookupByIndex
69
+
70
+ The idea is to use table lookup/shuffle instructions (`pshuvb` on sse4.2). They allow you to shuffle a register by index (`0..16`).
71
+
72
+ We have values `0..64`. However, we can utilize that the output values are not random. The are split into a few contigious groups. We don't have to lookup the complete encoding, we just need to lookup the offset to add.
73
+
74
+
75
+ | Index | Maps to | Add to encode |
76
+ | ----- | --------| ------------- |
77
+ | 0-25 | 'A'-'Z' | 'A' - 0 |
78
+ | 26-51 | 'a'-'z' | 'a' - 26 |
79
+ | 52-61 | '0'-'9' | '0' - 52 |
80
+ | 62 | '+' | '+' - 62 |
81
+ | 63 | '/' | '/' - 63 |
82
+
83
+
84
+ *NOTE: the URL version of Base64 encoding uses -_ instead of +/*.
85
+
86
+ Since we have 16 values to map to, we are not going to bother with consolidating 52-61 to a single base and instead will them up individually.
87
+
88
+ This is our final lookup table:
89
+
90
+ ```
91
+ 0: 'A' - 0
92
+ 1: 'a' - 26
93
+ 2: '0' - 52,
94
+ 3: '1' - 53
95
+ ...
96
+ 11: '9' - 61
97
+ 12: '+' - 62
98
+ 13: '/' - 63
99
+ 14: -
100
+ 15: -
101
+ ```
102
+
103
+ We even have two extra indexes `14` and `15` that are unused.
104
+
105
+ ## Tail handling
106
+
107
+ What if we have less than register size to load?
108
+ What if we have less than 3 elements to encode?
109
+
110
+ Base64 for incomplete 3 bytes works as if there were
111
+ extra 0s at the end, except the garbage elements are replaced
112
+ with either a padding character or just removed.
113
+
114
+ Example:
115
+
116
+ |input bytes (be) | Basic | Url |
117
+ |-----------------|--------|------|
118
+ | (1) | AQ== | AQ |
119
+ | (1, 0) | AQA= | AQA |
120
+ | (1, 0, 0) | AQAA | AQAA |
121
+
122
+ After measuring different options, using scalar loop peeling
123
+ proved to be the fastest.
124
+
125
+ # Decoding
126
+
127
+ Overall the decoding process is similar to inverse of the encoding: 1. from chars get numbers `0..63` 2. pack them
128
+ into bytes.
129
+
130
+ However, unlike encoding, not all the sequences of bytes are valid.
131
+ We have to decide which ones to accept and how to handle errors.
132
+
133
+ *NOTE: error detection is fairly expensive, if in the
134
+ future there is a need for a decode that can sometimes
135
+ swallow invalid values, it can be done faster*.
136
+
137
+ Decisions:
138
+ `base64Decode` requires `=` padding and accepts only [`+`, `/`] as 62/63 character.
139
+ If there are extra bits on the end, those are not allowed: iZ== is not a valid input
140
+ because no input sequence will produce it.
141
+ `base64URLDecode`: allows everything encoded with plain base64 and base64URL.
142
+ It will succesfully decode some combinations that are not either. The extra bits on
143
+ the end are currently allowed: iZ== will decode successfully (this decision is not
144
+ motivated by anything).
145
+
146
+ *NOTE:* details on `baseURLDecode` rules:
147
+ * Padding bytes follow regual base64: if they are present they are allowed to be only in positions that
148
+ regular base64 allows them to be in: 4th or 3rd and 4th in the 4 byte chunk. "aa==", "aaa=" - OK, "aa=", "==" - not OK. This decision follows the previous most common implementation of base64 in the codebase.
149
+ * Both ['+', '/'] and ['-', '_'] are allowed in any combinations. "+-" is legal for example.
150
+
151
+
152
+ *NOTE: this follows the previous design and not necessarily how other places define
153
+ base64URLDecode. The difference comes to decoding invalid sequence of padding characters.
154
+ Example: "ba=" we consider invalid while some other implmenetations might just strip '='. We
155
+ suspect it won't be an issue*.
156
+
157
+ This behaviour matches what the previous implementation did.
158
+
159
+ We only have a SIMD version of this algorithm for `base64Decode` because the URL decode has
160
+ very little use (so far at least).
161
+
162
+ The SIMD algorithm has 2 steps:
163
+ - `decodeCharToIndex`: convert to numbers from `0..63`
164
+ - `packIndexesToBytes`: packs `0..63` into the originally encoded bytes.
165
+
166
+ If we encounter an error, we are not going to stop processing data. We are just going to mark it and then check at the end.
167
+
168
+ ## decodeCharToIndex
169
+
170
+ Convertions we want
171
+
172
+ | Char | Char's Hex code | Res | Res Hex |
173
+ |-----------|-----------------|---------|-------------|
174
+ | '+' | 0x2B | 62 | 0x3E |
175
+ | '/' | 0x2F | 63 | 0x3F |
176
+ | '0' - '9' | 0x30 - 0x39 | 52 - 61 | 0x34 - 0x3D |
177
+ | 'A' - 'Z' | 0x41 - 0x5A | 0 - 25 | 0x00 - 0x19 |
178
+ | 'a' - 'z' | 0x61 - 0x7A | 26 - 51 | 0x1A - 0x33 |
179
+
180
+ ### Idea
181
+
182
+ We have unique higher 4 bits (nibble) per consecutive group,
183
+ except for '+' and '/'.
184
+ We can find a unique offset with pshuvb by it.
185
+
186
+ ### Deal with '+' and '/' nibbles
187
+
188
+ We need to move '+' and '/' into their own nibbles.
189
+ It's important that all previously invalid chars stay invalid.
190
+
191
+ The best way I see to do it is to substact 0x0f from everything less than or equal to +.
192
+ The reason to use 0x0f is that it's a constant we will need anyways ot get 4 higher nibbles.
193
+
194
+ However on intel there is no unsigned comparison, so all the negative values will be considered as <= '+'. To deal with it, we can use a signed comparison but subtract with satuation.
195
+
196
+ * <= '+' gives -1 where '+'
197
+ * and 0x0f
198
+ * subs
199
+
200
+ Everything bigger than '+' will stay the same.
201
+ Everything smaller than '+' is invalid and will become even smaller.
202
+ It will saturate to -127 which is still ivalid, so we are OK.
203
+
204
+ *NOTE: I was also thinking if this is possible to do with just one subtruction and no mask. Unfortunatly we also need to keep a separate nibble for '0' and '/' and '0' == '/' + 1, so that subtraction will guarantee put '/' and '0' on the same higher nibble.*
205
+
206
+ *NOTE: If we drop the requirement on invalid elements, again - this is much easier*.
207
+
208
+ New conversion table:
209
+
210
+ | Char | New Hex code | Res | Res Hex |
211
+ |-----------|---------------|---------|-------------|
212
+ | '+' | 0x1C | 62 | 0x3E |
213
+ | '/' | 0x2F | 63 | 0x3F |
214
+ | '0' - '9' | 0x30 - 0x39 | 52 - 61 | 0x34 - 0x3D |
215
+ | 'A' - 'Z' | 0x41 - 0x5A | 0 - 25 | 0x00 - 0x19 |
216
+ | 'a' - 'z' | 0x61 - 0x7A | 26 - 51 | 0x1A - 0x33 |
217
+
218
+ ### Detect invalid values.
219
+
220
+ The idea is that we have valid higher nibbles in range from `1..7`.
221
+ We can convert higher nibbles into a bitmask `0000'0010 ... 1000'0000` (`1 << nibble`)
222
+ Due to a lack of proper shift instruction on x86, we will use a table lookup (`pshuvb`).
223
+ All other higher nibbles can become 0, indicating invalid input.
224
+
225
+ Now for all possible lower nibbles we have a set of valid higher nibbles.
226
+
227
+
228
+ | Lower Nibble | Valid higher nibble |
229
+ | ------------ | ------------------- |
230
+ | 0 | 3, 5, 7 |
231
+ | 1 - 9 | 3, 4, 5, 6, 7 |
232
+ | A | 4, 5, 6, 7 |
233
+ | B | 4, 6 |
234
+ | C | 1, 4, 6 |
235
+ | D, E | 4, 6 |
236
+ | F | 2, 4, 6 |
237
+
238
+
239
+ So: by higher nibble lookup a bit that indicates that higher nibble
240
+ by lower nible lookup a set of valid bits
241
+ and
242
+
243
+ This will give us a non-zero when it's OK.
244
+ And 0 when it's not.
245
+
246
+ Between iterations we can accumulate error with unsigned min.
247
+ 0 - is the smallest value - so we will get 0 if there was one.
248
+
249
+ ### Offset to correct values.
250
+
251
+ Similar idea to encode - we just lookup the proper offset and add it.
252
+ We'll need to lookup by higher nibble.
253
+
254
+ | Char | New Hex code | Res | Offset (- means minus) |
255
+ |-----------|---------------|---------|------------------------|
256
+ | '+' | 0x1C | 62 | 62 - 0x1C |
257
+ | '/' | 0x2F | 63 | 63 - '/' |
258
+ | '0' - '9' | 0x30 - 0x39 | 52 - 61 | 52 - '0' |
259
+ | 'A' - 'O' | 0x41 - 0x4F | 0 - 14 | 0 - 'A' |
260
+ | 'P' - 'Z' | 0x50 - 0x5A | 15 - 25 | 0 - 'A' |
261
+ | 'a' - 'o' | 0x61 - 0x6F | 26 - 40 | 26 - 'a' |
262
+ | 'p' - 'z' | 0x70 - 0x7A | 26 - 51 | 26 - 'a' |
263
+
264
+ ## packIndexesToBytes
265
+
266
+ *NOTE: assume 16 byte registers.*
267
+
268
+ From a register of 16 bytes we need to get 12 bytes.
269
+ I think the only way to do it is to convert each 4 bytes to
270
+ appropriate 3 bytes and then put them all together.
271
+ After we doing conversion 4 to 3 we'll remove the leftover byte
272
+ with one shuffle.
273
+
274
+ Goal (*One letter - 2 bits*):
275
+
276
+ - Input: `0ddd'0ccc'0bbb'0aaa`
277
+ - Needed bytes: `'cddd'bbcc'aaab`
278
+
279
+ We can obviously shift and or to get the desired result
280
+ (and maybe on ARM we should) but again, shifting story for x86 is poor.
281
+
282
+ The 0x80 blog suggests the following trick.
283
+
284
+ ### Multiply add (MADD) solution
285
+
286
+ On SSE there are `madd` instrucitons for adjacent bytes (`_mm_maddubs_epi16`) and words (`_mm_madd_epi16`). Multiply is a strictly more powerful operation than shift, so this will work.
287
+
288
+ *NOTE: all of our numbers are positive so the sign of the operations doesn't matter*
289
+
290
+ Here is the scalar equivalent of the code we'll do.
291
+ (*I omit indicating leading 0s and ignore casts*).
292
+
293
+ ```
294
+ std::uint16_t aaabbb = aaa << 6 + bbb;
295
+ std::uint16_t cccddd = ccc << 6 + ddd;
296
+ std::uint32_t aaabbbcccddd = aaabbb << 12 + cccddd;
297
+ ```
298
+
299
+ Multiplication equivalent of `<< 6` is `* 0x40` and of `<< 12` is `* 0x1000`.
300
+
301
+ Now that we have `0000'aaab'bbcc'cddd`.
302
+ The correct order `cddd'bccc'aaab` which we can mix
303
+ into the final shuffle.
304
+
305
+ ## looping
306
+
307
+ We can convert only in registers. There is a question: when can we write the whole
308
+ register to the output?
309
+ For example, for 16 bytes of input (no padding) we only have 12 bytes of output space.
310
+
311
+ A simple way to answer if we have enough space is to compute how much output space we'll need overall.
312
+ However, this operation is somewhat expensive and is likely already done for the allocation. So computing output size ideally should be avoided.
313
+
314
+ We can prove that as long as the `Register` is bigger than 16 bytes, `1.5 Register` of input space is enough to guarantee at least one register of the output sopace.
315
+
316
+ Proof.
317
+
318
+ Out of `1.5 Register`, `1 Register` converts to `0.75 Register` in the output. So we are left with proving that `0.5 Register` will produce at least `0.25 Register` of the output.
319
+
320
+ If there is no padding - `0.5` converts to `3/8`, which is `> 0.25`.
321
+ If there is padding, the last dword of input might produce just `1` output byte.
322
+
323
+ So, we need to prove that:
324
+
325
+ `convertedSize(RegisterSize / 2 - 4) >= RegisterSize / 4 - 1`
326
+
327
+ For `16` bytes it works `convertedSize(4) == 3`.
328
+ For `Register > 16` bytes, we can split:
329
+
330
+ ```
331
+ convertedSize(RegisterSize / 4) +
332
+ convertedSize(RegisterSize / 4 - 4) >=
333
+ RegisterSize / 8 +
334
+ RegisterSize / 8 - 1
335
+ ```
336
+
337
+ Since `convertedSize(RegisterSize / 4) > RegisterSize / 8` we just reduced the problem to 16 bytes.
338
+
339
+ Proven.
340
+
341
+ ## Decoding SWAR
342
+
343
+ SWAR stands for SIMD Within A Register i.e. using bit tricks to
344
+ process multiple bytes in a bigger integer register.
345
+ Previous version of Base64Decode was using some bit tricks and, as a result,
346
+ was beating our performance for tails.
347
+
348
+ On top of that, if the platform lacks the necessary SIMD capabilities, SWAR is
349
+ benefitial, so we decided to implement it.
350
+
351
+ How does it work?
352
+
353
+ The simple version of the decoding alogirhtm matches from the input char to
354
+ the index: let's say char `a` is matched to the number `26`. So we would first match
355
+ chars to the corresponding indexes and then blend those indexes toghether.
356
+
357
+ Let's say (one letter still 2 bits):
358
+
359
+ ```
360
+ 0AAA'0BBB'0CCC'0DDD // input chars
361
+ 0aaa'0bbb'0ccc'0ddd // corresponding bytes
362
+ cddd'bbcc'aaab'____ // after a bunch of bit manipulations
363
+ // (last byte is w/e)
364
+ ```
365
+
366
+ However, what if we incorporated both position and character in the lookup table?
367
+
368
+ ```
369
+ char: 0AAA
370
+ corresponds to index: 0aaa
371
+
372
+ [0][0AAA] = 0000'0000'aaa0'0000
373
+ [1][0AAA] = 0000'aa00'000a'0000
374
+ [2][0AAA] = a000'00aa'0000'0000
375
+ [4][0AAA] = 0aaa'0000'0000'0000
376
+ ```
377
+
378
+ This way we can just `or` results for all input chars.
379
+ Since we have one byte, which is always `0000`, we can use that byte for marking errors.
380
+ So for a busted input we can just store `0xffffffff`. We will `or` everything we output - and then check for `0xffffffff` in the end.
381
+
382
+ This is the formula for each position (d - decoded index for char):
383
+
384
+ ```
385
+ d << 2; // 0: 0000'0000'0000'aaa0
386
+ d >> 4 | (d << 12 & 0xff00); // 1: 0000'0000'bb00'000b
387
+ (d << 6 & 0xff00) | (d << 22 & 0xff0000); // 2: 0000'c000'00cc'0000
388
+ d << 16; // 3: 0000'0ddd'0000'0000
389
+ ```
390
+
391
+ This is a memory/speed trade off. For a simple table lookup decoding we store 256 bytes. For this decoding we store 256 * 4 * 4 = 4kb. On big enough data this is a win of about a third over naive code. As far as SIMD clean up code is concerned, this is more questionable but for now we decided to go with it given that it shows an
392
+ improvement in microbenchmarks.
@@ -0,0 +1,36 @@
1
+ load("@fbcode_macros//build_defs:cpp_unittest.bzl", "cpp_unittest")
2
+
3
+ oncall("fbcode_entropy_wardens_folly")
4
+
5
+ cpp_unittest(
6
+ name = "base64_against_scalar_test",
7
+ srcs = ["Base64AgainstScalarTest.cpp"],
8
+ deps = [
9
+ "//folly/detail/base64_detail:base64_common",
10
+ "//folly/detail/base64_detail:base64_scalar",
11
+ "//folly/detail/base64_detail:base64_sse4_2",
12
+ "//folly/detail/base64_detail:base64_swar",
13
+ "//folly/portability:gtest",
14
+ ],
15
+ )
16
+
17
+ cpp_unittest(
18
+ name = "base64_platform_test",
19
+ srcs = ["Base64PlatformTest.cpp"],
20
+ deps = [
21
+ "//folly/detail/base64_detail:base64_sse4_2_platform",
22
+ "//folly/portability:gtest",
23
+ ],
24
+ )
25
+
26
+ cpp_unittest(
27
+ name = "base64_special_cases_test",
28
+ srcs = ["Base64SpecialCasesTest.cpp"],
29
+ deps = [
30
+ "//folly/detail/base64_detail:base64_scalar",
31
+ "//folly/detail/base64_detail:base64_simd",
32
+ "//folly/detail/base64_detail:base64_sse4_2",
33
+ "//folly/portability:constexpr",
34
+ "//folly/portability:gtest",
35
+ ],
36
+ )