react-native-windows 0.81.34 → 0.81.36
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.
- package/Directory.Build.props +1 -16
- package/Folly/ThreadNameStub.cpp +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/BorderPrimitive.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -4
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +8 -4
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -3
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +48 -2
- package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +40 -13
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/React.Cpp.props +3 -3
- package/ReactCommon/ReactCommon.vcxproj +0 -10
- package/ReactCommon/packages.lock.win32.json +0 -10
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/creaternwlib.cmd +2 -2
- package/Shared/Shared.vcxitems +2 -0
- package/{Folly → external}/.clang-format +0 -1
- package/external/External.vcxitems +10 -0
- package/external/fast-float/.syncignore +10 -0
- package/external/fast-float/LICENSE-APACHE +190 -0
- package/external/fast-float/LICENSE-BOOST +23 -0
- package/external/fast-float/LICENSE-MIT +27 -0
- package/external/fast-float/README.md +545 -0
- package/external/fast-float/cgmanifest.json +15 -0
- package/external/fast-float/fast-float.vcxitems +14 -0
- package/external/fast-float/include/fast_float/ascii_number.h +588 -0
- package/external/fast-float/include/fast_float/bigint.h +638 -0
- package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
- package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
- package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
- package/external/fast-float/include/fast_float/fast_float.h +59 -0
- package/external/fast-float/include/fast_float/fast_table.h +708 -0
- package/external/fast-float/include/fast_float/float_common.h +1240 -0
- package/external/fast-float/include/fast_float/parse_number.h +399 -0
- package/external/fast-float/sync-config.json +8 -0
- package/external/fmt/.syncignore +10 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/external/fmt/README.md +484 -0
- package/{fmt → external/fmt}/cgmanifest.json +1 -1
- package/external/fmt/doc/ChangeLog-old.md +3290 -0
- package/external/fmt/doc/api.md +650 -0
- package/external/fmt/doc/fmt.css +61 -0
- package/external/fmt/doc/fmt.js +4 -0
- package/external/fmt/doc/get-started.md +222 -0
- package/external/fmt/doc/index.md +151 -0
- package/external/fmt/doc/perf.svg +1 -0
- package/external/fmt/doc/python-license.txt +290 -0
- package/external/fmt/doc/syntax.md +887 -0
- package/external/fmt/fmt.vcxitems +28 -0
- package/external/fmt/include/fmt/args.h +228 -0
- package/{fmt/TEMP_UntilFmtUpdate/core.h → external/fmt/include/fmt/base.h} +1188 -1036
- package/external/fmt/include/fmt/chrono.h +2432 -0
- package/external/fmt/include/fmt/color.h +612 -0
- package/external/fmt/include/fmt/compile.h +529 -0
- package/external/fmt/include/fmt/core.h +5 -0
- package/external/fmt/include/fmt/format-inl.h +1928 -0
- package/external/fmt/include/fmt/format.h +4427 -0
- package/external/fmt/include/fmt/os.h +439 -0
- package/external/fmt/include/fmt/ostream.h +211 -0
- package/external/fmt/include/fmt/printf.h +656 -0
- package/external/fmt/include/fmt/ranges.h +882 -0
- package/external/fmt/include/fmt/std.h +699 -0
- package/external/fmt/include/fmt/xchar.h +322 -0
- package/external/fmt/src/fmt.cc +135 -0
- package/external/fmt/src/format.cc +43 -0
- package/external/fmt/src/os.cc +403 -0
- package/external/fmt/sync-config.json +8 -0
- package/external/folly/.syncignore +60 -0
- package/external/folly/LICENSE +200 -0
- package/external/folly/README.md +263 -0
- package/{fmt → external/folly/folly}/.clang-format +0 -1
- package/external/folly/folly/AtomicHashArray-inl.h +546 -0
- package/external/folly/folly/AtomicHashArray.h +431 -0
- package/external/folly/folly/AtomicHashMap-inl.h +653 -0
- package/external/folly/folly/AtomicHashMap.h +484 -0
- package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
- package/external/folly/folly/AtomicLinkedList.h +110 -0
- package/external/folly/folly/AtomicUnorderedMap.h +522 -0
- package/external/folly/folly/BUCK +1631 -0
- package/external/folly/folly/BUILD_MODE.bzl +72 -0
- package/external/folly/folly/Benchmark.cpp +986 -0
- package/external/folly/folly/Benchmark.h +680 -0
- package/external/folly/folly/BenchmarkUtil.h +47 -0
- package/external/folly/folly/Bits.h +17 -0
- package/external/folly/folly/CMakeLists.txt +110 -0
- package/external/folly/folly/CPortability.h +338 -0
- package/external/folly/folly/CancellationToken-inl.h +449 -0
- package/external/folly/folly/CancellationToken.cpp +250 -0
- package/external/folly/folly/CancellationToken.h +365 -0
- package/external/folly/folly/Chrono.h +132 -0
- package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
- package/external/folly/folly/ClockGettimeWrappers.h +29 -0
- package/external/folly/folly/ConcurrentBitSet.h +157 -0
- package/external/folly/folly/ConcurrentLazy.h +74 -0
- package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
- package/external/folly/folly/ConcurrentSkipList.h +824 -0
- package/external/folly/folly/ConstructorCallbackList.h +158 -0
- package/external/folly/folly/Conv.h +2026 -0
- package/external/folly/folly/CppAttributes.h +170 -0
- package/external/folly/folly/CpuId.h +297 -0
- package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
- package/external/folly/folly/Demangle.cpp +255 -0
- package/external/folly/folly/Demangle.h +73 -0
- package/external/folly/folly/DiscriminatedPtr.h +236 -0
- package/external/folly/folly/DynamicConverter.h +17 -0
- package/external/folly/folly/Exception.h +150 -0
- package/external/folly/folly/ExceptionString.cpp +51 -0
- package/external/folly/folly/ExceptionString.h +33 -0
- package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
- package/external/folly/folly/ExceptionWrapper.cpp +37 -0
- package/external/folly/folly/ExceptionWrapper.h +377 -0
- package/external/folly/folly/Executor.cpp +111 -0
- package/external/folly/folly/Executor.h +351 -0
- package/external/folly/folly/Expected.h +1725 -0
- package/external/folly/folly/FBString.h +2888 -0
- package/external/folly/folly/FBVector.h +17 -0
- package/external/folly/folly/File.cpp +180 -0
- package/external/folly/folly/File.h +177 -0
- package/external/folly/folly/FileUtil.cpp +378 -0
- package/external/folly/folly/FileUtil.h +332 -0
- package/external/folly/folly/Fingerprint.cpp +135 -0
- package/external/folly/folly/Fingerprint.h +289 -0
- package/external/folly/folly/FixedString.h +2965 -0
- package/external/folly/folly/FollyMemcpy.cpp +30 -0
- package/external/folly/folly/FollyMemcpy.h +23 -0
- package/external/folly/folly/FollyMemset.cpp +29 -0
- package/external/folly/folly/FollyMemset.h +25 -0
- package/external/folly/folly/Format-inl.h +1152 -0
- package/external/folly/folly/Format.cpp +429 -0
- package/external/folly/folly/Format.h +463 -0
- package/external/folly/folly/FormatArg.h +285 -0
- package/external/folly/folly/FormatTraits.h +65 -0
- package/external/folly/folly/Function.h +1159 -0
- package/external/folly/folly/GLog.h +85 -0
- package/external/folly/folly/GroupVarint.cpp +153 -0
- package/external/folly/folly/GroupVarint.h +630 -0
- package/external/folly/folly/Hash.h +20 -0
- package/external/folly/folly/IPAddress.cpp +490 -0
- package/external/folly/folly/IPAddress.h +667 -0
- package/external/folly/folly/IPAddressException.h +82 -0
- package/external/folly/folly/IPAddressV4.cpp +305 -0
- package/external/folly/folly/IPAddressV4.h +495 -0
- package/external/folly/folly/IPAddressV6.cpp +541 -0
- package/external/folly/folly/IPAddressV6.h +627 -0
- package/external/folly/folly/Indestructible.h +164 -0
- package/external/folly/folly/IndexedMemPool.h +550 -0
- package/external/folly/folly/IntrusiveList.h +17 -0
- package/external/folly/folly/Lazy.h +142 -0
- package/external/folly/folly/Likely.h +76 -0
- package/external/folly/folly/MPMCPipeline.h +280 -0
- package/external/folly/folly/MPMCQueue.h +1556 -0
- package/external/folly/folly/MacAddress.cpp +188 -0
- package/external/folly/folly/MacAddress.h +260 -0
- package/external/folly/folly/MapUtil.h +17 -0
- package/external/folly/folly/Math.h +258 -0
- package/external/folly/folly/MaybeManagedPtr.h +120 -0
- package/external/folly/folly/Memory.h +900 -0
- package/external/folly/folly/MicroLock.cpp +76 -0
- package/external/folly/folly/MicroLock.h +354 -0
- package/external/folly/folly/MicroSpinLock.h +17 -0
- package/external/folly/folly/MoveWrapper.h +76 -0
- package/external/folly/folly/ObserverContainer.h +1026 -0
- package/external/folly/folly/Optional.h +743 -0
- package/external/folly/folly/Overload.h +325 -0
- package/external/folly/folly/PackedSyncPtr.h +147 -0
- package/external/folly/folly/Padded.h +464 -0
- package/external/folly/folly/Poly-inl.h +230 -0
- package/external/folly/folly/Poly.h +1095 -0
- package/external/folly/folly/PolyException.h +43 -0
- package/external/folly/folly/Portability.h +644 -0
- package/external/folly/folly/Preprocessor.h +236 -0
- package/external/folly/folly/ProducerConsumerQueue.h +182 -0
- package/external/folly/folly/RWSpinLock.h +17 -0
- package/external/folly/folly/Random-inl.h +86 -0
- package/external/folly/folly/Random.cpp +184 -0
- package/external/folly/folly/Random.h +434 -0
- package/external/folly/folly/Range.h +1772 -0
- package/external/folly/folly/Replaceable.h +636 -0
- package/external/folly/folly/ScopeGuard.cpp +29 -0
- package/external/folly/folly/ScopeGuard.h +420 -0
- package/external/folly/folly/SharedMutex.cpp +81 -0
- package/external/folly/folly/SharedMutex.h +1751 -0
- package/external/folly/folly/Singleton-inl.h +332 -0
- package/external/folly/folly/Singleton.cpp +512 -0
- package/external/folly/folly/Singleton.h +891 -0
- package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
- package/external/folly/folly/SingletonThreadLocal.h +263 -0
- package/external/folly/folly/SocketAddress.cpp +786 -0
- package/external/folly/folly/SocketAddress.h +768 -0
- package/external/folly/folly/SpinLock.h +55 -0
- package/external/folly/folly/String-inl.h +668 -0
- package/external/folly/folly/String.cpp +777 -0
- package/external/folly/folly/String.h +767 -0
- package/external/folly/folly/Subprocess.cpp +1142 -0
- package/external/folly/folly/Subprocess.h +1055 -0
- package/external/folly/folly/Synchronized.h +1833 -0
- package/external/folly/folly/SynchronizedPtr.h +106 -0
- package/external/folly/folly/ThreadCachedInt.h +175 -0
- package/external/folly/folly/ThreadLocal.h +478 -0
- package/external/folly/folly/TimeoutQueue.cpp +78 -0
- package/external/folly/folly/TimeoutQueue.h +123 -0
- package/external/folly/folly/TokenBucket.h +673 -0
- package/external/folly/folly/Traits.h +1442 -0
- package/external/folly/folly/Try-inl.h +372 -0
- package/external/folly/folly/Try.cpp +23 -0
- package/external/folly/folly/Try.h +728 -0
- package/external/folly/folly/UTF8String.h +56 -0
- package/external/folly/folly/Unicode.cpp +201 -0
- package/external/folly/folly/Unicode.h +94 -0
- package/external/folly/folly/Unit.h +65 -0
- package/external/folly/folly/Uri-inl.h +101 -0
- package/external/folly/folly/Uri.cpp +190 -0
- package/external/folly/folly/Uri.h +142 -0
- package/external/folly/folly/Utility.h +932 -0
- package/external/folly/folly/VERSION +1 -0
- package/external/folly/folly/Varint.h +230 -0
- package/external/folly/folly/VirtualExecutor.h +17 -0
- package/external/folly/folly/algorithm/simd/BUCK +47 -0
- package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
- package/external/folly/folly/algorithm/simd/Contains.h +116 -0
- package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
- package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
- package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
- package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
- package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
- package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
- package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
- package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
- package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
- package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
- package/external/folly/folly/base64.h +264 -0
- package/external/folly/folly/chrono/BUCK +29 -0
- package/external/folly/folly/chrono/Clock.h +65 -0
- package/external/folly/folly/chrono/Conv.h +712 -0
- package/external/folly/folly/chrono/test/BUCK +26 -0
- package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
- package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
- package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
- package/external/folly/folly/concurrency/BUCK +170 -0
- package/external/folly/folly/concurrency/CacheLocality.h +460 -0
- package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
- package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
- package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
- package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
- package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
- package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
- package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
- package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
- package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
- package/external/folly/folly/concurrency/container/BUCK +77 -0
- package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
- package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
- package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
- package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
- package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
- package/external/folly/folly/concurrency/container/test/BUCK +75 -0
- package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
- package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
- package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
- package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
- package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
- package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
- package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
- package/external/folly/folly/concurrency/memory/BUCK +53 -0
- package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
- package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
- package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
- package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
- package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
- package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
- package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
- package/external/folly/folly/concurrency/test/BUCK +229 -0
- package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
- package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
- package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
- package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
- package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
- package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
- package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
- package/external/folly/folly/container/Access.h +57 -0
- package/external/folly/folly/container/Array.h +87 -0
- package/external/folly/folly/container/BUCK +353 -0
- package/external/folly/folly/container/BitIterator.h +203 -0
- package/external/folly/folly/container/Enumerate.h +162 -0
- package/external/folly/folly/container/EvictingCacheMap.h +730 -0
- package/external/folly/folly/container/F14.md +300 -0
- package/external/folly/folly/container/F14Map-fwd.h +113 -0
- package/external/folly/folly/container/F14Map.h +2108 -0
- package/external/folly/folly/container/F14Set-fwd.h +95 -0
- package/external/folly/folly/container/F14Set.h +1603 -0
- package/external/folly/folly/container/FBVector.h +1711 -0
- package/external/folly/folly/container/Foreach-inl.h +316 -0
- package/external/folly/folly/container/Foreach.h +209 -0
- package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
- package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
- package/external/folly/folly/container/IntrusiveHeap.h +268 -0
- package/external/folly/folly/container/IntrusiveList.h +131 -0
- package/external/folly/folly/container/Iterator.h +843 -0
- package/external/folly/folly/container/MapUtil.h +376 -0
- package/external/folly/folly/container/Merge.h +90 -0
- package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
- package/external/folly/folly/container/RegexMatchCache.h +699 -0
- package/external/folly/folly/container/Reserve.h +109 -0
- package/external/folly/folly/container/SparseByteSet.h +123 -0
- package/external/folly/folly/container/View.h +81 -0
- package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
- package/external/folly/folly/container/detail/BUCK +115 -0
- package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
- package/external/folly/folly/container/detail/F14Defaults.h +34 -0
- package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
- package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
- package/external/folly/folly/container/detail/F14Mask.h +235 -0
- package/external/folly/folly/container/detail/F14Policy.h +1523 -0
- package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
- package/external/folly/folly/container/detail/F14Table.cpp +71 -0
- package/external/folly/folly/container/detail/F14Table.h +2680 -0
- package/external/folly/folly/container/detail/Util.h +303 -0
- package/external/folly/folly/container/detail/tape_detail.h +135 -0
- package/external/folly/folly/container/detail/test/BUCK +14 -0
- package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
- package/external/folly/folly/container/heap_vector_types.h +1683 -0
- package/external/folly/folly/container/range_traits.h +81 -0
- package/external/folly/folly/container/small_vector.h +1476 -0
- package/external/folly/folly/container/sorted_vector_types.h +1652 -0
- package/external/folly/folly/container/span.h +408 -0
- package/external/folly/folly/container/tape.h +608 -0
- package/external/folly/folly/container/test/.clang-tidy +12 -0
- package/external/folly/folly/container/test/AccessTest.cpp +138 -0
- package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
- package/external/folly/folly/container/test/BUCK +568 -0
- package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
- package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
- package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
- package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
- package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
- package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
- package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
- package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
- package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
- package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
- package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
- package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
- package/external/folly/folly/container/test/F14TestUtil.h +117 -0
- package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
- package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
- package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
- package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
- package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
- package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
- package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
- package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
- package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
- package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
- package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
- package/external/folly/folly/container/test/MergeTest.cpp +66 -0
- package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
- package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
- package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
- package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
- package/external/folly/folly/container/test/TrackingTypes.h +584 -0
- package/external/folly/folly/container/test/UtilTest.cpp +609 -0
- package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
- package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
- package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
- package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
- package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
- package/external/folly/folly/container/test/span_test.cpp +520 -0
- package/external/folly/folly/container/test/tape_bench.cpp +200 -0
- package/external/folly/folly/container/test/tape_test.cpp +590 -0
- package/external/folly/folly/defs.bzl +238 -0
- package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
- package/external/folly/folly/detail/AsyncTrace.h +44 -0
- package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
- package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
- package/external/folly/folly/detail/BUCK +406 -0
- package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
- package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
- package/external/folly/folly/detail/FileUtilDetail.h +85 -0
- package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
- package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
- package/external/folly/folly/detail/Futex-inl.h +123 -0
- package/external/folly/folly/detail/Futex.cpp +273 -0
- package/external/folly/folly/detail/Futex.h +109 -0
- package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
- package/external/folly/folly/detail/IPAddress.cpp +37 -0
- package/external/folly/folly/detail/IPAddress.h +57 -0
- package/external/folly/folly/detail/IPAddressSource.h +278 -0
- package/external/folly/folly/detail/Iterators.h +156 -0
- package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
- package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
- package/external/folly/folly/detail/MemoryIdler.h +216 -0
- package/external/folly/folly/detail/PerfScoped.cpp +112 -0
- package/external/folly/folly/detail/PerfScoped.h +70 -0
- package/external/folly/folly/detail/PolyDetail.h +921 -0
- package/external/folly/folly/detail/RangeCommon.cpp +55 -0
- package/external/folly/folly/detail/RangeCommon.h +93 -0
- package/external/folly/folly/detail/RangeSse42.cpp +198 -0
- package/external/folly/folly/detail/RangeSse42.h +30 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
- package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
- package/external/folly/folly/detail/Singleton.h +34 -0
- package/external/folly/folly/detail/SlowFingerprint.h +90 -0
- package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
- package/external/folly/folly/detail/SocketFastOpen.h +89 -0
- package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
- package/external/folly/folly/detail/SplitStringSimd.h +151 -0
- package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
- package/external/folly/folly/detail/Sse.cpp +35 -0
- package/external/folly/folly/detail/Sse.h +45 -0
- package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
- package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
- package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
- package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
- package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
- package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
- package/external/folly/folly/detail/TurnSequencer.h +295 -0
- package/external/folly/folly/detail/TypeList.h +551 -0
- package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
- package/external/folly/folly/detail/UniqueInstance.h +68 -0
- package/external/folly/folly/detail/base64_detail/BUCK +102 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
- package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
- package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
- package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
- package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
- package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
- package/external/folly/folly/detail/base64_detail/README.md +392 -0
- package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
- package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
- package/external/folly/folly/detail/test/BUCK +118 -0
- package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
- package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
- package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
- package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
- package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
- package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
- package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
- package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
- package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
- package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
- package/external/folly/folly/detail/thread_local_globals.h +36 -0
- package/external/folly/folly/docs/AtomicHashMap.md +134 -0
- package/external/folly/folly/docs/Benchmark.md +310 -0
- package/external/folly/folly/docs/Conv.md +291 -0
- package/external/folly/folly/docs/Dynamic.md +220 -0
- package/external/folly/folly/docs/DynamicConverter.md +71 -0
- package/external/folly/folly/docs/Executors.md +63 -0
- package/external/folly/folly/docs/FBString.md +46 -0
- package/external/folly/folly/docs/FBVector.md +200 -0
- package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
- package/external/folly/folly/docs/Format.md +177 -0
- package/external/folly/folly/docs/Function.md +92 -0
- package/external/folly/folly/docs/Futures.md +263 -0
- package/external/folly/folly/docs/GroupVarint.md +46 -0
- package/external/folly/folly/docs/Histogram.md +104 -0
- package/external/folly/folly/docs/MapUtils.md +80 -0
- package/external/folly/folly/docs/Overview.md +263 -0
- package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
- package/external/folly/folly/docs/Poly.md +500 -0
- package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
- package/external/folly/folly/docs/Rcu.md +218 -0
- package/external/folly/folly/docs/SmallLocks.md +24 -0
- package/external/folly/folly/docs/Synchronized.md +793 -0
- package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
- package/external/folly/folly/docs/ThreadLocal.md +105 -0
- package/external/folly/folly/docs/Traits.md +161 -0
- package/external/folly/folly/docs/small_vector.md +64 -0
- package/external/folly/folly/docs/style.css +23 -0
- package/external/folly/folly/dynamic-inl.h +17 -0
- package/external/folly/folly/dynamic.h +17 -0
- package/external/folly/folly/folly_extended_library.bzl +28 -0
- package/external/folly/folly/functional/ApplyTuple.h +204 -0
- package/external/folly/folly/functional/BUCK +57 -0
- package/external/folly/folly/functional/Invoke.h +880 -0
- package/external/folly/folly/functional/Partial.h +130 -0
- package/external/folly/folly/functional/protocol.h +203 -0
- package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
- package/external/folly/folly/functional/test/BUCK +57 -0
- package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
- package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
- package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
- package/external/folly/folly/functional/test/traits_test.cpp +551 -0
- package/external/folly/folly/functional/traits.h +675 -0
- package/external/folly/folly/hash/BUCK +86 -0
- package/external/folly/folly/hash/Checksum.cpp +275 -0
- package/external/folly/folly/hash/Checksum.h +94 -0
- package/external/folly/folly/hash/FarmHash.h +46 -0
- package/external/folly/folly/hash/Hash.h +1045 -0
- package/external/folly/folly/hash/MurmurHash.h +86 -0
- package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
- package/external/folly/folly/hash/SpookyHashV1.h +307 -0
- package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
- package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/hash/SpookyHashV2.h +6 -1
- package/external/folly/folly/hash/detail/BUCK +26 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
- package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
- package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
- package/external/folly/folly/hash/test/BUCK +132 -0
- package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
- package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
- package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
- package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
- package/external/folly/folly/hash/test/HashTest.cpp +997 -0
- package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
- package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
- package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
- package/external/folly/folly/hash/test/traits_test.cpp +69 -0
- package/external/folly/folly/hash/traits.h +115 -0
- package/external/folly/folly/json/BUCK +155 -0
- package/external/folly/folly/json/DynamicConverter.h +464 -0
- package/external/folly/folly/json/DynamicParser-inl.h +316 -0
- package/external/folly/folly/json/DynamicParser.cpp +198 -0
- package/external/folly/folly/json/DynamicParser.h +394 -0
- package/external/folly/folly/json/JSONSchema.cpp +1030 -0
- package/external/folly/folly/json/JSONSchema.h +73 -0
- package/external/folly/folly/json/JsonMockUtil.h +73 -0
- package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
- package/external/folly/folly/json/JsonTestUtil.h +88 -0
- package/external/folly/folly/json/bser/BUCK +24 -0
- package/external/folly/folly/json/bser/Bser.h +107 -0
- package/external/folly/folly/json/bser/Dump.cpp +253 -0
- package/external/folly/folly/json/bser/Load.cpp +246 -0
- package/external/folly/folly/json/bser/test/BUCK +14 -0
- package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
- package/external/folly/folly/json/dynamic.cpp +552 -0
- package/external/folly/folly/json/dynamic.h +1346 -0
- package/external/folly/folly/json/json.h +238 -0
- package/external/folly/folly/json/json_patch.cpp +325 -0
- package/external/folly/folly/json/json_patch.h +126 -0
- package/external/folly/folly/json/json_pointer.cpp +114 -0
- package/external/folly/folly/json/json_pointer.h +87 -0
- package/external/folly/folly/json/test/BUCK +147 -0
- package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
- package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
- package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
- package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
- package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
- package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
- package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
- package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
- package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
- package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
- package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
- package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
- package/external/folly/folly/json/tool/BUCK +13 -0
- package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
- package/external/folly/folly/json.h +17 -0
- package/external/folly/folly/json_patch.h +17 -0
- package/external/folly/folly/json_pointer.h +17 -0
- package/external/folly/folly/lang/Access.h +29 -0
- package/external/folly/folly/lang/Align.h +240 -0
- package/external/folly/folly/lang/Aligned.h +92 -0
- package/external/folly/folly/lang/Assume.h +82 -0
- package/external/folly/folly/lang/BUCK +287 -0
- package/external/folly/folly/lang/Badge.h +108 -0
- package/external/folly/folly/lang/Bits.h +570 -0
- package/external/folly/folly/lang/BitsClass.h +312 -0
- package/external/folly/folly/lang/Builtin.h +74 -0
- package/external/folly/folly/lang/CArray.h +34 -0
- package/external/folly/folly/lang/CString.cpp +86 -0
- package/external/folly/folly/lang/CString.h +55 -0
- package/external/folly/folly/lang/Cast.h +51 -0
- package/external/folly/folly/lang/CheckedMath.h +253 -0
- package/external/folly/folly/lang/CustomizationPoint.h +58 -0
- package/external/folly/folly/lang/Exception.cpp +822 -0
- package/external/folly/folly/lang/Exception.h +716 -0
- package/external/folly/folly/lang/Extern.h +55 -0
- package/external/folly/folly/lang/Hint-inl.h +144 -0
- package/external/folly/folly/lang/Hint.h +238 -0
- package/external/folly/folly/lang/Keep.h +98 -0
- package/external/folly/folly/lang/New.h +124 -0
- package/external/folly/folly/lang/Ordering.h +140 -0
- package/external/folly/folly/lang/Pretty.h +159 -0
- package/external/folly/folly/lang/PropagateConst.h +413 -0
- package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
- package/external/folly/folly/lang/SafeAssert.cpp +589 -0
- package/external/folly/folly/lang/StaticConst.h +33 -0
- package/external/folly/folly/lang/Thunk.h +100 -0
- package/external/folly/folly/lang/TypeInfo.h +58 -0
- package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
- package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
- package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
- package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
- package/external/folly/folly/lang/test/BUCK +258 -0
- package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
- package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
- package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
- package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
- package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
- package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
- package/external/folly/folly/lang/test/CastTest.cpp +47 -0
- package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
- package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
- package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
- package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
- package/external/folly/folly/lang/test/HintTest.cpp +100 -0
- package/external/folly/folly/lang/test/NewTest.cpp +38 -0
- package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
- package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
- package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
- package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
- package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
- package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
- package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
- package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
- package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
- package/external/folly/folly/memcpy.S +292 -0
- package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
- package/external/folly/folly/memory/Arena-inl.h +83 -0
- package/external/folly/folly/memory/Arena.h +325 -0
- package/external/folly/folly/memory/BUCK +191 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
- package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
- package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
- package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
- package/external/folly/folly/memory/MallctlHelper.h +167 -0
- package/external/folly/folly/memory/Malloc.h +551 -0
- package/external/folly/folly/memory/MemoryResource.h +57 -0
- package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
- package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
- package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
- package/external/folly/folly/memory/SanitizeAddress.h +117 -0
- package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
- package/external/folly/folly/memory/SanitizeLeak.h +108 -0
- package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
- package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
- package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
- package/external/folly/folly/memory/detail/BUCK +10 -0
- package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
- package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
- package/external/folly/folly/memory/not_null-inl.h +522 -0
- package/external/folly/folly/memory/not_null.h +449 -0
- package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
- package/external/folly/folly/memory/test/BUCK +146 -0
- package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
- package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
- package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
- package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
- package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
- package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
- package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
- package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
- package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
- package/external/folly/folly/memset.S +245 -0
- package/external/folly/folly/memset_select_aarch64.cpp +72 -0
- package/external/folly/folly/portability/Asm.h +50 -0
- package/external/folly/folly/portability/Atomic.h +31 -0
- package/external/folly/folly/portability/BUCK +456 -0
- package/external/folly/folly/portability/Builtins.cpp +31 -0
- package/external/folly/folly/portability/Builtins.h +161 -0
- package/external/folly/folly/portability/Config.h +43 -0
- package/external/folly/folly/portability/Constexpr.h +145 -0
- package/external/folly/folly/portability/Dirent.cpp +140 -0
- package/external/folly/folly/portability/Dirent.h +41 -0
- package/external/folly/folly/portability/Event.h +44 -0
- package/external/folly/folly/portability/Fcntl.cpp +120 -0
- package/external/folly/folly/portability/Fcntl.h +67 -0
- package/external/folly/folly/portability/Filesystem.cpp +67 -0
- package/external/folly/folly/portability/Filesystem.h +114 -0
- package/external/folly/folly/portability/FmtCompile.h +40 -0
- package/external/folly/folly/portability/GFlags.h +139 -0
- package/external/folly/folly/portability/GMock.h +35 -0
- package/external/folly/folly/portability/GTest.h +35 -0
- package/external/folly/folly/portability/IOVec.h +34 -0
- package/external/folly/folly/portability/Libgen.cpp +59 -0
- package/external/folly/folly/portability/Libgen.h +29 -0
- package/external/folly/folly/portability/Libunwind.h +21 -0
- package/external/folly/folly/portability/Malloc.cpp +31 -0
- package/external/folly/folly/portability/Malloc.h +53 -0
- package/external/folly/folly/portability/Math.h +90 -0
- package/external/folly/folly/portability/Memory.h +26 -0
- package/external/folly/folly/portability/OpenSSL.cpp +17 -0
- package/external/folly/folly/portability/OpenSSL.h +102 -0
- package/external/folly/folly/portability/PThread.cpp +697 -0
- package/external/folly/folly/portability/PThread.h +148 -0
- package/external/folly/folly/portability/README.md +21 -0
- package/external/folly/folly/portability/Sched.cpp +41 -0
- package/external/folly/folly/portability/Sched.h +45 -0
- package/external/folly/folly/portability/Sockets.cpp +245 -0
- package/external/folly/folly/portability/Sockets.h +155 -0
- package/external/folly/folly/portability/SourceLocation.h +49 -0
- package/external/folly/folly/portability/Stdio.cpp +77 -0
- package/external/folly/folly/portability/Stdio.h +32 -0
- package/external/folly/folly/portability/Stdlib.cpp +172 -0
- package/external/folly/folly/portability/Stdlib.h +64 -0
- package/external/folly/folly/portability/String.cpp +53 -0
- package/external/folly/folly/portability/String.h +39 -0
- package/external/folly/folly/portability/SysFile.cpp +46 -0
- package/external/folly/folly/portability/SysFile.h +27 -0
- package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
- package/external/folly/folly/portability/SysMembarrier.h +26 -0
- package/external/folly/folly/portability/SysMman.cpp +242 -0
- package/external/folly/folly/portability/SysMman.h +68 -0
- package/external/folly/folly/portability/SysResource.cpp +108 -0
- package/external/folly/folly/portability/SysResource.h +71 -0
- package/external/folly/folly/portability/SysStat.cpp +66 -0
- package/external/folly/folly/portability/SysStat.h +52 -0
- package/external/folly/folly/portability/SysSyscall.h +73 -0
- package/external/folly/folly/portability/SysTime.cpp +62 -0
- package/external/folly/folly/portability/SysTime.h +50 -0
- package/external/folly/folly/portability/SysTypes.h +44 -0
- package/external/folly/folly/portability/SysUio.cpp +179 -0
- package/external/folly/folly/portability/SysUio.h +51 -0
- package/external/folly/folly/portability/Syslog.h +39 -0
- package/external/folly/folly/portability/Time.cpp +357 -0
- package/external/folly/folly/portability/Time.h +74 -0
- package/external/folly/folly/portability/Unistd.h +111 -0
- package/external/folly/folly/portability/Windows.h +108 -0
- package/external/folly/folly/portability/openat2.c +30 -0
- package/external/folly/folly/portability/openat2.h +39 -0
- package/external/folly/folly/portability/test/BUCK +59 -0
- package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
- package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
- package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
- package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
- package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
- package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
- package/external/folly/folly/small_vector.h +17 -0
- package/external/folly/folly/somerge_defs.bzl +399 -0
- package/external/folly/folly/sorted_vector_types.h +17 -0
- package/external/folly/folly/stop_watch.h +317 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
- package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
- package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
- package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
- package/external/folly/folly/synchronization/AtomicRef.h +181 -0
- package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
- package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
- package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
- package/external/folly/folly/synchronization/BUCK +418 -0
- package/external/folly/folly/synchronization/Baton.h +419 -0
- package/external/folly/folly/synchronization/CallOnce.h +263 -0
- package/external/folly/folly/synchronization/DelayedInit.h +179 -0
- package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
- package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
- package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
- package/external/folly/folly/synchronization/EventCount.h +200 -0
- package/external/folly/folly/synchronization/FlatCombining.h +629 -0
- package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
- package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
- package/external/folly/folly/synchronization/Hazptr.h +209 -0
- package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
- package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
- package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
- package/external/folly/folly/synchronization/HazptrObj.h +533 -0
- package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
- package/external/folly/folly/synchronization/HazptrRec.h +68 -0
- package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
- package/external/folly/folly/synchronization/Latch.h +160 -0
- package/external/folly/folly/synchronization/LifoSem.h +767 -0
- package/external/folly/folly/synchronization/Lock.h +887 -0
- package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
- package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
- package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
- package/external/folly/folly/synchronization/ParkingLot.h +330 -0
- package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
- package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
- package/external/folly/folly/synchronization/Rcu.cpp +26 -0
- package/external/folly/folly/synchronization/Rcu.h +553 -0
- package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
- package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
- package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
- package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
- package/external/folly/folly/synchronization/SmallLocks.h +36 -0
- package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
- package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
- package/external/folly/folly/synchronization/WaitOptions.h +75 -0
- package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
- package/external/folly/folly/synchronization/detail/BUCK +104 -0
- package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
- package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
- package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
- package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
- package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
- package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
- package/external/folly/folly/synchronization/detail/Spin.h +96 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
- package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
- package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
- package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
- package/external/folly/folly/synchronization/example/BUCK +27 -0
- package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
- package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
- package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
- package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
- package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
- package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
- package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
- package/external/folly/folly/synchronization/test/BUCK +495 -0
- package/external/folly/folly/synchronization/test/Barrier.h +52 -0
- package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
- package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
- package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
- package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
- package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
- package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
- package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
- package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
- package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
- package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
- package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
- package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
- package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
- package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
- package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
- package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
- package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
- package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
- package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
- package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
- package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
- package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
- package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
- package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
- package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
- package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
- package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
- package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
- package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
- package/external/folly/folly/system/AtFork.cpp +205 -0
- package/external/folly/folly/system/AtFork.h +116 -0
- package/external/folly/folly/system/AuxVector.h +198 -0
- package/external/folly/folly/system/BUCK +144 -0
- package/external/folly/folly/system/EnvUtil.cpp +93 -0
- package/external/folly/folly/system/EnvUtil.h +113 -0
- package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
- package/external/folly/folly/system/HardwareConcurrency.h +23 -0
- package/external/folly/folly/system/MemoryMapping.cpp +477 -0
- package/external/folly/folly/system/MemoryMapping.h +287 -0
- package/external/folly/folly/system/Pid.cpp +87 -0
- package/external/folly/folly/system/Pid.h +34 -0
- package/external/folly/folly/system/Shell.cpp +33 -0
- package/external/folly/folly/system/Shell.h +93 -0
- package/external/folly/folly/system/ThreadId.cpp +89 -0
- package/external/folly/folly/system/ThreadId.h +62 -0
- package/external/folly/folly/system/ThreadName.cpp +330 -0
- package/external/folly/folly/system/ThreadName.h +72 -0
- package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
- package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
- package/external/folly/folly/system/test/BUCK +120 -0
- package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
- package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
- package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
- package/external/folly/folly/system/test/PidTest.cpp +46 -0
- package/external/folly/folly/system/test/ShellTest.cpp +66 -0
- package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
- package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
- package/external/folly/folly.vcxitems +164 -0
- package/external/folly/static/logo.svg +1 -0
- package/external/folly/sync-config.json +8 -0
- package/package.json +3 -3
- package/template/cpp-app/proj/MyApp.sln +0 -33
- package/template/cpp-lib/proj/MyLib.sln +0 -33
- package/template/cs-app/proj/MyApp.sln +0 -33
- package/template/cs-lib/proj/MyLib.sln +0 -33
- package/templates/cpp-app/windows/MyApp.sln +0 -33
- package/templates/cpp-lib/example/metro.config.js +31 -6
- package/templates/cpp-lib/windows/MyLib.sln +0 -33
- package/Folly/Folly.vcxproj +0 -383
- package/Folly/Folly.vcxproj.filters +0 -558
- package/Folly/Folly.win32.vcxproj +0 -11
- package/Folly/packages.lock.win32.json +0 -20
- package/Scripts/Warm-RnwFeedCache.ps1 +0 -413
- package/fmt/fmt.vcxproj +0 -163
- package/fmt/fmt.vcxproj.filters +0 -59
- package/fmt/fmt.win32.vcxproj +0 -10
- package/fmt/pch.cpp +0 -4
- package/fmt/pch.h +0 -2
- /package/{Folly → external/folly}/Folly.natvis +0 -0
- /package/{Folly → external/folly}/cgmanifest.json +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
- /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
|