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,76 @@
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
+ #include <folly/MicroLock.h>
18
+
19
+ #include <thread>
20
+
21
+ #include <folly/portability/Asm.h>
22
+
23
+ namespace folly {
24
+
25
+ uint8_t MicroLockCore::lockSlowPath(
26
+ uint32_t oldWord,
27
+ detail::Futex<>* wordPtr,
28
+ unsigned baseShift,
29
+ unsigned maxSpins,
30
+ unsigned maxYields) noexcept {
31
+ uint32_t newWord;
32
+ unsigned spins = 0;
33
+ uint32_t heldBit = 1 << baseShift;
34
+ uint32_t waitBit = heldBit << 1;
35
+ uint32_t needWaitBit = 0;
36
+
37
+ retry:
38
+ if ((oldWord & heldBit) != 0) {
39
+ ++spins;
40
+ if (spins > maxSpins + maxYields) {
41
+ // Somebody appears to have the lock. Block waiting for the
42
+ // holder to unlock the lock. We set heldbit(slot) so that the
43
+ // lock holder knows to FUTEX_WAKE us.
44
+ newWord = oldWord | waitBit;
45
+ if (newWord != oldWord) {
46
+ if (!wordPtr->compare_exchange_weak(
47
+ oldWord,
48
+ newWord,
49
+ std::memory_order_relaxed,
50
+ std::memory_order_relaxed)) {
51
+ goto retry;
52
+ }
53
+ }
54
+ detail::futexWait(wordPtr, newWord, heldBit);
55
+ needWaitBit = waitBit;
56
+ } else if (spins > maxSpins) {
57
+ // sched_yield(), but more portable
58
+ std::this_thread::yield();
59
+ } else {
60
+ folly::asm_volatile_pause();
61
+ }
62
+ oldWord = wordPtr->load(std::memory_order_relaxed);
63
+ goto retry;
64
+ }
65
+
66
+ newWord = oldWord | heldBit | needWaitBit;
67
+ if (!wordPtr->compare_exchange_weak(
68
+ oldWord,
69
+ newWord,
70
+ std::memory_order_acquire,
71
+ std::memory_order_relaxed)) {
72
+ goto retry;
73
+ }
74
+ return decodeDataFromWord(newWord, baseShift);
75
+ }
76
+ } // namespace folly
@@ -0,0 +1,354 @@
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 <cassert>
20
+ #include <climits>
21
+ #include <cstdint>
22
+ #include <utility>
23
+
24
+ #include <folly/Optional.h>
25
+ #include <folly/Portability.h>
26
+ #include <folly/detail/Futex.h>
27
+
28
+ namespace folly {
29
+
30
+ /**
31
+ * Tiny exclusive lock that uses 2 bits. It is stored as 1 byte and
32
+ * has APIs for using the remaining 6 bits for storing user data.
33
+ *
34
+ * You should zero-initialize the bits of a MicroLock that you intend
35
+ * to use.
36
+ *
37
+ * If you're not space-constrained, prefer std::mutex, which will
38
+ * likely be faster, since it has more than two bits of information to
39
+ * work with.
40
+ *
41
+ * You are free to put a MicroLock in a union with some other object.
42
+ * If, for example, you want to use the bottom two bits of a pointer
43
+ * as a lock, you can put a MicroLock in a union with the pointer,
44
+ * which will use the two least-significant bits in the bottom byte.
45
+ *
46
+ * (Note that such a union is safe only because MicroLock is based on
47
+ * a character type, and even under a strict interpretation of C++'s
48
+ * aliasing rules, character types may alias anything.)
49
+ *
50
+ * Unused bits in the lock can be used to store user data via
51
+ * lockAndLoad() and unlockAndStore(), or LockGuardWithData.
52
+ *
53
+ * MicroLock uses a dirty trick: it actually operates on the full
54
+ * 32-bit, four-byte-aligned bit of memory into which it is embedded.
55
+ * It never modifies bits outside the ones it's defined to modify, but
56
+ * it _accesses_ all the bits in the 32-bit memory location for
57
+ * purposes of futex management.
58
+ *
59
+ * The MaxSpins template parameter controls the number of times we
60
+ * spin trying to acquire the lock. MaxYields controls the number of
61
+ * times we call sched_yield; once we've tried to acquire the lock
62
+ * MaxSpins + MaxYields times, we sleep on the lock futex.
63
+ * By adjusting these parameters, you can make MicroLock behave as
64
+ * much or as little like a conventional spinlock as you'd like.
65
+ *
66
+ * Performance
67
+ * -----------
68
+ *
69
+ * With the default template options, the timings for uncontended
70
+ * acquire-then-release come out as follows on Intel(R) Xeon(R) CPU
71
+ * E5-2660 0 @ 2.20GHz, in @mode/opt, as of the master tree at Tue, 01
72
+ * Mar 2016 19:48:15.
73
+ *
74
+ * ========================================================================
75
+ * folly/test/SmallLocksBenchmark.cpp relative time/iter iters/s
76
+ * ========================================================================
77
+ * MicroSpinLockUncontendedBenchmark 13.46ns 74.28M
78
+ * PicoSpinLockUncontendedBenchmark 14.99ns 66.71M
79
+ * MicroLockUncontendedBenchmark 27.06ns 36.96M
80
+ * StdMutexUncontendedBenchmark 25.18ns 39.72M
81
+ * VirtualFunctionCall 1.72ns 579.78M
82
+ * ========================================================================
83
+ *
84
+ * (The virtual dispatch benchmark is provided for scale.)
85
+ *
86
+ * While the uncontended case for MicroLock is competitive with the
87
+ * glibc 2.2.0 implementation of std::mutex, std::mutex is likely to be
88
+ * faster in the contended case, because we need to wake up all waiters
89
+ * when we release.
90
+ *
91
+ * Make sure to benchmark your particular workload.
92
+ *
93
+ */
94
+
95
+ class MicroLockCore {
96
+ protected:
97
+ uint8_t lock_{};
98
+ /**
99
+ * Arithmetic shift required to get to the byte from the word.
100
+ */
101
+ unsigned baseShift() const noexcept;
102
+ /**
103
+ * Mask for bit indicating that the flag is held.
104
+ */
105
+ unsigned heldBit() const noexcept;
106
+ /**
107
+ * Mask for bit indicating that there is a waiter that should be woken up.
108
+ */
109
+ unsigned waitBit() const noexcept;
110
+
111
+ FOLLY_DISABLE_SANITIZERS static uint8_t lockSlowPath(
112
+ uint32_t oldWord,
113
+ detail::Futex<>* wordPtr,
114
+ unsigned baseShift,
115
+ unsigned maxSpins,
116
+ unsigned maxYields) noexcept;
117
+
118
+ /**
119
+ * The word (halfword on 64-bit systems) that this lock atomically operates
120
+ * on. Although the atomic operations access 4 bytes, only the byte used by
121
+ * the lock will be modified.
122
+ */
123
+ detail::Futex<>* word() const noexcept;
124
+
125
+ static constexpr unsigned kNumLockBits = 2;
126
+ static constexpr uint8_t kLockBits =
127
+ static_cast<uint8_t>((1 << kNumLockBits) - 1);
128
+ static constexpr uint8_t kDataBits = static_cast<uint8_t>(~kLockBits);
129
+ /**
130
+ * Decodes the value stored in the unused bits of the lock.
131
+ */
132
+ static constexpr uint8_t decodeDataFromByte(uint8_t lockByte) noexcept {
133
+ return static_cast<uint8_t>(lockByte >> kNumLockBits);
134
+ }
135
+ /**
136
+ * Encodes the value for the unused bits of the lock.
137
+ */
138
+ static constexpr uint8_t encodeDataToByte(uint8_t data) noexcept {
139
+ return static_cast<uint8_t>(data << kNumLockBits);
140
+ }
141
+
142
+ static constexpr uint8_t decodeDataFromWord(
143
+ uint32_t word, unsigned baseShift) noexcept {
144
+ return static_cast<uint8_t>(
145
+ static_cast<uint8_t>(word >> baseShift) >> kNumLockBits);
146
+ }
147
+ uint8_t decodeDataFromWord(uint32_t word) const noexcept {
148
+ return decodeDataFromWord(word, baseShift());
149
+ }
150
+ static constexpr uint32_t encodeDataToWord(
151
+ uint32_t word, unsigned shiftToByte, uint8_t value) noexcept {
152
+ const uint32_t preservedBits = word & ~(kDataBits << shiftToByte);
153
+ const uint32_t newBits = encodeDataToByte(value) << shiftToByte;
154
+ return preservedBits | newBits;
155
+ }
156
+
157
+ template <typename Func>
158
+ FOLLY_DISABLE_SANITIZERS void unlockAndStoreWithModifier(
159
+ Func modifier) noexcept;
160
+
161
+ public:
162
+ /**
163
+ * Loads the data stored in the unused bits of the lock atomically.
164
+ */
165
+ FOLLY_DISABLE_SANITIZERS uint8_t
166
+ load(std::memory_order order = std::memory_order_seq_cst) const noexcept {
167
+ return decodeDataFromWord(word()->load(order));
168
+ }
169
+
170
+ /**
171
+ * Stores the data in the unused bits of the lock atomically. Since 2 bits are
172
+ * used by the lock, the most significant 2 bits of the provided value will be
173
+ * ignored.
174
+ */
175
+ FOLLY_DISABLE_SANITIZERS void store(
176
+ uint8_t value,
177
+ std::memory_order order = std::memory_order_seq_cst) noexcept;
178
+
179
+ /**
180
+ * Unlocks the lock and stores the bits of the provided value into the data
181
+ * bits. Since 2 bits are used by the lock, the most significant 2 bits of the
182
+ * provided value will be ignored.
183
+ */
184
+ void unlockAndStore(uint8_t value) noexcept;
185
+ void unlock() noexcept;
186
+ };
187
+
188
+ inline detail::Futex<>* MicroLockCore::word() const noexcept {
189
+ uintptr_t lockptr = (uintptr_t)&lock_;
190
+ lockptr &= ~(sizeof(uint32_t) - 1);
191
+ return (detail::Futex<>*)lockptr;
192
+ }
193
+
194
+ inline unsigned MicroLockCore::baseShift() const noexcept {
195
+ unsigned offset_bytes = (unsigned)((uintptr_t)&lock_ - (uintptr_t)word());
196
+
197
+ return static_cast<unsigned>(
198
+ kIsLittleEndian ? CHAR_BIT * offset_bytes
199
+ : CHAR_BIT * (sizeof(uint32_t) - offset_bytes - 1));
200
+ }
201
+
202
+ inline unsigned MicroLockCore::heldBit() const noexcept {
203
+ return 1U << (baseShift() + 0);
204
+ }
205
+
206
+ inline unsigned MicroLockCore::waitBit() const noexcept {
207
+ return 1U << (baseShift() + 1);
208
+ }
209
+
210
+ inline void MicroLockCore::store(
211
+ uint8_t value, std::memory_order order) noexcept {
212
+ detail::Futex<>* wordPtr = word();
213
+
214
+ const auto shiftToByte = baseShift();
215
+ auto oldWord = wordPtr->load(std::memory_order_relaxed);
216
+ while (true) {
217
+ auto newWord = encodeDataToWord(oldWord, shiftToByte, value);
218
+ if (wordPtr->compare_exchange_weak(
219
+ oldWord, newWord, order, std::memory_order_relaxed)) {
220
+ break;
221
+ }
222
+ }
223
+ }
224
+
225
+ template <typename Func>
226
+ void MicroLockCore::unlockAndStoreWithModifier(Func modifier) noexcept {
227
+ detail::Futex<>* wordPtr = word();
228
+ uint32_t oldWord;
229
+ uint32_t newWord;
230
+
231
+ oldWord = wordPtr->load(std::memory_order_relaxed);
232
+ do {
233
+ assert(oldWord & heldBit());
234
+ newWord = modifier(oldWord) & ~(heldBit() | waitBit());
235
+ } while (!wordPtr->compare_exchange_weak(
236
+ oldWord, newWord, std::memory_order_release, std::memory_order_relaxed));
237
+
238
+ if (oldWord & waitBit()) {
239
+ detail::futexWake(wordPtr, 1, heldBit());
240
+ }
241
+ }
242
+
243
+ inline void MicroLockCore::unlockAndStore(uint8_t value) noexcept {
244
+ unlockAndStoreWithModifier(
245
+ [value, shiftToByte = baseShift()](uint32_t oldWord) {
246
+ return encodeDataToWord(oldWord, shiftToByte, value);
247
+ });
248
+ }
249
+
250
+ inline void MicroLockCore::unlock() noexcept {
251
+ unlockAndStoreWithModifier([](uint32_t oldWord) { return oldWord; });
252
+ }
253
+
254
+ template <unsigned MaxSpins = 1000, unsigned MaxYields = 0>
255
+ class MicroLockBase : public MicroLockCore {
256
+ public:
257
+ /**
258
+ * Locks the lock and returns the data stored in the unused bits of the lock.
259
+ * This is useful when you want to use the unused bits of the lock to store
260
+ * data, in which case reading and locking should be done in one atomic
261
+ * operation.
262
+ */
263
+ FOLLY_DISABLE_SANITIZERS uint8_t lockAndLoad() noexcept;
264
+ void lock() noexcept { lockAndLoad(); }
265
+ FOLLY_DISABLE_SANITIZERS bool try_lock() noexcept;
266
+
267
+ /**
268
+ * A lock guard which allows reading and writing to the unused bits of the
269
+ * lock as data.
270
+ */
271
+ struct LockGuardWithData {
272
+ explicit LockGuardWithData(MicroLockBase<MaxSpins, MaxYields>& lock)
273
+ : lock_(lock) {
274
+ loadedValue_ = lock_.lockAndLoad();
275
+ }
276
+
277
+ ~LockGuardWithData() noexcept {
278
+ if (storedValue_) {
279
+ lock_.unlockAndStore(*storedValue_);
280
+ } else {
281
+ lock_.unlock();
282
+ }
283
+ }
284
+
285
+ /**
286
+ * The stored data bits at the time of locking.
287
+ */
288
+ uint8_t loadedValue() const noexcept { return loadedValue_; }
289
+
290
+ /**
291
+ * The value that will be stored back into data bits when it is unlocked.
292
+ */
293
+ void storeValue(uint8_t value) noexcept { storedValue_ = value; }
294
+
295
+ private:
296
+ MicroLockBase<MaxSpins, MaxYields>& lock_;
297
+ uint8_t loadedValue_;
298
+ folly::Optional<uint8_t> storedValue_;
299
+ };
300
+ };
301
+
302
+ template <unsigned MaxSpins, unsigned MaxYields>
303
+ bool MicroLockBase<MaxSpins, MaxYields>::try_lock() noexcept {
304
+ // N.B. You might think that try_lock is just the fast path of lock,
305
+ // but you'd be wrong. Keep in mind that other parts of our host
306
+ // word might be changing while we take the lock! We're not allowed
307
+ // to fail spuriously if the lock is in fact not held, even if other
308
+ // people are concurrently modifying other parts of the word.
309
+ //
310
+ // We need to loop until we either see firm evidence that somebody
311
+ // else has the lock (by looking at heldBit) or see our CAS succeed.
312
+ // A failed CAS by itself does not indicate lock-acquire failure.
313
+
314
+ detail::Futex<>* wordPtr = word();
315
+ uint32_t oldWord = wordPtr->load(std::memory_order_relaxed);
316
+ do {
317
+ if (oldWord & heldBit()) {
318
+ return false;
319
+ }
320
+ } while (!wordPtr->compare_exchange_weak(
321
+ oldWord,
322
+ oldWord | heldBit(),
323
+ std::memory_order_acquire,
324
+ std::memory_order_relaxed));
325
+
326
+ return true;
327
+ }
328
+
329
+ template <unsigned MaxSpins, unsigned MaxYields>
330
+ uint8_t MicroLockBase<MaxSpins, MaxYields>::lockAndLoad() noexcept {
331
+ static_assert(MaxSpins + MaxYields < (unsigned)-1, "overflow");
332
+
333
+ detail::Futex<>* wordPtr = word();
334
+ uint32_t oldWord;
335
+ oldWord = wordPtr->load(std::memory_order_relaxed);
336
+ if ((oldWord & heldBit()) == 0 &&
337
+ wordPtr->compare_exchange_weak(
338
+ oldWord,
339
+ oldWord | heldBit(),
340
+ std::memory_order_acquire,
341
+ std::memory_order_relaxed)) {
342
+ // Fast uncontended case: memory_order_acquire above is our barrier
343
+ return decodeDataFromWord(oldWord | heldBit());
344
+ } else {
345
+ // lockSlowPath doesn't call waitBit(); it just shifts the input bit. Make
346
+ // sure its shifting produces the same result a call to waitBit would.
347
+ assert(heldBit() << 1 == waitBit());
348
+ // lockSlowPath emits its own memory barrier
349
+ return lockSlowPath(oldWord, wordPtr, baseShift(), MaxSpins, MaxYields);
350
+ }
351
+ }
352
+
353
+ typedef MicroLockBase<> MicroLock;
354
+ } // namespace folly
@@ -0,0 +1,17 @@
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
+ #include <folly/synchronization/MicroSpinLock.h> // @shim
@@ -0,0 +1,76 @@
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 <memory>
20
+
21
+ namespace folly {
22
+
23
+ /** C++11 closures don't support move-in capture. Nor does std::bind.
24
+ facepalm.
25
+
26
+ http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3610.html
27
+
28
+ "[...] a work-around that should make people's stomach crawl:
29
+ write a wrapper that performs move-on-copy, much like the deprecated
30
+ auto_ptr"
31
+
32
+ Unlike auto_ptr, this doesn't require a heap allocation.
33
+ */
34
+ template <class T>
35
+ class MoveWrapper {
36
+ public:
37
+ /** If value can be default-constructed, why not?
38
+ Then we don't have to move it in */
39
+ MoveWrapper() = default;
40
+
41
+ /// Move a value in.
42
+ explicit MoveWrapper(T&& t) : value(std::move(t)) {}
43
+
44
+ /// copy is move
45
+ MoveWrapper(const MoveWrapper& other) : value(std::move(other.value)) {}
46
+
47
+ /// move is also move
48
+ MoveWrapper(MoveWrapper&& other) : value(std::move(other.value)) {}
49
+
50
+ const T& operator*() const { return value; }
51
+ T& operator*() { return value; }
52
+
53
+ const T* operator->() const { return &value; }
54
+ T* operator->() { return &value; }
55
+
56
+ /// move the value out (sugar for std::move(*moveWrapper))
57
+ T&& move() { return std::move(value); }
58
+
59
+ // If you want these you're probably doing it wrong, though they'd be
60
+ // easy enough to implement
61
+ MoveWrapper& operator=(MoveWrapper const&) = delete;
62
+ MoveWrapper& operator=(MoveWrapper&&) = delete;
63
+
64
+ private:
65
+ mutable T value;
66
+ };
67
+
68
+ /// Make a MoveWrapper from the argument. Because the name "makeMoveWrapper"
69
+ /// is already quite transparent in its intent, this will work for lvalues as
70
+ /// if you had wrapped them in std::move.
71
+ template <class T, class T0 = typename std::remove_reference<T>::type>
72
+ MoveWrapper<T0> makeMoveWrapper(T&& t) {
73
+ return MoveWrapper<T0>(std::forward<T0>(t));
74
+ }
75
+
76
+ } // namespace folly