react-native-windows 0.81.32 → 0.81.35

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 (891) hide show
  1. package/Directory.Build.props +2 -17
  2. package/Folly/ThreadNameStub.cpp +4 -6
  3. package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +1 -1
  4. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -4
  5. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +8 -4
  6. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -3
  7. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +2 -8
  8. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
  9. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
  10. package/PropertySheets/Bundle.props +3 -3
  11. package/PropertySheets/CIBuildOptimizations.props +2 -2
  12. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  13. package/PropertySheets/JSEngine.props +1 -1
  14. package/PropertySheets/NuGet.LockFile.props +2 -1
  15. package/PropertySheets/React.Cpp.props +4 -4
  16. package/ReactCommon/ReactCommon.vcxproj +0 -10
  17. package/ReactCommon/packages.lock.win32.json +0 -10
  18. package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +61 -6
  19. package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
  20. package/Scripts/Warm-RnwFeedCache.ps1 +413 -0
  21. package/Scripts/creaternwapp.cmd +5 -1
  22. package/Scripts/creaternwlib.cmd +8 -2
  23. package/Shared/Shared.vcxitems +2 -0
  24. package/{Folly → external}/.clang-format +0 -1
  25. package/external/External.vcxitems +10 -0
  26. package/external/fast-float/.syncignore +11 -0
  27. package/external/fast-float/LICENSE-APACHE +190 -0
  28. package/external/fast-float/LICENSE-BOOST +23 -0
  29. package/external/fast-float/LICENSE-MIT +27 -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 +12 -0
  43. package/external/fmt/CONTRIBUTING.md +20 -0
  44. package/external/fmt/LICENSE +27 -0
  45. package/{fmt → external/fmt}/cgmanifest.json +1 -1
  46. package/external/fmt/fmt.vcxitems +28 -0
  47. package/external/fmt/include/fmt/args.h +228 -0
  48. package/{fmt/TEMP_UntilFmtUpdate/core.h → external/fmt/include/fmt/base.h} +1188 -1036
  49. package/external/fmt/include/fmt/chrono.h +2432 -0
  50. package/external/fmt/include/fmt/color.h +612 -0
  51. package/external/fmt/include/fmt/compile.h +529 -0
  52. package/external/fmt/include/fmt/core.h +5 -0
  53. package/external/fmt/include/fmt/format-inl.h +1928 -0
  54. package/external/fmt/include/fmt/format.h +4427 -0
  55. package/external/fmt/include/fmt/os.h +439 -0
  56. package/external/fmt/include/fmt/ostream.h +211 -0
  57. package/external/fmt/include/fmt/printf.h +656 -0
  58. package/external/fmt/include/fmt/ranges.h +882 -0
  59. package/external/fmt/include/fmt/std.h +699 -0
  60. package/external/fmt/include/fmt/xchar.h +322 -0
  61. package/external/fmt/src/fmt.cc +135 -0
  62. package/external/fmt/src/format.cc +43 -0
  63. package/external/fmt/src/os.cc +403 -0
  64. package/external/fmt/sync-config.json +8 -0
  65. package/external/folly/.syncignore +61 -0
  66. package/external/folly/LICENSE +200 -0
  67. package/{fmt → external/folly/folly}/.clang-format +0 -1
  68. package/external/folly/folly/AtomicHashArray-inl.h +546 -0
  69. package/external/folly/folly/AtomicHashArray.h +431 -0
  70. package/external/folly/folly/AtomicHashMap-inl.h +653 -0
  71. package/external/folly/folly/AtomicHashMap.h +484 -0
  72. package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
  73. package/external/folly/folly/AtomicLinkedList.h +110 -0
  74. package/external/folly/folly/AtomicUnorderedMap.h +522 -0
  75. package/external/folly/folly/BUCK +1631 -0
  76. package/external/folly/folly/BUILD_MODE.bzl +72 -0
  77. package/external/folly/folly/Benchmark.cpp +986 -0
  78. package/external/folly/folly/Benchmark.h +680 -0
  79. package/external/folly/folly/BenchmarkUtil.h +47 -0
  80. package/external/folly/folly/Bits.h +17 -0
  81. package/external/folly/folly/CMakeLists.txt +110 -0
  82. package/external/folly/folly/CPortability.h +338 -0
  83. package/external/folly/folly/CancellationToken-inl.h +449 -0
  84. package/external/folly/folly/CancellationToken.cpp +250 -0
  85. package/external/folly/folly/CancellationToken.h +365 -0
  86. package/external/folly/folly/Chrono.h +132 -0
  87. package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
  88. package/external/folly/folly/ClockGettimeWrappers.h +29 -0
  89. package/external/folly/folly/ConcurrentBitSet.h +157 -0
  90. package/external/folly/folly/ConcurrentLazy.h +74 -0
  91. package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
  92. package/external/folly/folly/ConcurrentSkipList.h +824 -0
  93. package/external/folly/folly/ConstructorCallbackList.h +158 -0
  94. package/external/folly/folly/Conv.h +2026 -0
  95. package/external/folly/folly/CppAttributes.h +170 -0
  96. package/external/folly/folly/CpuId.h +297 -0
  97. package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
  98. package/external/folly/folly/Demangle.cpp +255 -0
  99. package/external/folly/folly/Demangle.h +73 -0
  100. package/external/folly/folly/DiscriminatedPtr.h +236 -0
  101. package/external/folly/folly/DynamicConverter.h +17 -0
  102. package/external/folly/folly/Exception.h +150 -0
  103. package/external/folly/folly/ExceptionString.cpp +51 -0
  104. package/external/folly/folly/ExceptionString.h +33 -0
  105. package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
  106. package/external/folly/folly/ExceptionWrapper.cpp +37 -0
  107. package/external/folly/folly/ExceptionWrapper.h +377 -0
  108. package/external/folly/folly/Executor.cpp +111 -0
  109. package/external/folly/folly/Executor.h +351 -0
  110. package/external/folly/folly/Expected.h +1725 -0
  111. package/external/folly/folly/FBString.h +2888 -0
  112. package/external/folly/folly/FBVector.h +17 -0
  113. package/external/folly/folly/File.cpp +180 -0
  114. package/external/folly/folly/File.h +177 -0
  115. package/external/folly/folly/FileUtil.cpp +378 -0
  116. package/external/folly/folly/FileUtil.h +332 -0
  117. package/external/folly/folly/Fingerprint.cpp +135 -0
  118. package/external/folly/folly/Fingerprint.h +289 -0
  119. package/external/folly/folly/FixedString.h +2965 -0
  120. package/external/folly/folly/FollyMemcpy.cpp +30 -0
  121. package/external/folly/folly/FollyMemcpy.h +23 -0
  122. package/external/folly/folly/FollyMemset.cpp +29 -0
  123. package/external/folly/folly/FollyMemset.h +25 -0
  124. package/external/folly/folly/Format-inl.h +1152 -0
  125. package/external/folly/folly/Format.cpp +429 -0
  126. package/external/folly/folly/Format.h +463 -0
  127. package/external/folly/folly/FormatArg.h +285 -0
  128. package/external/folly/folly/FormatTraits.h +65 -0
  129. package/external/folly/folly/Function.h +1159 -0
  130. package/external/folly/folly/GLog.h +85 -0
  131. package/external/folly/folly/GroupVarint.cpp +153 -0
  132. package/external/folly/folly/GroupVarint.h +630 -0
  133. package/external/folly/folly/Hash.h +20 -0
  134. package/external/folly/folly/IPAddress.cpp +490 -0
  135. package/external/folly/folly/IPAddress.h +667 -0
  136. package/external/folly/folly/IPAddressException.h +82 -0
  137. package/external/folly/folly/IPAddressV4.cpp +305 -0
  138. package/external/folly/folly/IPAddressV4.h +495 -0
  139. package/external/folly/folly/IPAddressV6.cpp +541 -0
  140. package/external/folly/folly/IPAddressV6.h +627 -0
  141. package/external/folly/folly/Indestructible.h +164 -0
  142. package/external/folly/folly/IndexedMemPool.h +550 -0
  143. package/external/folly/folly/IntrusiveList.h +17 -0
  144. package/external/folly/folly/Lazy.h +142 -0
  145. package/external/folly/folly/Likely.h +76 -0
  146. package/external/folly/folly/MPMCPipeline.h +280 -0
  147. package/external/folly/folly/MPMCQueue.h +1556 -0
  148. package/external/folly/folly/MacAddress.cpp +188 -0
  149. package/external/folly/folly/MacAddress.h +260 -0
  150. package/external/folly/folly/MapUtil.h +17 -0
  151. package/external/folly/folly/Math.h +258 -0
  152. package/external/folly/folly/MaybeManagedPtr.h +120 -0
  153. package/external/folly/folly/Memory.h +900 -0
  154. package/external/folly/folly/MicroLock.cpp +76 -0
  155. package/external/folly/folly/MicroLock.h +354 -0
  156. package/external/folly/folly/MicroSpinLock.h +17 -0
  157. package/external/folly/folly/MoveWrapper.h +76 -0
  158. package/external/folly/folly/ObserverContainer.h +1026 -0
  159. package/external/folly/folly/Optional.h +743 -0
  160. package/external/folly/folly/Overload.h +325 -0
  161. package/external/folly/folly/PackedSyncPtr.h +147 -0
  162. package/external/folly/folly/Padded.h +464 -0
  163. package/external/folly/folly/Poly-inl.h +230 -0
  164. package/external/folly/folly/Poly.h +1095 -0
  165. package/external/folly/folly/PolyException.h +43 -0
  166. package/external/folly/folly/Portability.h +644 -0
  167. package/external/folly/folly/Preprocessor.h +236 -0
  168. package/external/folly/folly/ProducerConsumerQueue.h +182 -0
  169. package/external/folly/folly/RWSpinLock.h +17 -0
  170. package/external/folly/folly/Random-inl.h +86 -0
  171. package/external/folly/folly/Random.cpp +184 -0
  172. package/external/folly/folly/Random.h +434 -0
  173. package/external/folly/folly/Range.h +1772 -0
  174. package/external/folly/folly/Replaceable.h +636 -0
  175. package/external/folly/folly/ScopeGuard.cpp +29 -0
  176. package/external/folly/folly/ScopeGuard.h +420 -0
  177. package/external/folly/folly/SharedMutex.cpp +81 -0
  178. package/external/folly/folly/SharedMutex.h +1751 -0
  179. package/external/folly/folly/Singleton-inl.h +332 -0
  180. package/external/folly/folly/Singleton.cpp +512 -0
  181. package/external/folly/folly/Singleton.h +891 -0
  182. package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
  183. package/external/folly/folly/SingletonThreadLocal.h +263 -0
  184. package/external/folly/folly/SocketAddress.cpp +786 -0
  185. package/external/folly/folly/SocketAddress.h +768 -0
  186. package/external/folly/folly/SpinLock.h +55 -0
  187. package/external/folly/folly/String-inl.h +668 -0
  188. package/external/folly/folly/String.cpp +777 -0
  189. package/external/folly/folly/String.h +767 -0
  190. package/external/folly/folly/Subprocess.cpp +1142 -0
  191. package/external/folly/folly/Subprocess.h +1055 -0
  192. package/external/folly/folly/Synchronized.h +1833 -0
  193. package/external/folly/folly/SynchronizedPtr.h +106 -0
  194. package/external/folly/folly/ThreadCachedInt.h +175 -0
  195. package/external/folly/folly/ThreadLocal.h +478 -0
  196. package/external/folly/folly/TimeoutQueue.cpp +78 -0
  197. package/external/folly/folly/TimeoutQueue.h +123 -0
  198. package/external/folly/folly/TokenBucket.h +673 -0
  199. package/external/folly/folly/Traits.h +1442 -0
  200. package/external/folly/folly/Try-inl.h +372 -0
  201. package/external/folly/folly/Try.cpp +23 -0
  202. package/external/folly/folly/Try.h +728 -0
  203. package/external/folly/folly/UTF8String.h +56 -0
  204. package/external/folly/folly/Unicode.cpp +201 -0
  205. package/external/folly/folly/Unicode.h +94 -0
  206. package/external/folly/folly/Unit.h +65 -0
  207. package/external/folly/folly/Uri-inl.h +101 -0
  208. package/external/folly/folly/Uri.cpp +190 -0
  209. package/external/folly/folly/Uri.h +142 -0
  210. package/external/folly/folly/Utility.h +932 -0
  211. package/external/folly/folly/VERSION +1 -0
  212. package/external/folly/folly/Varint.h +230 -0
  213. package/external/folly/folly/VirtualExecutor.h +17 -0
  214. package/external/folly/folly/algorithm/simd/BUCK +47 -0
  215. package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
  216. package/external/folly/folly/algorithm/simd/Contains.h +116 -0
  217. package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
  218. package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
  219. package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
  220. package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
  221. package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
  222. package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
  223. package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
  224. package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
  225. package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
  226. package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
  227. package/external/folly/folly/base64.h +264 -0
  228. package/external/folly/folly/chrono/BUCK +29 -0
  229. package/external/folly/folly/chrono/Clock.h +65 -0
  230. package/external/folly/folly/chrono/Conv.h +712 -0
  231. package/external/folly/folly/chrono/test/BUCK +26 -0
  232. package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
  233. package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
  234. package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
  235. package/external/folly/folly/concurrency/BUCK +170 -0
  236. package/external/folly/folly/concurrency/CacheLocality.h +460 -0
  237. package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
  238. package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
  239. package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
  240. package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
  241. package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
  242. package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
  243. package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
  244. package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
  245. package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
  246. package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
  247. package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
  248. package/external/folly/folly/concurrency/container/BUCK +77 -0
  249. package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
  250. package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
  251. package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
  252. package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
  253. package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
  254. package/external/folly/folly/concurrency/container/test/BUCK +75 -0
  255. package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
  256. package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
  257. package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
  258. package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
  259. package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
  260. package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
  261. package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
  262. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
  263. package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
  264. package/external/folly/folly/concurrency/memory/BUCK +53 -0
  265. package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
  266. package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
  267. package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
  268. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
  269. package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
  270. package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
  271. package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
  272. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
  273. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
  274. package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
  275. package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
  276. package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
  277. package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
  278. package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
  279. package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
  280. package/external/folly/folly/concurrency/test/BUCK +229 -0
  281. package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
  282. package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
  283. package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
  284. package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
  285. package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
  286. package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
  287. package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
  288. package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
  289. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
  290. package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
  291. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
  292. package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
  293. package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
  294. package/external/folly/folly/container/Access.h +57 -0
  295. package/external/folly/folly/container/Array.h +87 -0
  296. package/external/folly/folly/container/BUCK +353 -0
  297. package/external/folly/folly/container/BitIterator.h +203 -0
  298. package/external/folly/folly/container/Enumerate.h +162 -0
  299. package/external/folly/folly/container/EvictingCacheMap.h +730 -0
  300. package/external/folly/folly/container/F14.md +300 -0
  301. package/external/folly/folly/container/F14Map-fwd.h +113 -0
  302. package/external/folly/folly/container/F14Map.h +2108 -0
  303. package/external/folly/folly/container/F14Set-fwd.h +95 -0
  304. package/external/folly/folly/container/F14Set.h +1603 -0
  305. package/external/folly/folly/container/FBVector.h +1711 -0
  306. package/external/folly/folly/container/Foreach-inl.h +316 -0
  307. package/external/folly/folly/container/Foreach.h +209 -0
  308. package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
  309. package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
  310. package/external/folly/folly/container/IntrusiveHeap.h +268 -0
  311. package/external/folly/folly/container/IntrusiveList.h +131 -0
  312. package/external/folly/folly/container/Iterator.h +843 -0
  313. package/external/folly/folly/container/MapUtil.h +376 -0
  314. package/external/folly/folly/container/Merge.h +90 -0
  315. package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
  316. package/external/folly/folly/container/RegexMatchCache.h +699 -0
  317. package/external/folly/folly/container/Reserve.h +109 -0
  318. package/external/folly/folly/container/SparseByteSet.h +123 -0
  319. package/external/folly/folly/container/View.h +81 -0
  320. package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
  321. package/external/folly/folly/container/detail/BUCK +115 -0
  322. package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
  323. package/external/folly/folly/container/detail/F14Defaults.h +34 -0
  324. package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
  325. package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
  326. package/external/folly/folly/container/detail/F14Mask.h +235 -0
  327. package/external/folly/folly/container/detail/F14Policy.h +1523 -0
  328. package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
  329. package/external/folly/folly/container/detail/F14Table.cpp +71 -0
  330. package/external/folly/folly/container/detail/F14Table.h +2680 -0
  331. package/external/folly/folly/container/detail/Util.h +303 -0
  332. package/external/folly/folly/container/detail/tape_detail.h +135 -0
  333. package/external/folly/folly/container/detail/test/BUCK +14 -0
  334. package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
  335. package/external/folly/folly/container/heap_vector_types.h +1683 -0
  336. package/external/folly/folly/container/range_traits.h +81 -0
  337. package/external/folly/folly/container/small_vector.h +1476 -0
  338. package/external/folly/folly/container/sorted_vector_types.h +1652 -0
  339. package/external/folly/folly/container/span.h +408 -0
  340. package/external/folly/folly/container/tape.h +608 -0
  341. package/external/folly/folly/container/test/.clang-tidy +12 -0
  342. package/external/folly/folly/container/test/AccessTest.cpp +138 -0
  343. package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
  344. package/external/folly/folly/container/test/BUCK +568 -0
  345. package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
  346. package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
  347. package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
  348. package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
  349. package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
  350. package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
  351. package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
  352. package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
  353. package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
  354. package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
  355. package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
  356. package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
  357. package/external/folly/folly/container/test/F14TestUtil.h +117 -0
  358. package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
  359. package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
  360. package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
  361. package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
  362. package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
  363. package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
  364. package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
  365. package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
  366. package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
  367. package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
  368. package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
  369. package/external/folly/folly/container/test/MergeTest.cpp +66 -0
  370. package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
  371. package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
  372. package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
  373. package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
  374. package/external/folly/folly/container/test/TrackingTypes.h +584 -0
  375. package/external/folly/folly/container/test/UtilTest.cpp +609 -0
  376. package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
  377. package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
  378. package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
  379. package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
  380. package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
  381. package/external/folly/folly/container/test/span_test.cpp +520 -0
  382. package/external/folly/folly/container/test/tape_bench.cpp +200 -0
  383. package/external/folly/folly/container/test/tape_test.cpp +590 -0
  384. package/external/folly/folly/defs.bzl +238 -0
  385. package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
  386. package/external/folly/folly/detail/AsyncTrace.h +44 -0
  387. package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
  388. package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
  389. package/external/folly/folly/detail/BUCK +406 -0
  390. package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
  391. package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
  392. package/external/folly/folly/detail/FileUtilDetail.h +85 -0
  393. package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
  394. package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
  395. package/external/folly/folly/detail/Futex-inl.h +123 -0
  396. package/external/folly/folly/detail/Futex.cpp +273 -0
  397. package/external/folly/folly/detail/Futex.h +109 -0
  398. package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
  399. package/external/folly/folly/detail/IPAddress.cpp +37 -0
  400. package/external/folly/folly/detail/IPAddress.h +57 -0
  401. package/external/folly/folly/detail/IPAddressSource.h +278 -0
  402. package/external/folly/folly/detail/Iterators.h +156 -0
  403. package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
  404. package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
  405. package/external/folly/folly/detail/MemoryIdler.h +216 -0
  406. package/external/folly/folly/detail/PerfScoped.cpp +112 -0
  407. package/external/folly/folly/detail/PerfScoped.h +70 -0
  408. package/external/folly/folly/detail/PolyDetail.h +921 -0
  409. package/external/folly/folly/detail/RangeCommon.cpp +55 -0
  410. package/external/folly/folly/detail/RangeCommon.h +93 -0
  411. package/external/folly/folly/detail/RangeSse42.cpp +198 -0
  412. package/external/folly/folly/detail/RangeSse42.h +30 -0
  413. package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
  414. package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
  415. package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
  416. package/external/folly/folly/detail/Singleton.h +34 -0
  417. package/external/folly/folly/detail/SlowFingerprint.h +90 -0
  418. package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
  419. package/external/folly/folly/detail/SocketFastOpen.h +89 -0
  420. package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
  421. package/external/folly/folly/detail/SplitStringSimd.h +151 -0
  422. package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
  423. package/external/folly/folly/detail/Sse.cpp +35 -0
  424. package/external/folly/folly/detail/Sse.h +45 -0
  425. package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
  426. package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
  427. package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
  428. package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
  429. package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
  430. package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
  431. package/external/folly/folly/detail/TurnSequencer.h +295 -0
  432. package/external/folly/folly/detail/TypeList.h +551 -0
  433. package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
  434. package/external/folly/folly/detail/UniqueInstance.h +68 -0
  435. package/external/folly/folly/detail/base64_detail/BUCK +102 -0
  436. package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
  437. package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
  438. package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
  439. package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
  440. package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
  441. package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
  442. package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
  443. package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
  444. package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
  445. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
  446. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
  447. package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
  448. package/external/folly/folly/detail/base64_detail/README.md +392 -0
  449. package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
  450. package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
  451. package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
  452. package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
  453. package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
  454. package/external/folly/folly/detail/test/BUCK +118 -0
  455. package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
  456. package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
  457. package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
  458. package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
  459. package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
  460. package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
  461. package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
  462. package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
  463. package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
  464. package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
  465. package/external/folly/folly/detail/thread_local_globals.h +36 -0
  466. package/external/folly/folly/dynamic-inl.h +17 -0
  467. package/external/folly/folly/dynamic.h +17 -0
  468. package/external/folly/folly/folly_extended_library.bzl +28 -0
  469. package/external/folly/folly/functional/ApplyTuple.h +204 -0
  470. package/external/folly/folly/functional/BUCK +57 -0
  471. package/external/folly/folly/functional/Invoke.h +880 -0
  472. package/external/folly/folly/functional/Partial.h +130 -0
  473. package/external/folly/folly/functional/protocol.h +203 -0
  474. package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
  475. package/external/folly/folly/functional/test/BUCK +57 -0
  476. package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
  477. package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
  478. package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
  479. package/external/folly/folly/functional/test/traits_test.cpp +551 -0
  480. package/external/folly/folly/functional/traits.h +675 -0
  481. package/external/folly/folly/hash/BUCK +86 -0
  482. package/external/folly/folly/hash/Checksum.cpp +275 -0
  483. package/external/folly/folly/hash/Checksum.h +94 -0
  484. package/external/folly/folly/hash/FarmHash.h +46 -0
  485. package/external/folly/folly/hash/Hash.h +1045 -0
  486. package/external/folly/folly/hash/MurmurHash.h +86 -0
  487. package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
  488. package/external/folly/folly/hash/SpookyHashV1.h +307 -0
  489. package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
  490. package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/hash/SpookyHashV2.h +6 -1
  491. package/external/folly/folly/hash/detail/BUCK +26 -0
  492. package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
  493. package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
  494. package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
  495. package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
  496. package/external/folly/folly/hash/test/BUCK +132 -0
  497. package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
  498. package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
  499. package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
  500. package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
  501. package/external/folly/folly/hash/test/HashTest.cpp +997 -0
  502. package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
  503. package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
  504. package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
  505. package/external/folly/folly/hash/test/traits_test.cpp +69 -0
  506. package/external/folly/folly/hash/traits.h +115 -0
  507. package/external/folly/folly/json/BUCK +155 -0
  508. package/external/folly/folly/json/DynamicConverter.h +464 -0
  509. package/external/folly/folly/json/DynamicParser-inl.h +316 -0
  510. package/external/folly/folly/json/DynamicParser.cpp +198 -0
  511. package/external/folly/folly/json/DynamicParser.h +394 -0
  512. package/external/folly/folly/json/JSONSchema.cpp +1030 -0
  513. package/external/folly/folly/json/JSONSchema.h +73 -0
  514. package/external/folly/folly/json/JsonMockUtil.h +73 -0
  515. package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
  516. package/external/folly/folly/json/JsonTestUtil.h +88 -0
  517. package/external/folly/folly/json/bser/BUCK +24 -0
  518. package/external/folly/folly/json/bser/Bser.h +107 -0
  519. package/external/folly/folly/json/bser/Dump.cpp +253 -0
  520. package/external/folly/folly/json/bser/Load.cpp +246 -0
  521. package/external/folly/folly/json/bser/test/BUCK +14 -0
  522. package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
  523. package/external/folly/folly/json/dynamic.cpp +552 -0
  524. package/external/folly/folly/json/dynamic.h +1346 -0
  525. package/external/folly/folly/json/json.h +238 -0
  526. package/external/folly/folly/json/json_patch.cpp +325 -0
  527. package/external/folly/folly/json/json_patch.h +126 -0
  528. package/external/folly/folly/json/json_pointer.cpp +114 -0
  529. package/external/folly/folly/json/json_pointer.h +87 -0
  530. package/external/folly/folly/json/test/BUCK +147 -0
  531. package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
  532. package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
  533. package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
  534. package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
  535. package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
  536. package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
  537. package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
  538. package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
  539. package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
  540. package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
  541. package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
  542. package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
  543. package/external/folly/folly/json/tool/BUCK +13 -0
  544. package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
  545. package/external/folly/folly/json.h +17 -0
  546. package/external/folly/folly/json_patch.h +17 -0
  547. package/external/folly/folly/json_pointer.h +17 -0
  548. package/external/folly/folly/lang/Access.h +29 -0
  549. package/external/folly/folly/lang/Align.h +240 -0
  550. package/external/folly/folly/lang/Aligned.h +92 -0
  551. package/external/folly/folly/lang/Assume.h +82 -0
  552. package/external/folly/folly/lang/BUCK +287 -0
  553. package/external/folly/folly/lang/Badge.h +108 -0
  554. package/external/folly/folly/lang/Bits.h +570 -0
  555. package/external/folly/folly/lang/BitsClass.h +312 -0
  556. package/external/folly/folly/lang/Builtin.h +74 -0
  557. package/external/folly/folly/lang/CArray.h +34 -0
  558. package/external/folly/folly/lang/CString.cpp +86 -0
  559. package/external/folly/folly/lang/CString.h +55 -0
  560. package/external/folly/folly/lang/Cast.h +51 -0
  561. package/external/folly/folly/lang/CheckedMath.h +253 -0
  562. package/external/folly/folly/lang/CustomizationPoint.h +58 -0
  563. package/external/folly/folly/lang/Exception.cpp +822 -0
  564. package/external/folly/folly/lang/Exception.h +716 -0
  565. package/external/folly/folly/lang/Extern.h +55 -0
  566. package/external/folly/folly/lang/Hint-inl.h +144 -0
  567. package/external/folly/folly/lang/Hint.h +238 -0
  568. package/external/folly/folly/lang/Keep.h +98 -0
  569. package/external/folly/folly/lang/New.h +124 -0
  570. package/external/folly/folly/lang/Ordering.h +140 -0
  571. package/external/folly/folly/lang/Pretty.h +159 -0
  572. package/external/folly/folly/lang/PropagateConst.h +413 -0
  573. package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
  574. package/external/folly/folly/lang/SafeAssert.cpp +589 -0
  575. package/external/folly/folly/lang/StaticConst.h +33 -0
  576. package/external/folly/folly/lang/Thunk.h +100 -0
  577. package/external/folly/folly/lang/TypeInfo.h +58 -0
  578. package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
  579. package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
  580. package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
  581. package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
  582. package/external/folly/folly/lang/test/BUCK +258 -0
  583. package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
  584. package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
  585. package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
  586. package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
  587. package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
  588. package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
  589. package/external/folly/folly/lang/test/CastTest.cpp +47 -0
  590. package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
  591. package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
  592. package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
  593. package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
  594. package/external/folly/folly/lang/test/HintTest.cpp +100 -0
  595. package/external/folly/folly/lang/test/NewTest.cpp +38 -0
  596. package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
  597. package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
  598. package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
  599. package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
  600. package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
  601. package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
  602. package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
  603. package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
  604. package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
  605. package/external/folly/folly/memcpy.S +292 -0
  606. package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
  607. package/external/folly/folly/memory/Arena-inl.h +83 -0
  608. package/external/folly/folly/memory/Arena.h +325 -0
  609. package/external/folly/folly/memory/BUCK +191 -0
  610. package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
  611. package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
  612. package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
  613. package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
  614. package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
  615. package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
  616. package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
  617. package/external/folly/folly/memory/MallctlHelper.h +167 -0
  618. package/external/folly/folly/memory/Malloc.h +551 -0
  619. package/external/folly/folly/memory/MemoryResource.h +57 -0
  620. package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
  621. package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
  622. package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
  623. package/external/folly/folly/memory/SanitizeAddress.h +117 -0
  624. package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
  625. package/external/folly/folly/memory/SanitizeLeak.h +108 -0
  626. package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
  627. package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
  628. package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
  629. package/external/folly/folly/memory/detail/BUCK +10 -0
  630. package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
  631. package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
  632. package/external/folly/folly/memory/not_null-inl.h +522 -0
  633. package/external/folly/folly/memory/not_null.h +449 -0
  634. package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
  635. package/external/folly/folly/memory/test/BUCK +146 -0
  636. package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
  637. package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
  638. package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
  639. package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
  640. package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
  641. package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
  642. package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
  643. package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
  644. package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
  645. package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
  646. package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
  647. package/external/folly/folly/memset.S +245 -0
  648. package/external/folly/folly/memset_select_aarch64.cpp +72 -0
  649. package/external/folly/folly/portability/Asm.h +50 -0
  650. package/external/folly/folly/portability/Atomic.h +31 -0
  651. package/external/folly/folly/portability/BUCK +456 -0
  652. package/external/folly/folly/portability/Builtins.cpp +31 -0
  653. package/external/folly/folly/portability/Builtins.h +161 -0
  654. package/external/folly/folly/portability/Config.h +43 -0
  655. package/external/folly/folly/portability/Constexpr.h +145 -0
  656. package/external/folly/folly/portability/Dirent.cpp +140 -0
  657. package/external/folly/folly/portability/Dirent.h +41 -0
  658. package/external/folly/folly/portability/Event.h +44 -0
  659. package/external/folly/folly/portability/Fcntl.cpp +120 -0
  660. package/external/folly/folly/portability/Fcntl.h +67 -0
  661. package/external/folly/folly/portability/Filesystem.cpp +67 -0
  662. package/external/folly/folly/portability/Filesystem.h +114 -0
  663. package/external/folly/folly/portability/FmtCompile.h +40 -0
  664. package/external/folly/folly/portability/GFlags.h +139 -0
  665. package/external/folly/folly/portability/GMock.h +35 -0
  666. package/external/folly/folly/portability/GTest.h +35 -0
  667. package/external/folly/folly/portability/IOVec.h +34 -0
  668. package/external/folly/folly/portability/Libgen.cpp +59 -0
  669. package/external/folly/folly/portability/Libgen.h +29 -0
  670. package/external/folly/folly/portability/Libunwind.h +21 -0
  671. package/external/folly/folly/portability/Malloc.cpp +31 -0
  672. package/external/folly/folly/portability/Malloc.h +53 -0
  673. package/external/folly/folly/portability/Math.h +90 -0
  674. package/external/folly/folly/portability/Memory.h +26 -0
  675. package/external/folly/folly/portability/OpenSSL.cpp +17 -0
  676. package/external/folly/folly/portability/OpenSSL.h +102 -0
  677. package/external/folly/folly/portability/PThread.cpp +697 -0
  678. package/external/folly/folly/portability/PThread.h +148 -0
  679. package/external/folly/folly/portability/README.md +21 -0
  680. package/external/folly/folly/portability/Sched.cpp +41 -0
  681. package/external/folly/folly/portability/Sched.h +45 -0
  682. package/external/folly/folly/portability/Sockets.cpp +245 -0
  683. package/external/folly/folly/portability/Sockets.h +155 -0
  684. package/external/folly/folly/portability/SourceLocation.h +49 -0
  685. package/external/folly/folly/portability/Stdio.cpp +77 -0
  686. package/external/folly/folly/portability/Stdio.h +32 -0
  687. package/external/folly/folly/portability/Stdlib.cpp +172 -0
  688. package/external/folly/folly/portability/Stdlib.h +64 -0
  689. package/external/folly/folly/portability/String.cpp +53 -0
  690. package/external/folly/folly/portability/String.h +39 -0
  691. package/external/folly/folly/portability/SysFile.cpp +46 -0
  692. package/external/folly/folly/portability/SysFile.h +27 -0
  693. package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
  694. package/external/folly/folly/portability/SysMembarrier.h +26 -0
  695. package/external/folly/folly/portability/SysMman.cpp +242 -0
  696. package/external/folly/folly/portability/SysMman.h +68 -0
  697. package/external/folly/folly/portability/SysResource.cpp +108 -0
  698. package/external/folly/folly/portability/SysResource.h +71 -0
  699. package/external/folly/folly/portability/SysStat.cpp +66 -0
  700. package/external/folly/folly/portability/SysStat.h +52 -0
  701. package/external/folly/folly/portability/SysSyscall.h +73 -0
  702. package/external/folly/folly/portability/SysTime.cpp +62 -0
  703. package/external/folly/folly/portability/SysTime.h +50 -0
  704. package/external/folly/folly/portability/SysTypes.h +44 -0
  705. package/external/folly/folly/portability/SysUio.cpp +179 -0
  706. package/external/folly/folly/portability/SysUio.h +51 -0
  707. package/external/folly/folly/portability/Syslog.h +39 -0
  708. package/external/folly/folly/portability/Time.cpp +357 -0
  709. package/external/folly/folly/portability/Time.h +74 -0
  710. package/external/folly/folly/portability/Unistd.h +111 -0
  711. package/external/folly/folly/portability/Windows.h +108 -0
  712. package/external/folly/folly/portability/openat2.c +30 -0
  713. package/external/folly/folly/portability/openat2.h +39 -0
  714. package/external/folly/folly/portability/test/BUCK +59 -0
  715. package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
  716. package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
  717. package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
  718. package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
  719. package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
  720. package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
  721. package/external/folly/folly/small_vector.h +17 -0
  722. package/external/folly/folly/somerge_defs.bzl +399 -0
  723. package/external/folly/folly/sorted_vector_types.h +17 -0
  724. package/external/folly/folly/stop_watch.h +317 -0
  725. package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
  726. package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
  727. package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
  728. package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
  729. package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
  730. package/external/folly/folly/synchronization/AtomicRef.h +181 -0
  731. package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
  732. package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
  733. package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
  734. package/external/folly/folly/synchronization/BUCK +418 -0
  735. package/external/folly/folly/synchronization/Baton.h +419 -0
  736. package/external/folly/folly/synchronization/CallOnce.h +263 -0
  737. package/external/folly/folly/synchronization/DelayedInit.h +179 -0
  738. package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
  739. package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
  740. package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
  741. package/external/folly/folly/synchronization/EventCount.h +200 -0
  742. package/external/folly/folly/synchronization/FlatCombining.h +629 -0
  743. package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
  744. package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
  745. package/external/folly/folly/synchronization/Hazptr.h +209 -0
  746. package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
  747. package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
  748. package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
  749. package/external/folly/folly/synchronization/HazptrObj.h +533 -0
  750. package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
  751. package/external/folly/folly/synchronization/HazptrRec.h +68 -0
  752. package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
  753. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
  754. package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
  755. package/external/folly/folly/synchronization/Latch.h +160 -0
  756. package/external/folly/folly/synchronization/LifoSem.h +767 -0
  757. package/external/folly/folly/synchronization/Lock.h +887 -0
  758. package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
  759. package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
  760. package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
  761. package/external/folly/folly/synchronization/ParkingLot.h +330 -0
  762. package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
  763. package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
  764. package/external/folly/folly/synchronization/Rcu.cpp +26 -0
  765. package/external/folly/folly/synchronization/Rcu.h +553 -0
  766. package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
  767. package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
  768. package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
  769. package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
  770. package/external/folly/folly/synchronization/SmallLocks.h +36 -0
  771. package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
  772. package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
  773. package/external/folly/folly/synchronization/WaitOptions.h +75 -0
  774. package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
  775. package/external/folly/folly/synchronization/detail/BUCK +104 -0
  776. package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
  777. package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
  778. package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
  779. package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
  780. package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
  781. package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
  782. package/external/folly/folly/synchronization/detail/Spin.h +96 -0
  783. package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
  784. package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
  785. package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
  786. package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
  787. package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
  788. package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
  789. package/external/folly/folly/synchronization/example/BUCK +27 -0
  790. package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
  791. package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
  792. package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
  793. package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
  794. package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
  795. package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
  796. package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
  797. package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
  798. package/external/folly/folly/synchronization/test/BUCK +495 -0
  799. package/external/folly/folly/synchronization/test/Barrier.h +52 -0
  800. package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
  801. package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
  802. package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
  803. package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
  804. package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
  805. package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
  806. package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
  807. package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
  808. package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
  809. package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
  810. package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
  811. package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
  812. package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
  813. package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
  814. package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
  815. package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
  816. package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
  817. package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
  818. package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
  819. package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
  820. package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
  821. package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
  822. package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
  823. package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
  824. package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
  825. package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
  826. package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
  827. package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
  828. package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
  829. package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
  830. package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
  831. package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
  832. package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
  833. package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
  834. package/external/folly/folly/system/AtFork.cpp +205 -0
  835. package/external/folly/folly/system/AtFork.h +116 -0
  836. package/external/folly/folly/system/AuxVector.h +198 -0
  837. package/external/folly/folly/system/BUCK +144 -0
  838. package/external/folly/folly/system/EnvUtil.cpp +93 -0
  839. package/external/folly/folly/system/EnvUtil.h +113 -0
  840. package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
  841. package/external/folly/folly/system/HardwareConcurrency.h +23 -0
  842. package/external/folly/folly/system/MemoryMapping.cpp +477 -0
  843. package/external/folly/folly/system/MemoryMapping.h +287 -0
  844. package/external/folly/folly/system/Pid.cpp +87 -0
  845. package/external/folly/folly/system/Pid.h +34 -0
  846. package/external/folly/folly/system/Shell.cpp +33 -0
  847. package/external/folly/folly/system/Shell.h +93 -0
  848. package/external/folly/folly/system/ThreadId.cpp +89 -0
  849. package/external/folly/folly/system/ThreadId.h +62 -0
  850. package/external/folly/folly/system/ThreadName.cpp +330 -0
  851. package/external/folly/folly/system/ThreadName.h +72 -0
  852. package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
  853. package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
  854. package/external/folly/folly/system/test/BUCK +120 -0
  855. package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
  856. package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
  857. package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
  858. package/external/folly/folly/system/test/PidTest.cpp +46 -0
  859. package/external/folly/folly/system/test/ShellTest.cpp +66 -0
  860. package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
  861. package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
  862. package/external/folly/folly.vcxitems +164 -0
  863. package/external/folly/sync-config.json +8 -0
  864. package/package.json +6 -6
  865. package/template/cpp-app/proj/MyApp.sln +0 -33
  866. package/template/cpp-lib/proj/MyLib.sln +0 -33
  867. package/template/cs-app/proj/MyApp.sln +0 -33
  868. package/template/cs-lib/proj/MyLib.sln +0 -33
  869. package/templates/cpp-app/windows/MyApp.sln +0 -33
  870. package/templates/cpp-lib/windows/MyLib.sln +0 -33
  871. package/Folly/Folly.vcxproj +0 -383
  872. package/Folly/Folly.vcxproj.filters +0 -558
  873. package/Folly/Folly.win32.vcxproj +0 -11
  874. package/Folly/packages.lock.win32.json +0 -20
  875. package/fmt/fmt.vcxproj +0 -163
  876. package/fmt/fmt.vcxproj.filters +0 -59
  877. package/fmt/fmt.win32.vcxproj +0 -10
  878. package/fmt/pch.cpp +0 -4
  879. package/fmt/pch.h +0 -2
  880. /package/{Folly → external/folly}/Folly.natvis +0 -0
  881. /package/{Folly → external/folly}/cgmanifest.json +0 -0
  882. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
  883. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
  884. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
  885. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
  886. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
  887. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
  888. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
  889. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
  890. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
  891. /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
@@ -0,0 +1,822 @@
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/lang/Exception.h>
18
+
19
+ #include <atomic>
20
+ #include <cassert>
21
+ #include <cstring>
22
+
23
+ #include <folly/lang/New.h>
24
+
25
+ #if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
26
+ #include <cxxabi.h>
27
+ #if !defined(__FreeBSD__)
28
+ #include <unwind.h>
29
+ #endif
30
+ #endif
31
+
32
+ #if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
33
+ #if !defined(__FreeBSD__) // cxxabi.h already declares these
34
+
35
+ namespace __cxxabiv1 {
36
+
37
+ struct __cxa_eh_globals {
38
+ void* caughtExceptions;
39
+ unsigned int uncaughtExceptions;
40
+ };
41
+
42
+ #if defined(__GLIBCXX__)
43
+ extern "C" [[gnu::const]] __cxa_eh_globals* __cxa_get_globals() noexcept;
44
+ #else
45
+ extern "C" __cxa_eh_globals* __cxa_get_globals();
46
+ #endif
47
+
48
+ } // namespace __cxxabiv1
49
+
50
+ #endif
51
+ #endif
52
+
53
+ namespace folly {
54
+
55
+ namespace detail {
56
+
57
+ unsigned int* uncaught_exceptions_ptr() noexcept {
58
+ assert(kIsGlibcxx || kIsLibcpp);
59
+ #if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
60
+ return &__cxxabiv1::__cxa_get_globals()->uncaughtExceptions;
61
+ #endif
62
+ return nullptr;
63
+ }
64
+
65
+ } // namespace detail
66
+
67
+ } // namespace folly
68
+
69
+ // Accesses std::type_info and std::exception_ptr internals. Since these vary
70
+ // by platform and library, import or copy the structure and function
71
+ // signatures from each platform and library.
72
+ //
73
+ // Support:
74
+ // libstdc++ via libgcc libsupc++
75
+ // libc++ via llvm libcxxabi
76
+ // libc++ on freebsd via libcxxrt
77
+ // win32 via msvc crt
78
+ //
79
+ // Both libstdc++ and libc++ are based on cxxabi but they are not identical.
80
+ //
81
+ // Reference: https://github.com/RedBeard0531/better_exception_ptr.
82
+
83
+ // imports ---
84
+
85
+ #if defined(__GLIBCXX__)
86
+
87
+ // https://github.com/gcc-mirror/gcc/blob/releases/gcc-10.2.0/libstdc++-v3/libsupc++/unwind-cxx.h
88
+
89
+ // the definition of _Unwind_Ptr in libgcc/unwind-generic.h since unwind.h in
90
+ // libunwind does not have this typedef
91
+ #if defined(__ia64__) && defined(__hpux__)
92
+ typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
93
+ #else
94
+ typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
95
+ #endif
96
+
97
+ namespace __cxxabiv1 {
98
+
99
+ static constexpr uint64_t __gxx_primary_exception_class =
100
+ 0x474E5543432B2B00; // GNCUC++\0
101
+ static constexpr uint64_t __gxx_dependent_exception_class =
102
+ 0x474E5543432B2B01; // GNCUC++\1
103
+
104
+ struct __cxa_exception {
105
+ std::type_info* exceptionType;
106
+ void(_GLIBCXX_CDTOR_CALLABI* exceptionDestructor)(void*);
107
+ std::unexpected_handler unexpectedHandler;
108
+ std::terminate_handler terminateHandler;
109
+ __cxa_exception* nextException;
110
+ int handlerCount;
111
+ #ifdef __ARM_EABI_UNWINDER__
112
+ __cxa_exception* nextPropagatingException;
113
+ int propagationCount;
114
+ #else
115
+ int handlerSwitchValue;
116
+ const unsigned char* actionRecord;
117
+ const unsigned char* languageSpecificData;
118
+ _Unwind_Ptr catchTemp;
119
+ void* adjustedPtr;
120
+ #endif
121
+ _Unwind_Exception unwindHeader;
122
+ };
123
+
124
+ struct __cxa_refcounted_exception {
125
+ _Atomic_word referenceCount;
126
+ __cxa_exception exc;
127
+ };
128
+
129
+ } // namespace __cxxabiv1
130
+
131
+ #endif // defined(__GLIBCXX__)
132
+
133
+ #if defined(_LIBCPP_VERSION) && !defined(__FreeBSD__)
134
+
135
+ // https://github.com/llvm/llvm-project/blob/llvmorg-11.1.0/libcxx/include/exception
136
+ // https://github.com/llvm/llvm-project/blob/llvmorg-11.1.0/libcxxabi/src/cxa_exception.h
137
+ // https://github.com/llvm/llvm-project/blob/llvmorg-11.1.0/libcxxabi/src/cxa_exception.cpp
138
+ // https://github.com/llvm/llvm-project/blob/llvmorg-11.1.0/libcxxabi/src/private_typeinfo.h
139
+
140
+ namespace std {
141
+
142
+ #if defined(_LIBCPP_FUNC_VIS) // llvm < 17
143
+ #define FOLLY_DETAIL_EXN_FUNC_VIS _LIBCPP_FUNC_VIS
144
+ #else // llvm >= 17
145
+ #define FOLLY_DETAIL_EXN_FUNC_VIS _LIBCPP_EXPORTED_FROM_ABI
146
+ #endif
147
+
148
+ typedef void (*unexpected_handler)();
149
+ FOLLY_DETAIL_EXN_FUNC_VIS unexpected_handler get_unexpected() _NOEXCEPT;
150
+
151
+ } // namespace std
152
+
153
+ namespace __cxxabiv1 {
154
+
155
+ // the definition until llvm v10.0.0-rc2
156
+ struct __folly_cxa_exception_sans_reserve {
157
+ #if defined(__LP64__) || defined(_WIN64) || defined(_LIBCXXABI_ARM_EHABI)
158
+ size_t referenceCount;
159
+ #endif
160
+ std::type_info* exceptionType;
161
+ void (*exceptionDestructor)(void*);
162
+ void (*unexpectedHandler)();
163
+ std::terminate_handler terminateHandler;
164
+ __folly_cxa_exception_sans_reserve* nextException;
165
+ int handlerCount;
166
+ #if defined(_LIBCXXABI_ARM_EHABI)
167
+ __folly_cxa_exception_sans_reserve* nextPropagatingException;
168
+ int propagationCount;
169
+ #else
170
+ int handlerSwitchValue;
171
+ const unsigned char* actionRecord;
172
+ const unsigned char* languageSpecificData;
173
+ void* catchTemp;
174
+ void* adjustedPtr;
175
+ #endif
176
+ #if !defined(__LP64__) && !defined(_WIN64) && !defined(_LIBCXXABI_ARM_EHABI)
177
+ size_t referenceCount;
178
+ #endif
179
+ _Unwind_Exception unwindHeader;
180
+ };
181
+
182
+ // the definition since llvm v10.0.0-rc2
183
+ struct __folly_cxa_exception_with_reserve {
184
+ #if defined(__LP64__) || defined(_WIN64) || defined(_LIBCXXABI_ARM_EHABI)
185
+ void* reserve;
186
+ size_t referenceCount;
187
+ #endif
188
+ std::type_info* exceptionType;
189
+ void (*exceptionDestructor)(void*);
190
+ void (*unexpectedHandler)();
191
+ std::terminate_handler terminateHandler;
192
+ __folly_cxa_exception_with_reserve* nextException;
193
+ int handlerCount;
194
+ #if defined(_LIBCXXABI_ARM_EHABI)
195
+ __folly_cxa_exception_with_reserve* nextPropagatingException;
196
+ int propagationCount;
197
+ #else
198
+ int handlerSwitchValue;
199
+ const unsigned char* actionRecord;
200
+ const unsigned char* languageSpecificData;
201
+ void* catchTemp;
202
+ void* adjustedPtr;
203
+ #endif
204
+ #if !defined(__LP64__) && !defined(_WIN64) && !defined(_LIBCXXABI_ARM_EHABI)
205
+ size_t referenceCount;
206
+ #endif
207
+ _Unwind_Exception unwindHeader;
208
+ };
209
+
210
+ #if _LIBCPP_VERSION < 180000 || !_LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION
211
+ static const uint64_t kOurExceptionClass = 0x434C4E47432B2B00; // CLNGC++\0
212
+ #endif
213
+
214
+ // named differently from the real shim type __shim_type_info and all members
215
+ // are pure virtual; as long as the vtable is the same, though, it should work
216
+ class __folly_shim_type_info : public std::type_info {
217
+ public:
218
+ virtual ~__folly_shim_type_info() = 0;
219
+
220
+ virtual void noop1() const = 0;
221
+ virtual void noop2() const = 0;
222
+ virtual bool can_catch(
223
+ const std::type_info* thrown_type, void*& adjustedPtr) const = 0;
224
+ };
225
+
226
+ } // namespace __cxxabiv1
227
+
228
+ namespace abi = __cxxabiv1;
229
+
230
+ #endif // defined(_LIBCPP_VERSION) && !defined(__FreeBSD__)
231
+
232
+ #if defined(__FreeBSD__)
233
+
234
+ // https://github.com/freebsd/freebsd-src/blob/release/13.0.0/contrib/libcxxrt/cxxabi.h
235
+ // https://github.com/freebsd/freebsd-src/blob/release/13.0.0/contrib/libcxxrt/typeinfo.h
236
+
237
+ namespace __cxxabiv1 {
238
+
239
+ #if _LIBCPP_VERSION < 180000 || !_LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION
240
+ static const uint64_t kOurExceptionClass = 0x474E5543432B2B00; // GNUCC++\0
241
+ #endif
242
+
243
+ class __folly_shim_type_info {
244
+ public:
245
+ virtual ~__folly_shim_type_info() = 0;
246
+ virtual bool __is_pointer_p() const = 0;
247
+ virtual bool __is_function_p() const = 0;
248
+ virtual bool __do_catch(
249
+ std::type_info const* thrown_type,
250
+ void** thrown_object,
251
+ unsigned outer) const = 0;
252
+ virtual bool __do_upcast(
253
+ std::type_info const* target, void** thrown_object) const = 0;
254
+ };
255
+
256
+ extern "C" void* __cxa_allocate_exception(size_t thrown_size) noexcept;
257
+ extern "C" void __cxa_free_exception(void* thrown_exception) noexcept;
258
+
259
+ } // namespace __cxxabiv1
260
+
261
+ namespace abi = __cxxabiv1;
262
+
263
+ #endif // defined(__FreeBSD__)
264
+
265
+ #if defined(_WIN32)
266
+
267
+ #if defined(__clang__)
268
+ struct _s_ThrowInfo; // compiler intrinsic in msvc
269
+ typedef const struct _s_ThrowInfo _ThrowInfo;
270
+ #endif
271
+
272
+ #include <ehdata.h> // @manual
273
+
274
+ extern "C" _CRTIMP2 void* __cdecl __AdjustPointer(void*, PMD const&);
275
+
276
+ // clang for windows built-in is available under std::__GetExceptionInfo
277
+ #if !defined(__clang__)
278
+ template <class _E>
279
+ void* __GetExceptionInfo(_E); // builtin
280
+ #endif
281
+
282
+ #endif // defined(_WIN32)
283
+
284
+ // implementations ---
285
+
286
+ namespace folly {
287
+
288
+ namespace detail {
289
+
290
+ namespace {
291
+
292
+ template <typename F>
293
+ class scope_guard_ {
294
+ private:
295
+ [[FOLLY_ATTR_NO_UNIQUE_ADDRESS]] F func_;
296
+ bool live_{true};
297
+
298
+ public:
299
+ explicit scope_guard_(F func) noexcept : func_{func} {}
300
+ ~scope_guard_() { live_ ? func_() : void(); }
301
+ void dismiss() { live_ = false; }
302
+ };
303
+
304
+ } // namespace
305
+
306
+ std::atomic<int> exception_ptr_access_rt_cache_{0};
307
+
308
+ bool exception_ptr_access_rt_() noexcept {
309
+ auto& cache = exception_ptr_access_rt_cache_;
310
+ auto const result = exception_ptr_access_rt_v_();
311
+ cache.store(result ? 1 : -1, std::memory_order_relaxed);
312
+ return result;
313
+ }
314
+
315
+ std::type_info const* exception_ptr_exception_typeid(
316
+ std::exception const& ex) noexcept {
317
+ return type_info_of(ex);
318
+ }
319
+
320
+ #if defined(__GLIBCXX__)
321
+
322
+ bool exception_ptr_access_rt_v_() noexcept {
323
+ static_assert(exception_ptr_access_ct, "mismatch");
324
+ return true;
325
+ }
326
+
327
+ template <typename F>
328
+ static decltype(auto) cxxabi_with_cxa_exception(void* object, F f) {
329
+ using cxa_exception = abi::__cxa_exception;
330
+ auto exception = object ? static_cast<cxa_exception*>(object) - 1 : nullptr;
331
+ return f(exception);
332
+ }
333
+
334
+ std::type_info const* exception_ptr_get_type_(
335
+ std::exception_ptr const& ptr) noexcept {
336
+ if (!ptr) {
337
+ return nullptr;
338
+ }
339
+ auto object = reinterpret_cast<void* const&>(ptr);
340
+ auto exception = static_cast<abi::__cxa_exception*>(object) - 1;
341
+ return exception->exceptionType;
342
+ }
343
+
344
+ void* exception_ptr_get_object_(
345
+ std::exception_ptr const& ptr,
346
+ std::type_info const* const target) noexcept {
347
+ if (!ptr) {
348
+ return nullptr;
349
+ }
350
+ auto object = reinterpret_cast<void* const&>(ptr);
351
+ auto type = exception_ptr_get_type_(ptr);
352
+ return !target || target->__do_catch(type, &object, 1) ? object : nullptr;
353
+ }
354
+
355
+ #endif // defined(__GLIBCXX__)
356
+
357
+ #if defined(_LIBCPP_VERSION) && !defined(__FreeBSD__)
358
+
359
+ bool exception_ptr_access_rt_v_() noexcept {
360
+ static_assert(exception_ptr_access_ct || kIsAppleIOS, "mismatch");
361
+ FOLLY_PUSH_WARNING
362
+ FOLLY_CLANG_DISABLE_WARNING("-Wunsupported-availability-guard")
363
+ return exception_ptr_access_ct //
364
+ #if __clang__
365
+ || __builtin_available(iOS 12, *)
366
+ #endif
367
+ ;
368
+ FOLLY_POP_WARNING
369
+ }
370
+
371
+ static void* cxxabi_get_object(std::exception_ptr const& ptr) noexcept {
372
+ return reinterpret_cast<void* const&>(ptr);
373
+ }
374
+
375
+ static bool cxxabi_cxa_exception_sans_reserve() noexcept {
376
+ // detect and cache the layout of __cxa_exception in the loaded libc++abi
377
+ //
378
+ // for 32-bit arm-ehabi llvm ...
379
+ //
380
+ // before v5.0.1, _Unwind_Exception is alignas(4)
381
+ // as of v5.0.1, _Unwind_Exception is alignas(8)
382
+ // _Unwind_Exception is the last field in __cxa_exception
383
+ //
384
+ // before v10.0.0-rc2, __cxa_exception has 4b padding before the unwind field
385
+ // as of v10.0.0-rc2, __cxa_exception moves the 4b padding to the start in a
386
+ // field called reserve
387
+ //
388
+ // before 32-bit arm-ehabi llvm v10.0.0-rc2, the reserve field does not exist
389
+ // in the struct explicitly but the refcount field is there instead due to
390
+ // implicit padding
391
+ //
392
+ // before 32-bit arm-ehabi llvm v5.0.1, and before 64-bit llvm v10.0.0-rc2,
393
+ // the reserve field is before the struct start and so is presumably before
394
+ // the struct allocation and so must not be accessed
395
+ //
396
+ // __cxa_allocate_exception zero-fills the __cxa_exception before __cxa_throw
397
+ // assigns fields so if, after incref, the refcount field is still zero, then
398
+ // the runtime llvm is at least v5.0.1 and before v10.00-rc2 and then all the
399
+ // fields except for the unwind field are shifted up by 4b
400
+ //
401
+ // prefer optimistic concurrency over pessimistic concurrency
402
+ static std::atomic<int> cache{};
403
+ if (auto value = cache.load(std::memory_order_relaxed)) {
404
+ return value > 0;
405
+ }
406
+ auto object = abi::__cxa_allocate_exception(0);
407
+ abi::__cxa_increment_exception_refcount(object);
408
+ auto exception =
409
+ static_cast<abi::__folly_cxa_exception_sans_reserve*>(object) - 1;
410
+ auto result = exception->referenceCount == 1;
411
+ assert(
412
+ result ||
413
+ (static_cast<abi::__folly_cxa_exception_with_reserve*>(object) - 1)
414
+ ->referenceCount == 1);
415
+ abi::__cxa_free_exception(object); // no need for decref
416
+ cache.store(result ? 1 : -1, std::memory_order_relaxed);
417
+ return result;
418
+ }
419
+
420
+ template <typename F>
421
+ static decltype(auto) cxxabi_with_cxa_exception(void* object, F f) {
422
+ if (cxxabi_cxa_exception_sans_reserve()) {
423
+ using cxa_exception = abi::__folly_cxa_exception_sans_reserve;
424
+ auto exception = object ? static_cast<cxa_exception*>(object) - 1 : nullptr;
425
+ return f(exception);
426
+ } else {
427
+ using cxa_exception = abi::__folly_cxa_exception_with_reserve;
428
+ auto exception = object ? static_cast<cxa_exception*>(object) - 1 : nullptr;
429
+ return f(exception);
430
+ }
431
+ }
432
+
433
+ std::type_info const* exception_ptr_get_type_(
434
+ std::exception_ptr const& ptr) noexcept {
435
+ if (!ptr) {
436
+ return nullptr;
437
+ }
438
+ auto object = cxxabi_get_object(ptr);
439
+ return cxxabi_with_cxa_exception(object, [](auto exception) { //
440
+ return exception->exceptionType;
441
+ });
442
+ }
443
+
444
+ #if defined(__clang__)
445
+ __attribute__((no_sanitize("undefined")))
446
+ #endif // defined(__clang__)
447
+ void* exception_ptr_get_object_(
448
+ std::exception_ptr const& ptr,
449
+ std::type_info const* const target) noexcept {
450
+ if (!ptr) {
451
+ return nullptr;
452
+ }
453
+ auto object = cxxabi_get_object(ptr);
454
+ auto type = exception_ptr_get_type(ptr);
455
+ auto starget = static_cast<abi::__folly_shim_type_info const*>(target);
456
+ return !target || starget->can_catch(type, object) ? object : nullptr;
457
+ }
458
+
459
+ #endif // defined(_LIBCPP_VERSION) && !defined(__FreeBSD__)
460
+
461
+ #if defined(__FreeBSD__)
462
+
463
+ bool exception_ptr_access_rt_v_() noexcept {
464
+ static_assert(exception_ptr_access_ct, "mismatch");
465
+ return true;
466
+ }
467
+
468
+ template <typename F>
469
+ static decltype(auto) cxxabi_with_cxa_exception(void* object, F f) {
470
+ using cxa_exception = abi::__cxa_exception;
471
+ auto exception = object ? static_cast<cxa_exception*>(object) - 1 : nullptr;
472
+ return f(exception);
473
+ }
474
+
475
+ std::type_info const* exception_ptr_get_type_(
476
+ std::exception_ptr const& ptr) noexcept {
477
+ if (!ptr) {
478
+ return nullptr;
479
+ }
480
+ auto object = reinterpret_cast<void* const&>(ptr);
481
+ auto exception = static_cast<abi::__cxa_exception*>(object) - 1;
482
+ return exception->exceptionType;
483
+ }
484
+
485
+ void* exception_ptr_get_object_(
486
+ std::exception_ptr const& ptr,
487
+ std::type_info const* const target) noexcept {
488
+ if (!ptr) {
489
+ return nullptr;
490
+ }
491
+ auto object = reinterpret_cast<void* const&>(ptr);
492
+ auto type = exception_ptr_get_type(ptr);
493
+ auto starget = reinterpret_cast<abi::__folly_shim_type_info const*>(target);
494
+ return !target || starget->__do_catch(type, &object, 1) ? object : nullptr;
495
+ }
496
+
497
+ #endif // defined(__FreeBSD__)
498
+
499
+ #if defined(_WIN32)
500
+
501
+ template <typename T>
502
+ static T* win32_decode_pointer(T* ptr) {
503
+ return static_cast<T*>(
504
+ DecodePointer(const_cast<void*>(static_cast<void const*>(ptr))));
505
+ }
506
+
507
+ static EHExceptionRecord* win32_get_record(
508
+ std::exception_ptr const& ptr) noexcept {
509
+ return reinterpret_cast<std::shared_ptr<EHExceptionRecord> const&>(ptr).get();
510
+ }
511
+
512
+ static bool win32_eptr_throw_info_ptr_is_encoded() {
513
+ // detect and cache whether this version of the microsoft c++ standard library
514
+ // encodes the throw-info pointer in the std::exception_ptr internals
515
+ //
516
+ // earlier versions of std::exception_ptr did encode the throw-info pointer
517
+ // but the most recent versions do not, as visible on github at
518
+ // https://github.com/microsoft/STL
519
+ //
520
+ // prefer optimistic concurrency over pessimistic concurrency
521
+ static std::atomic<int> cache{0}; // 0 uninit, -1 false, 1 true
522
+ if (auto value = cache.load(std::memory_order_relaxed)) {
523
+ return value > 0;
524
+ }
525
+ // detection is done by observing actual runtime behavior, using int as the
526
+ // exception object type to save cost
527
+ #if defined(__clang__)
528
+ auto info = std::__GetExceptionInfo(0);
529
+ #else
530
+ auto info = __GetExceptionInfo(0);
531
+ #endif
532
+ auto ptr = std::make_exception_ptr(0);
533
+ auto rec = win32_get_record(ptr);
534
+ int value = 0;
535
+ if (info == rec->params.pThrowInfo) {
536
+ value = -1;
537
+ }
538
+ if (info == win32_decode_pointer(rec->params.pThrowInfo)) {
539
+ value = +1;
540
+ }
541
+ assert(value);
542
+ // last writer wins for simplicity, assuming it to be impossible for multiple
543
+ // writers to write different values
544
+ cache.store(value, std::memory_order_relaxed);
545
+ return value > 0;
546
+ }
547
+
548
+ static ThrowInfo* win32_throw_info(EHExceptionRecord* rec) {
549
+ auto encoded = win32_eptr_throw_info_ptr_is_encoded();
550
+ auto info = rec->params.pThrowInfo;
551
+ return encoded ? win32_decode_pointer(info) : info;
552
+ }
553
+
554
+ static std::uintptr_t win32_throw_image_base(EHExceptionRecord* rec) {
555
+ #if _EH_RELATIVE_TYPEINFO
556
+ return reinterpret_cast<std::uintptr_t>(rec->params.pThrowImageBase);
557
+ #else
558
+ (void)rec;
559
+ return 0;
560
+ #endif
561
+ }
562
+
563
+ bool exception_ptr_access_rt_v_() noexcept {
564
+ static_assert(exception_ptr_access_ct, "mismatch");
565
+ return true;
566
+ }
567
+
568
+ std::type_info const* exception_ptr_get_type_(
569
+ std::exception_ptr const& ptr) noexcept {
570
+ auto rec = win32_get_record(ptr);
571
+ if (!rec) {
572
+ return nullptr;
573
+ }
574
+ auto base = win32_throw_image_base(rec);
575
+ auto info = win32_throw_info(rec);
576
+ auto cta_ = base + info->pCatchableTypeArray;
577
+ auto cta = reinterpret_cast<CatchableTypeArray*>(cta_);
578
+ // assumption: the compiler emits the most-derived type first
579
+ auto ct_ = base + cta->arrayOfCatchableTypes[0];
580
+ auto ct = reinterpret_cast<CatchableType*>(ct_);
581
+ auto td_ = base + ct->pType;
582
+ auto td = reinterpret_cast<TypeDescriptor*>(td_);
583
+ return reinterpret_cast<std::type_info*>(td);
584
+ }
585
+
586
+ void* exception_ptr_get_object_(
587
+ std::exception_ptr const& ptr,
588
+ std::type_info const* const target) noexcept {
589
+ auto rec = win32_get_record(ptr);
590
+ if (!rec) {
591
+ return nullptr;
592
+ }
593
+ auto object = rec->params.pExceptionObject;
594
+ if (!target) {
595
+ return object;
596
+ }
597
+ auto base = win32_throw_image_base(rec);
598
+ auto info = win32_throw_info(rec);
599
+ auto cta_ = base + info->pCatchableTypeArray;
600
+ auto cta = reinterpret_cast<CatchableTypeArray*>(cta_);
601
+ for (int i = 0; i < cta->nCatchableTypes; i++) {
602
+ auto ct_ = base + cta->arrayOfCatchableTypes[i];
603
+ auto ct = reinterpret_cast<CatchableType*>(ct_);
604
+ auto td_ = base + ct->pType;
605
+ auto td = reinterpret_cast<TypeDescriptor*>(td_);
606
+ if (*target == *reinterpret_cast<std::type_info*>(td)) {
607
+ return __AdjustPointer(object, ct->thisDisplacement);
608
+ }
609
+ }
610
+ return nullptr;
611
+ }
612
+
613
+ #endif // defined(_WIN32)
614
+
615
+ } // namespace detail
616
+
617
+ namespace detail {
618
+
619
+ #if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
620
+
621
+ [[gnu::const]] abi::__cxa_eh_globals& cxa_get_globals() noexcept {
622
+ #if !defined(__has_feature) || !FOLLY_HAS_FEATURE(cxx_thread_local)
623
+ return *abi::__cxa_get_globals();
624
+ #elif defined(__XTENSA__)
625
+ return *abi::__cxa_get_globals();
626
+ #else
627
+ thread_local abi::__cxa_eh_globals* cache;
628
+ return FOLLY_LIKELY(!!cache) ? *cache : *(cache = abi::__cxa_get_globals());
629
+ #endif
630
+ }
631
+
632
+ #endif
633
+
634
+ } // namespace detail
635
+
636
+ std::exception_ptr current_exception() noexcept {
637
+ #if defined(__APPLE__)
638
+ return std::current_exception();
639
+ #elif defined(_CPPLIB_VER)
640
+ return std::current_exception();
641
+ #elif defined(_LIBCPP_VERSION)
642
+ return std::current_exception();
643
+ #else
644
+ auto const& globals = detail::cxa_get_globals();
645
+ auto const exception =
646
+ static_cast<abi::__cxa_exception*>(globals.caughtExceptions);
647
+ if (!exception) {
648
+ return std::exception_ptr();
649
+ }
650
+ uint64_t exn_class{};
651
+ std::memcpy( // exception_class may be uint64_t or char[8]
652
+ &exn_class,
653
+ &exception->unwindHeader.exception_class,
654
+ sizeof(exn_class));
655
+ switch (exn_class) {
656
+ case abi::__gxx_primary_exception_class: {
657
+ auto const object = static_cast<void const*>(exception + 1);
658
+ assume(!!object);
659
+ return std::exception_ptr(
660
+ reinterpret_cast<std::exception_ptr const&>(object));
661
+ }
662
+ case abi::__gxx_dependent_exception_class: {
663
+ auto const object = static_cast<void const*>(exception->exceptionType);
664
+ assume(!!object);
665
+ return std::exception_ptr(
666
+ reinterpret_cast<std::exception_ptr const&>(object));
667
+ }
668
+ default:
669
+ return std::exception_ptr();
670
+ }
671
+ #endif
672
+ }
673
+
674
+ namespace detail {
675
+
676
+ template <typename Try>
677
+ std::exception_ptr catch_current_exception_(Try&& t) noexcept {
678
+ return catch_exception(static_cast<Try&&>(t), current_exception);
679
+ }
680
+
681
+ #if defined(__GLIBCXX__)
682
+
683
+ std::exception_ptr make_exception_ptr_with_(
684
+ make_exception_ptr_with_arg_ const& arg, void* func) noexcept {
685
+ auto type = const_cast<std::type_info*>(arg.type);
686
+ void* object = abi::__cxa_allocate_exception(arg.size);
687
+ (void)abi::__cxa_init_primary_exception(object, type, arg.dtor);
688
+ auto exception = static_cast<abi::__cxa_refcounted_exception*>(object) - 1;
689
+ exception->referenceCount = 1;
690
+ return catch_current_exception_([&] {
691
+ scope_guard_ rollback{std::bind(abi::__cxa_free_exception, object)};
692
+ arg.ctor(object, func);
693
+ rollback.dismiss();
694
+ return reinterpret_cast<std::exception_ptr&&>(object);
695
+ });
696
+ }
697
+
698
+ #elif defined(_LIBCPP_VERSION)
699
+
700
+ [[maybe_unused]] static void exception_cleanup_(
701
+ _Unwind_Reason_Code reason, _Unwind_Exception* uwexception) {
702
+ if (reason == _URC_FOREIGN_EXCEPTION_CAUGHT) {
703
+ auto handler = cxxabi_with_cxa_exception(
704
+ uwexception + 1, [](auto exn) { return exn->terminateHandler; });
705
+ folly::catch_exception(handler, folly::variadic_noop);
706
+ std::abort();
707
+ }
708
+ abi::__cxa_decrement_exception_refcount(uwexception + 1);
709
+ }
710
+
711
+ std::exception_ptr make_exception_ptr_with_(
712
+ make_exception_ptr_with_arg_ const& arg, void* func) noexcept {
713
+ void* object = abi::__cxa_allocate_exception(arg.size);
714
+ auto type = const_cast<std::type_info*>(arg.type);
715
+ #if _LIBCPP_VERSION >= 180000 && _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION
716
+ (void)abi::__cxa_init_primary_exception(object, type, arg.dtor);
717
+ #else
718
+ cxxabi_with_cxa_exception(object, [&](auto exception) {
719
+ #if defined(__FreeBSD__)
720
+ exception->unexpectedHandler = nullptr;
721
+ #else
722
+ exception->unexpectedHandler = std::get_unexpected();
723
+ #endif
724
+ exception->terminateHandler = std::get_terminate();
725
+ exception->exceptionType = type;
726
+ exception->exceptionDestructor = arg.dtor;
727
+ exception->referenceCount = 1;
728
+ std::memcpy( // exception_class may be uint64_t or char[8]
729
+ &exception->unwindHeader.exception_class,
730
+ &abi::kOurExceptionClass,
731
+ sizeof(abi::kOurExceptionClass));
732
+ exception->unwindHeader.exception_cleanup = exception_cleanup_;
733
+ });
734
+ #endif
735
+ return catch_current_exception_([&] {
736
+ scope_guard_ rollback{std::bind(abi::__cxa_free_exception, object)};
737
+ arg.ctor(object, func);
738
+ rollback.dismiss();
739
+ return reinterpret_cast<std::exception_ptr&&>(object);
740
+ });
741
+ }
742
+
743
+ #else
744
+
745
+ std::exception_ptr make_exception_ptr_with_(
746
+ make_exception_ptr_with_arg_ const&, void*) noexcept {
747
+ return std::exception_ptr();
748
+ }
749
+
750
+ #endif
751
+
752
+ } // namespace detail
753
+
754
+ struct exception_shared_string::state {
755
+ // refcount ops use relaxed order since the string is immutable: side-effects
756
+ // need not be made visible to the destructor since there are none
757
+ static constexpr auto relaxed = std::memory_order_relaxed;
758
+ std::atomic<std::size_t> refs{0u};
759
+ std::size_t const size{0u};
760
+ static constexpr std::size_t object_size(std::size_t const len) noexcept {
761
+ return sizeof(state) + len + 1u;
762
+ }
763
+ static state* make(char const* const str, std::size_t const len) {
764
+ constexpr auto align = std::align_val_t{alignof(state)};
765
+ assert(len == std::strlen(str));
766
+ auto addr = operator_new(object_size(len), align);
767
+ return new (addr) state(str, len);
768
+ }
769
+ static state* make(std::size_t const len, format_sig_& ffun, void* fobj) {
770
+ constexpr auto align = std::align_val_t{alignof(state)};
771
+ auto addr = operator_new(object_size(len), align);
772
+ return new (addr) state(len, ffun, fobj);
773
+ }
774
+ state(char const* const str, std::size_t const len) noexcept : size{len} {
775
+ std::memcpy(static_cast<void*>(this + 1u), str, len + 1u);
776
+ }
777
+ state(std::size_t const len, format_sig_& ffun, void* fobj) : size{len} {
778
+ auto const buf = static_cast<char*>(static_cast<void*>(this + 1u));
779
+ ffun(fobj, buf, len);
780
+ buf[len] = 0;
781
+ }
782
+ char const* what() const noexcept {
783
+ return static_cast<char const*>(static_cast<void const*>(this + 1u));
784
+ }
785
+ void copy() noexcept { refs.fetch_add(1u, relaxed); }
786
+ void ruin() noexcept {
787
+ constexpr auto align = std::align_val_t{alignof(state)};
788
+ if (!refs.load(relaxed) || !refs.fetch_sub(1u, relaxed)) {
789
+ operator_delete(this, object_size(size), align);
790
+ }
791
+ }
792
+ };
793
+
794
+ exception_shared_string::exception_shared_string(
795
+ std::size_t const len, format_sig_& ffun, void* const fobj)
796
+ : state_{reinterpret_cast<uintptr_t>(state::make(len, ffun, fobj))} {}
797
+
798
+ exception_shared_string::exception_shared_string(
799
+ literal_state_base const& base) noexcept
800
+ : state_{reinterpret_cast<uintptr_t>(&base + 1)} {}
801
+ exception_shared_string::exception_shared_string(char const* const str)
802
+ : exception_shared_string{str, std::strlen(str)} {}
803
+ exception_shared_string::exception_shared_string(
804
+ char const* const str, std::size_t const len)
805
+ : state_{reinterpret_cast<uintptr_t>(state::make(str, len))} {}
806
+ exception_shared_string::exception_shared_string(
807
+ exception_shared_string const& that) noexcept
808
+ : state_{
809
+ that.state_ & 1 //
810
+ ? that.state_
811
+ : (reinterpret_cast<state*>(that.state_)->copy(), that.state_)} {}
812
+ exception_shared_string::~exception_shared_string() {
813
+ state_ & 1 ? void() : reinterpret_cast<state*>(state_)->ruin();
814
+ }
815
+
816
+ char const* exception_shared_string::what() const noexcept {
817
+ return state_ & 1 //
818
+ ? reinterpret_cast<char const*>(state_)
819
+ : reinterpret_cast<state*>(state_)->what();
820
+ }
821
+
822
+ } // namespace folly