react-native-windows 0.84.0-preview.9 → 0.84.1
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/Common/unicode.cpp +36 -0
- package/Common/unicode.h +8 -0
- package/Directory.Build.props +2 -17
- package/Folly/ThreadNameStub.cpp +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +5 -0
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +91 -23
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +11 -0
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +6 -4
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +28 -6
- package/Microsoft.ReactNative/Fabric/Composition/TextDrawing.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +80 -0
- package/Microsoft.ReactNative/Fabric/Composition/TooltipService.h +17 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/WindowsTextLayoutManager.cpp +1 -1
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +4 -9
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +33 -25
- package/Microsoft.ReactNative/Utils/LocalBundleReader.h +5 -3
- package/Microsoft.ReactNative/Utils/UwpScriptStore.cpp +2 -2
- package/Microsoft.ReactNative/Utils/UwpScriptStore.h +3 -2
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +3 -3
- package/Microsoft.ReactNative.Managed.CodeGen/Microsoft.ReactNative.Managed.CodeGen.csproj +10 -10
- package/Microsoft.ReactNative.Managed.CodeGen/Properties/PublishProfiles/DeployAsTool-Debug.pubxml +1 -1
- package/Microsoft.ReactNative.Managed.CodeGen/Properties/PublishProfiles/DeployAsTool-Release.pubxml +1 -1
- package/PropertySheets/CIBuildOptimizations.props +2 -2
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/NuGet.LockFile.props +10 -1
- package/PropertySheets/React.Cpp.props +7 -6
- package/PropertySheets/WinUI.props +2 -2
- package/ReactCommon/ReactCommon.vcxproj +0 -5
- package/Scripts/JustMyXaml.ps1 +8 -8
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +61 -6
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/UnitTest.ps1 +3 -1
- package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
- package/Scripts/creaternwapp.cmd +5 -8
- package/Scripts/creaternwlib.cmd +10 -23
- package/Scripts/rnw-dependencies.ps1 +15 -16
- package/Shared/DevSupportManager.cpp +55 -48
- package/Shared/DevSupportManager.h +0 -1
- package/Shared/Modules/IWebSocketModuleContentHandler.h +15 -0
- package/Shared/Modules/WebSocketModule.cpp +8 -3
- package/Shared/Networking/DefaultBlobResource.cpp +37 -0
- package/Shared/Networking/DefaultBlobResource.h +12 -0
- package/Shared/Networking/WinRTWebSocketResource.h +5 -1
- 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/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/external/fmt/include/fmt/base.h +3077 -0
- 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/external/folly/folly/hash/SpookyHashV2.h +339 -0
- 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/just-task.js +13 -2
- package/package.json +7 -7
- package/template/cpp-lib/proj/MyLib.sln +0 -33
- package/template/cs-lib/proj/MyLib.sln +0 -33
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +1 -1
- package/templates/cpp-app/windows/MyApp.sln +0 -33
- package/templates/cpp-lib/example/metro.config.js +30 -4
- package/templates/cpp-lib/windows/MyLib/MyLib.vcxproj +1 -1
- package/templates/cpp-lib/windows/MyLib.sln +0 -33
- package/Folly/Folly.vcxproj +0 -378
- package/Folly/Folly.vcxproj.filters +0 -558
- package/fmt/fmt.vcxproj +0 -153
- package/fmt/fmt.vcxproj.filters +0 -59
- package/fmt/pch.cpp +0 -4
- package/fmt/pch.h +0 -2
- /package/{fmt → external/fmt}/cgmanifest.json +0 -0
- /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,336 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#pragma once
|
|
18
|
+
|
|
19
|
+
#include <atomic>
|
|
20
|
+
#include <cstdint>
|
|
21
|
+
|
|
22
|
+
namespace folly {
|
|
23
|
+
|
|
24
|
+
// relaxed_atomic
|
|
25
|
+
//
|
|
26
|
+
// Like atomic, but without the std::memory_order parameters on any member
|
|
27
|
+
// functions. All operations use std::memory_order_relaxed, rather than the
|
|
28
|
+
// std::memory_order_seq_cst, which is the default memory order in std::atomic.
|
|
29
|
+
//
|
|
30
|
+
// Useful for values which may be loaded and stored concurrently, such as
|
|
31
|
+
// counters, but which do not guard any associated data.
|
|
32
|
+
template <typename T>
|
|
33
|
+
struct relaxed_atomic;
|
|
34
|
+
|
|
35
|
+
namespace detail {
|
|
36
|
+
|
|
37
|
+
template <typename T>
|
|
38
|
+
struct relaxed_atomic_base : protected std::atomic<T> {
|
|
39
|
+
private:
|
|
40
|
+
using atomic = std::atomic<T>;
|
|
41
|
+
|
|
42
|
+
public:
|
|
43
|
+
using value_type = T;
|
|
44
|
+
|
|
45
|
+
using atomic::atomic;
|
|
46
|
+
|
|
47
|
+
T operator=(T desired) noexcept {
|
|
48
|
+
store(desired);
|
|
49
|
+
return desired;
|
|
50
|
+
}
|
|
51
|
+
T operator=(T desired) volatile noexcept {
|
|
52
|
+
store(desired);
|
|
53
|
+
return desired;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
bool is_lock_free() const noexcept { return atomic::is_lock_free(); }
|
|
57
|
+
bool is_lock_free() const volatile noexcept { return atomic::is_lock_free(); }
|
|
58
|
+
|
|
59
|
+
void store(T desired) noexcept {
|
|
60
|
+
atomic::store(desired, std::memory_order_relaxed);
|
|
61
|
+
}
|
|
62
|
+
void store(T desired) volatile noexcept {
|
|
63
|
+
atomic::store(desired, std::memory_order_relaxed);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
T load() const noexcept { return atomic::load(std::memory_order_relaxed); }
|
|
67
|
+
T load() const volatile noexcept {
|
|
68
|
+
return atomic::load(std::memory_order_relaxed);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
operator T() const noexcept { return load(); }
|
|
72
|
+
operator T() const volatile noexcept { return load(); }
|
|
73
|
+
|
|
74
|
+
T exchange(T desired) noexcept {
|
|
75
|
+
return atomic::exchange(desired, std::memory_order_relaxed);
|
|
76
|
+
}
|
|
77
|
+
T exchange(T desired) volatile noexcept {
|
|
78
|
+
return atomic::exchange(desired, std::memory_order_relaxed);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
bool compare_exchange_weak(T& expected, T desired) noexcept {
|
|
82
|
+
return atomic::compare_exchange_weak(
|
|
83
|
+
expected, desired, std::memory_order_relaxed);
|
|
84
|
+
}
|
|
85
|
+
bool compare_exchange_weak(T& expected, T desired) volatile noexcept {
|
|
86
|
+
return atomic::compare_exchange_weak(
|
|
87
|
+
expected, desired, std::memory_order_relaxed);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
bool compare_exchange_strong(T& expected, T desired) noexcept {
|
|
91
|
+
return atomic::compare_exchange_strong(
|
|
92
|
+
expected, desired, std::memory_order_relaxed);
|
|
93
|
+
}
|
|
94
|
+
bool compare_exchange_strong(T& expected, T desired) volatile noexcept {
|
|
95
|
+
return atomic::compare_exchange_strong(
|
|
96
|
+
expected, desired, std::memory_order_relaxed);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
template <typename T>
|
|
101
|
+
struct relaxed_atomic_integral_base : private relaxed_atomic_base<T> {
|
|
102
|
+
private:
|
|
103
|
+
using atomic = std::atomic<T>;
|
|
104
|
+
using base = relaxed_atomic_base<T>;
|
|
105
|
+
|
|
106
|
+
public:
|
|
107
|
+
using typename base::value_type;
|
|
108
|
+
|
|
109
|
+
using base::relaxed_atomic_base;
|
|
110
|
+
using base::operator=;
|
|
111
|
+
using base::operator T;
|
|
112
|
+
using base::compare_exchange_strong;
|
|
113
|
+
using base::compare_exchange_weak;
|
|
114
|
+
using base::exchange;
|
|
115
|
+
using base::is_lock_free;
|
|
116
|
+
using base::load;
|
|
117
|
+
using base::store;
|
|
118
|
+
|
|
119
|
+
T fetch_add(T arg) noexcept {
|
|
120
|
+
return atomic::fetch_add(arg, std::memory_order_relaxed);
|
|
121
|
+
}
|
|
122
|
+
T fetch_add(T arg) volatile noexcept {
|
|
123
|
+
return atomic::fetch_add(arg, std::memory_order_relaxed);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
T fetch_sub(T arg) noexcept {
|
|
127
|
+
return atomic::fetch_sub(arg, std::memory_order_relaxed);
|
|
128
|
+
}
|
|
129
|
+
T fetch_sub(T arg) volatile noexcept {
|
|
130
|
+
return atomic::fetch_sub(arg, std::memory_order_relaxed);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
T fetch_and(T arg) noexcept {
|
|
134
|
+
return atomic::fetch_and(arg, std::memory_order_relaxed);
|
|
135
|
+
}
|
|
136
|
+
T fetch_and(T arg) volatile noexcept {
|
|
137
|
+
return atomic::fetch_and(arg, std::memory_order_relaxed);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
T fetch_or(T arg) noexcept {
|
|
141
|
+
return atomic::fetch_or(arg, std::memory_order_relaxed);
|
|
142
|
+
}
|
|
143
|
+
T fetch_or(T arg) volatile noexcept {
|
|
144
|
+
return atomic::fetch_or(arg, std::memory_order_relaxed);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
T fetch_xor(T arg) noexcept {
|
|
148
|
+
return atomic::fetch_xor(arg, std::memory_order_relaxed);
|
|
149
|
+
}
|
|
150
|
+
T fetch_xor(T arg) volatile noexcept {
|
|
151
|
+
return atomic::fetch_xor(arg, std::memory_order_relaxed);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
T operator++() noexcept { return fetch_add(1) + 1; }
|
|
155
|
+
T operator++() volatile noexcept { return fetch_add(1) + 1; }
|
|
156
|
+
|
|
157
|
+
T operator++(int) noexcept { return fetch_add(1); }
|
|
158
|
+
T operator++(int) volatile noexcept { return fetch_add(1); }
|
|
159
|
+
|
|
160
|
+
T operator--() noexcept { return fetch_sub(1) - 1; }
|
|
161
|
+
T operator--() volatile noexcept { return fetch_sub(1) - 1; }
|
|
162
|
+
|
|
163
|
+
T operator--(int) noexcept { return fetch_sub(1); }
|
|
164
|
+
T operator--(int) volatile noexcept { return fetch_sub(1); }
|
|
165
|
+
|
|
166
|
+
T operator+=(T arg) noexcept { return fetch_add(arg) + arg; }
|
|
167
|
+
T operator+=(T arg) volatile noexcept { return fetch_add(arg) + arg; }
|
|
168
|
+
|
|
169
|
+
T operator-=(T arg) noexcept { return fetch_sub(arg) - arg; }
|
|
170
|
+
T operator-=(T arg) volatile noexcept { return fetch_sub(arg) - arg; }
|
|
171
|
+
|
|
172
|
+
T operator&=(T arg) noexcept { return fetch_and(arg) & arg; }
|
|
173
|
+
T operator&=(T arg) volatile noexcept { return fetch_and(arg) & arg; }
|
|
174
|
+
|
|
175
|
+
T operator|=(T arg) noexcept { return fetch_or(arg) | arg; }
|
|
176
|
+
T operator|=(T arg) volatile noexcept { return fetch_or(arg) | arg; }
|
|
177
|
+
|
|
178
|
+
T operator^=(T arg) noexcept { return fetch_xor(arg) ^ arg; }
|
|
179
|
+
T operator^=(T arg) volatile noexcept { return fetch_xor(arg) ^ arg; }
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
} // namespace detail
|
|
183
|
+
|
|
184
|
+
template <>
|
|
185
|
+
struct relaxed_atomic<bool> : detail::relaxed_atomic_base<bool> {
|
|
186
|
+
private:
|
|
187
|
+
using base = detail::relaxed_atomic_base<bool>;
|
|
188
|
+
|
|
189
|
+
public:
|
|
190
|
+
using typename base::value_type;
|
|
191
|
+
|
|
192
|
+
using base::relaxed_atomic_base;
|
|
193
|
+
using base::operator=;
|
|
194
|
+
using base::operator bool;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
using relaxed_atomic_bool = relaxed_atomic<bool>;
|
|
198
|
+
|
|
199
|
+
template <typename T>
|
|
200
|
+
struct relaxed_atomic : detail::relaxed_atomic_base<T> {
|
|
201
|
+
private:
|
|
202
|
+
using base = detail::relaxed_atomic_base<T>;
|
|
203
|
+
|
|
204
|
+
public:
|
|
205
|
+
using typename base::value_type;
|
|
206
|
+
|
|
207
|
+
using base::relaxed_atomic_base;
|
|
208
|
+
using base::operator=;
|
|
209
|
+
using base::operator T;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
template <typename T>
|
|
213
|
+
struct relaxed_atomic<T*> : detail::relaxed_atomic_base<T*> {
|
|
214
|
+
private:
|
|
215
|
+
using atomic = std::atomic<T*>;
|
|
216
|
+
using base = detail::relaxed_atomic_base<T*>;
|
|
217
|
+
|
|
218
|
+
public:
|
|
219
|
+
using typename base::value_type;
|
|
220
|
+
|
|
221
|
+
using detail::relaxed_atomic_base<T*>::relaxed_atomic_base;
|
|
222
|
+
using base::operator=;
|
|
223
|
+
using base::operator T*;
|
|
224
|
+
|
|
225
|
+
T* fetch_add(std::ptrdiff_t arg) noexcept {
|
|
226
|
+
return atomic::fetch_add(arg, std::memory_order_relaxed);
|
|
227
|
+
}
|
|
228
|
+
T* fetch_add(std::ptrdiff_t arg) volatile noexcept {
|
|
229
|
+
return atomic::fetch_add(arg, std::memory_order_relaxed);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
T* fetch_sub(std::ptrdiff_t arg) noexcept {
|
|
233
|
+
return atomic::fetch_sub(arg, std::memory_order_relaxed);
|
|
234
|
+
}
|
|
235
|
+
T* fetch_sub(std::ptrdiff_t arg) volatile noexcept {
|
|
236
|
+
return atomic::fetch_sub(arg, std::memory_order_relaxed);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
T* operator++() noexcept { return fetch_add(1) + 1; }
|
|
240
|
+
T* operator++() volatile noexcept { return fetch_add(1) + 1; }
|
|
241
|
+
|
|
242
|
+
T* operator++(int) noexcept { return fetch_add(1); }
|
|
243
|
+
T* operator++(int) volatile noexcept { return fetch_add(1); }
|
|
244
|
+
|
|
245
|
+
T* operator--() noexcept { return fetch_sub(1) - 1; }
|
|
246
|
+
T* operator--() volatile noexcept { return fetch_sub(1) - 1; }
|
|
247
|
+
|
|
248
|
+
T* operator--(int) noexcept { return fetch_sub(1); }
|
|
249
|
+
T* operator--(int) volatile noexcept { return fetch_sub(1); }
|
|
250
|
+
|
|
251
|
+
T* operator+=(std::ptrdiff_t arg) noexcept { return fetch_add(arg) + arg; }
|
|
252
|
+
T* operator+=(std::ptrdiff_t arg) volatile noexcept {
|
|
253
|
+
return fetch_add(arg) + arg;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
T* operator-=(std::ptrdiff_t arg) noexcept { return fetch_sub(arg) - arg; }
|
|
257
|
+
T* operator-=(std::ptrdiff_t arg) volatile noexcept {
|
|
258
|
+
return fetch_sub(arg) - arg;
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
template <typename T>
|
|
263
|
+
relaxed_atomic(T) -> relaxed_atomic<T>;
|
|
264
|
+
|
|
265
|
+
#define FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(type) \
|
|
266
|
+
template <> \
|
|
267
|
+
struct relaxed_atomic<type> : detail::relaxed_atomic_integral_base<type> { \
|
|
268
|
+
private: \
|
|
269
|
+
using base = detail::relaxed_atomic_integral_base<type>; \
|
|
270
|
+
\
|
|
271
|
+
public: \
|
|
272
|
+
using base::relaxed_atomic_integral_base; \
|
|
273
|
+
using base::operator=; \
|
|
274
|
+
using base::operator type; \
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(char)
|
|
278
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(signed char)
|
|
279
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(unsigned char)
|
|
280
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(signed short)
|
|
281
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(unsigned short)
|
|
282
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(signed int)
|
|
283
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(unsigned int)
|
|
284
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(signed long)
|
|
285
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(unsigned long)
|
|
286
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(signed long long)
|
|
287
|
+
FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION(unsigned long long)
|
|
288
|
+
|
|
289
|
+
#undef FOLLY_RELAXED_ATOMIC_DEFINE_INTEGRAL_SPECIALIZATION
|
|
290
|
+
|
|
291
|
+
using relaxed_atomic_char = relaxed_atomic<char>;
|
|
292
|
+
using relaxed_atomic_schar = relaxed_atomic<signed char>;
|
|
293
|
+
using relaxed_atomic_uchar = relaxed_atomic<unsigned char>;
|
|
294
|
+
using relaxed_atomic_short = relaxed_atomic<short>;
|
|
295
|
+
using relaxed_atomic_ushort = relaxed_atomic<unsigned short>;
|
|
296
|
+
using relaxed_atomic_int = relaxed_atomic<int>;
|
|
297
|
+
using relaxed_atomic_uint = relaxed_atomic<unsigned int>;
|
|
298
|
+
using relaxed_atomic_long = relaxed_atomic<long>;
|
|
299
|
+
using relaxed_atomic_ulong = relaxed_atomic<unsigned long>;
|
|
300
|
+
using relaxed_atomic_llong = relaxed_atomic<long long>;
|
|
301
|
+
using relaxed_atomic_ullong = relaxed_atomic<unsigned long long>;
|
|
302
|
+
using relaxed_atomic_char16_t = relaxed_atomic<char16_t>;
|
|
303
|
+
using relaxed_atomic_char32_t = relaxed_atomic<char32_t>;
|
|
304
|
+
using relaxed_atomic_wchar_t = relaxed_atomic<wchar_t>;
|
|
305
|
+
using relaxed_atomic_int8_t = relaxed_atomic<std::int8_t>;
|
|
306
|
+
using relaxed_atomic_uint8_t = relaxed_atomic<std::uint8_t>;
|
|
307
|
+
using relaxed_atomic_int16_t = relaxed_atomic<std::int16_t>;
|
|
308
|
+
using relaxed_atomic_uint16_t = relaxed_atomic<std::uint16_t>;
|
|
309
|
+
using relaxed_atomic_int32_t = relaxed_atomic<std::int32_t>;
|
|
310
|
+
using relaxed_atomic_uint32_t = relaxed_atomic<std::uint32_t>;
|
|
311
|
+
using relaxed_atomic_int64_t = relaxed_atomic<std::int64_t>;
|
|
312
|
+
using relaxed_atomic_uint64_t = relaxed_atomic<std::uint64_t>;
|
|
313
|
+
using relaxed_atomic_int_least8_t = relaxed_atomic<std::int_least8_t>;
|
|
314
|
+
using relaxed_atomic_uint_least8_t = relaxed_atomic<std::uint_least8_t>;
|
|
315
|
+
using relaxed_atomic_int_least16_t = relaxed_atomic<std::int_least16_t>;
|
|
316
|
+
using relaxed_atomic_uint_least16_t = relaxed_atomic<std::uint_least16_t>;
|
|
317
|
+
using relaxed_atomic_int_least32_t = relaxed_atomic<std::int_least32_t>;
|
|
318
|
+
using relaxed_atomic_uint_least32_t = relaxed_atomic<std::uint_least32_t>;
|
|
319
|
+
using relaxed_atomic_int_least64_t = relaxed_atomic<std::int_least64_t>;
|
|
320
|
+
using relaxed_atomic_uint_least64_t = relaxed_atomic<std::uint_least64_t>;
|
|
321
|
+
using relaxed_atomic_int_fast8_t = relaxed_atomic<std::int_fast8_t>;
|
|
322
|
+
using relaxed_atomic_uint_fast8_t = relaxed_atomic<std::uint_fast8_t>;
|
|
323
|
+
using relaxed_atomic_int_fast16_t = relaxed_atomic<std::int_fast16_t>;
|
|
324
|
+
using relaxed_atomic_uint_fast16_t = relaxed_atomic<std::uint_fast16_t>;
|
|
325
|
+
using relaxed_atomic_int_fast32_t = relaxed_atomic<std::int_fast32_t>;
|
|
326
|
+
using relaxed_atomic_uint_fast32_t = relaxed_atomic<std::uint_fast32_t>;
|
|
327
|
+
using relaxed_atomic_int_fast64_t = relaxed_atomic<std::int_fast64_t>;
|
|
328
|
+
using relaxed_atomic_uint_fast64_t = relaxed_atomic<std::uint_fast64_t>;
|
|
329
|
+
using relaxed_atomic_intptr_t = relaxed_atomic<std::intptr_t>;
|
|
330
|
+
using relaxed_atomic_uintptr_t = relaxed_atomic<std::uintptr_t>;
|
|
331
|
+
using relaxed_atomic_size_t = relaxed_atomic<std::size_t>;
|
|
332
|
+
using relaxed_atomic_ptrdiff_t = relaxed_atomic<std::ptrdiff_t>;
|
|
333
|
+
using relaxed_atomic_intmax_t = relaxed_atomic<std::intmax_t>;
|
|
334
|
+
using relaxed_atomic_uintmax_t = relaxed_atomic<std::uintmax_t>;
|
|
335
|
+
|
|
336
|
+
} // namespace folly
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#include <folly/synchronization/SanitizeThread.h>
|
|
18
|
+
|
|
19
|
+
#include <folly/lang/Extern.h>
|
|
20
|
+
|
|
21
|
+
// abseil uses size_t for size params while other FB code and libraries use
|
|
22
|
+
// long, so it is helpful to keep these declarations out of widely-included
|
|
23
|
+
// header files.
|
|
24
|
+
|
|
25
|
+
extern "C" void AnnotateRWLockCreate(
|
|
26
|
+
char const* f, int l, const volatile void* addr);
|
|
27
|
+
|
|
28
|
+
extern "C" void AnnotateRWLockCreateStatic(
|
|
29
|
+
char const* f, int l, const volatile void* addr);
|
|
30
|
+
|
|
31
|
+
extern "C" void AnnotateRWLockDestroy(
|
|
32
|
+
char const* f, int l, const volatile void* addr);
|
|
33
|
+
|
|
34
|
+
extern "C" void AnnotateRWLockAcquired(
|
|
35
|
+
char const* f, int l, const volatile void* addr, long w);
|
|
36
|
+
|
|
37
|
+
extern "C" void AnnotateRWLockReleased(
|
|
38
|
+
char const* f, int l, const volatile void* addr, long w);
|
|
39
|
+
|
|
40
|
+
extern "C" void AnnotateBenignRaceSized(
|
|
41
|
+
char const* f,
|
|
42
|
+
int l,
|
|
43
|
+
const volatile void* addr,
|
|
44
|
+
long size,
|
|
45
|
+
char const* desc);
|
|
46
|
+
|
|
47
|
+
extern "C" void AnnotateIgnoreReadsBegin(char const* f, int l);
|
|
48
|
+
|
|
49
|
+
extern "C" void AnnotateIgnoreReadsEnd(char const* f, int l);
|
|
50
|
+
|
|
51
|
+
extern "C" void AnnotateIgnoreWritesBegin(char const* f, int l);
|
|
52
|
+
|
|
53
|
+
extern "C" void AnnotateIgnoreWritesEnd(char const* f, int l);
|
|
54
|
+
|
|
55
|
+
extern "C" void AnnotateIgnoreSyncBegin(char const* f, int l);
|
|
56
|
+
|
|
57
|
+
extern "C" void AnnotateIgnoreSyncEnd(char const* f, int l);
|
|
58
|
+
|
|
59
|
+
namespace {
|
|
60
|
+
|
|
61
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
62
|
+
annotate_rwlock_create_access_v, AnnotateRWLockCreate);
|
|
63
|
+
|
|
64
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
65
|
+
annotate_rwlock_create_static_access_v, AnnotateRWLockCreateStatic);
|
|
66
|
+
|
|
67
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
68
|
+
annotate_rwlock_destroy_access_v, AnnotateRWLockDestroy);
|
|
69
|
+
|
|
70
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
71
|
+
annotate_rwlock_acquired_access_v, AnnotateRWLockAcquired);
|
|
72
|
+
|
|
73
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
74
|
+
annotate_rwlock_released_access_v, AnnotateRWLockReleased);
|
|
75
|
+
|
|
76
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
77
|
+
annotate_benign_race_sized_access_v, AnnotateBenignRaceSized);
|
|
78
|
+
|
|
79
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
80
|
+
annotate_ignore_reads_begin_access_v, AnnotateIgnoreReadsBegin);
|
|
81
|
+
|
|
82
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
83
|
+
annotate_ignore_reads_end_access_v, AnnotateIgnoreReadsEnd);
|
|
84
|
+
|
|
85
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
86
|
+
annotate_ignore_writes_begin_access_v, AnnotateIgnoreWritesBegin);
|
|
87
|
+
|
|
88
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
89
|
+
annotate_ignore_writes_end_access_v, AnnotateIgnoreWritesEnd);
|
|
90
|
+
|
|
91
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
92
|
+
annotate_ignore_sync_begin_access_v, AnnotateIgnoreSyncBegin);
|
|
93
|
+
|
|
94
|
+
FOLLY_CREATE_EXTERN_ACCESSOR(
|
|
95
|
+
annotate_ignore_sync_end_access_v, AnnotateIgnoreSyncEnd);
|
|
96
|
+
|
|
97
|
+
} // namespace
|
|
98
|
+
|
|
99
|
+
static constexpr auto const E = folly::kIsSanitizeThread;
|
|
100
|
+
|
|
101
|
+
namespace folly {
|
|
102
|
+
namespace detail {
|
|
103
|
+
|
|
104
|
+
FOLLY_STORAGE_CONSTEXPR annotate_rwlock_cd_t* const annotate_rwlock_create_v =
|
|
105
|
+
annotate_rwlock_create_access_v<E>;
|
|
106
|
+
|
|
107
|
+
FOLLY_STORAGE_CONSTEXPR annotate_rwlock_cd_t* const
|
|
108
|
+
annotate_rwlock_create_static_v = annotate_rwlock_create_static_access_v<E>;
|
|
109
|
+
|
|
110
|
+
FOLLY_STORAGE_CONSTEXPR annotate_rwlock_cd_t* const annotate_rwlock_destroy_v =
|
|
111
|
+
annotate_rwlock_destroy_access_v<E>;
|
|
112
|
+
|
|
113
|
+
FOLLY_STORAGE_CONSTEXPR annotate_rwlock_ar_t* const annotate_rwlock_acquired_v =
|
|
114
|
+
annotate_rwlock_acquired_access_v<E>;
|
|
115
|
+
|
|
116
|
+
FOLLY_STORAGE_CONSTEXPR annotate_rwlock_ar_t* const annotate_rwlock_released_v =
|
|
117
|
+
annotate_rwlock_released_access_v<E>;
|
|
118
|
+
|
|
119
|
+
FOLLY_STORAGE_CONSTEXPR annotate_benign_race_sized_t* const
|
|
120
|
+
annotate_benign_race_sized_v = annotate_benign_race_sized_access_v<E>;
|
|
121
|
+
|
|
122
|
+
FOLLY_STORAGE_CONSTEXPR annotate_ignore_t* const annotate_ignore_reads_begin_v =
|
|
123
|
+
annotate_ignore_reads_begin_access_v<E>;
|
|
124
|
+
|
|
125
|
+
FOLLY_STORAGE_CONSTEXPR annotate_ignore_t* const annotate_ignore_reads_end_v =
|
|
126
|
+
annotate_ignore_reads_end_access_v<E>;
|
|
127
|
+
|
|
128
|
+
FOLLY_STORAGE_CONSTEXPR annotate_ignore_t* const
|
|
129
|
+
annotate_ignore_writes_begin_v = annotate_ignore_writes_begin_access_v<E>;
|
|
130
|
+
|
|
131
|
+
FOLLY_STORAGE_CONSTEXPR annotate_ignore_t* const annotate_ignore_writes_end_v =
|
|
132
|
+
annotate_ignore_writes_end_access_v<E>;
|
|
133
|
+
|
|
134
|
+
FOLLY_STORAGE_CONSTEXPR annotate_ignore_t* const annotate_ignore_sync_begin_v =
|
|
135
|
+
annotate_ignore_sync_begin_access_v<E>;
|
|
136
|
+
|
|
137
|
+
FOLLY_STORAGE_CONSTEXPR annotate_ignore_t* const annotate_ignore_sync_end_v =
|
|
138
|
+
annotate_ignore_sync_end_access_v<E>;
|
|
139
|
+
|
|
140
|
+
} // namespace detail
|
|
141
|
+
} // namespace folly
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#pragma once
|
|
18
|
+
|
|
19
|
+
#include <folly/Portability.h>
|
|
20
|
+
|
|
21
|
+
namespace folly {
|
|
22
|
+
|
|
23
|
+
enum class annotate_rwlock_level : long {
|
|
24
|
+
rdlock = 0,
|
|
25
|
+
wrlock = 1,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
namespace detail {
|
|
29
|
+
|
|
30
|
+
using annotate_rwlock_cd_t = void(char const*, int, void const volatile*);
|
|
31
|
+
using annotate_rwlock_ar_t = void(char const*, int, void const volatile*, long);
|
|
32
|
+
using annotate_benign_race_sized_t =
|
|
33
|
+
void(char const*, int, void const volatile*, long, char const*);
|
|
34
|
+
using annotate_ignore_t = void(char const*, int);
|
|
35
|
+
|
|
36
|
+
extern annotate_rwlock_cd_t* const annotate_rwlock_create_v;
|
|
37
|
+
extern annotate_rwlock_cd_t* const annotate_rwlock_create_static_v;
|
|
38
|
+
extern annotate_rwlock_cd_t* const annotate_rwlock_destroy_v;
|
|
39
|
+
extern annotate_rwlock_ar_t* const annotate_rwlock_acquired_v;
|
|
40
|
+
extern annotate_rwlock_ar_t* const annotate_rwlock_released_v;
|
|
41
|
+
extern annotate_benign_race_sized_t* const annotate_benign_race_sized_v;
|
|
42
|
+
extern annotate_ignore_t* const annotate_ignore_reads_begin_v;
|
|
43
|
+
extern annotate_ignore_t* const annotate_ignore_reads_end_v;
|
|
44
|
+
extern annotate_ignore_t* const annotate_ignore_writes_begin_v;
|
|
45
|
+
extern annotate_ignore_t* const annotate_ignore_writes_end_v;
|
|
46
|
+
extern annotate_ignore_t* const annotate_ignore_sync_begin_v;
|
|
47
|
+
extern annotate_ignore_t* const annotate_ignore_sync_end_v;
|
|
48
|
+
|
|
49
|
+
} // namespace detail
|
|
50
|
+
|
|
51
|
+
FOLLY_ALWAYS_INLINE static void annotate_rwlock_create(
|
|
52
|
+
void const volatile* const addr, char const* const f, int const l) {
|
|
53
|
+
auto fun = detail::annotate_rwlock_create_v;
|
|
54
|
+
return kIsSanitizeThread && fun ? fun(f, l, addr) : void();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
FOLLY_ALWAYS_INLINE static void annotate_rwlock_create_static(
|
|
58
|
+
void const volatile* const addr, char const* const f, int const l) {
|
|
59
|
+
auto fun = detail::annotate_rwlock_create_static_v;
|
|
60
|
+
return kIsSanitizeThread && fun ? fun(f, l, addr) : void();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
FOLLY_ALWAYS_INLINE static void annotate_rwlock_destroy(
|
|
64
|
+
void const volatile* const addr, char const* const f, int const l) {
|
|
65
|
+
auto fun = detail::annotate_rwlock_destroy_v;
|
|
66
|
+
return kIsSanitizeThread && fun ? fun(f, l, addr) : void();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
FOLLY_ALWAYS_INLINE static void annotate_rwlock_acquired(
|
|
70
|
+
void const volatile* const addr,
|
|
71
|
+
annotate_rwlock_level const w,
|
|
72
|
+
char const* const f,
|
|
73
|
+
int const l) {
|
|
74
|
+
auto fun = detail::annotate_rwlock_acquired_v;
|
|
75
|
+
return kIsSanitizeThread && fun ? fun(f, l, addr, long(w)) : void();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
FOLLY_ALWAYS_INLINE static void annotate_rwlock_try_acquired(
|
|
79
|
+
void const volatile* const addr,
|
|
80
|
+
annotate_rwlock_level const w,
|
|
81
|
+
bool const result,
|
|
82
|
+
char const* const f,
|
|
83
|
+
int const l) {
|
|
84
|
+
return result ? annotate_rwlock_acquired(addr, w, f, l) : void();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
FOLLY_ALWAYS_INLINE static void annotate_rwlock_released(
|
|
88
|
+
void const volatile* const addr,
|
|
89
|
+
annotate_rwlock_level const w,
|
|
90
|
+
char const* const f,
|
|
91
|
+
int const l) {
|
|
92
|
+
auto fun = detail::annotate_rwlock_released_v;
|
|
93
|
+
return kIsSanitizeThread && fun ? fun(f, l, addr, long(w)) : void();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
FOLLY_ALWAYS_INLINE static void annotate_benign_race_sized(
|
|
97
|
+
void const volatile* const addr,
|
|
98
|
+
long const size,
|
|
99
|
+
char const* const desc,
|
|
100
|
+
char const* const f,
|
|
101
|
+
int const l) {
|
|
102
|
+
auto fun = detail::annotate_benign_race_sized_v;
|
|
103
|
+
return kIsSanitizeThread && fun ? fun(f, l, addr, size, desc) : void();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
FOLLY_ALWAYS_INLINE static void annotate_ignore_reads_begin(
|
|
107
|
+
char const* const f, int const l) {
|
|
108
|
+
auto fun = detail::annotate_ignore_reads_begin_v;
|
|
109
|
+
return kIsSanitizeThread && fun ? fun(f, l) : void();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
FOLLY_ALWAYS_INLINE static void annotate_ignore_reads_end(
|
|
113
|
+
char const* const f, int const l) {
|
|
114
|
+
auto fun = detail::annotate_ignore_reads_end_v;
|
|
115
|
+
return kIsSanitizeThread && fun ? fun(f, l) : void();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
FOLLY_ALWAYS_INLINE static void annotate_ignore_writes_begin(
|
|
119
|
+
char const* const f, int const l) {
|
|
120
|
+
auto fun = detail::annotate_ignore_writes_begin_v;
|
|
121
|
+
return kIsSanitizeThread && fun ? fun(f, l) : void();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
FOLLY_ALWAYS_INLINE static void annotate_ignore_writes_end(
|
|
125
|
+
char const* const f, int const l) {
|
|
126
|
+
auto fun = detail::annotate_ignore_writes_end_v;
|
|
127
|
+
return kIsSanitizeThread && fun ? fun(f, l) : void();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
FOLLY_ALWAYS_INLINE static void annotate_ignore_sync_begin(
|
|
131
|
+
char const* const f, int const l) {
|
|
132
|
+
auto fun = detail::annotate_ignore_sync_begin_v;
|
|
133
|
+
return kIsSanitizeThread && fun ? fun(f, l) : void();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
FOLLY_ALWAYS_INLINE static void annotate_ignore_sync_end(
|
|
137
|
+
char const* const f, int const l) {
|
|
138
|
+
auto fun = detail::annotate_ignore_sync_end_v;
|
|
139
|
+
return kIsSanitizeThread && fun ? fun(f, l) : void();
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
class annotate_ignore_thread_sanitizer_guard {
|
|
143
|
+
public:
|
|
144
|
+
annotate_ignore_thread_sanitizer_guard(
|
|
145
|
+
char const* const file, int const line) noexcept
|
|
146
|
+
: file_{file}, line_{line} {
|
|
147
|
+
annotate_ignore_reads_begin(file_, line_);
|
|
148
|
+
annotate_ignore_writes_begin(file_, line_);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
annotate_ignore_thread_sanitizer_guard(
|
|
152
|
+
const annotate_ignore_thread_sanitizer_guard&) = delete;
|
|
153
|
+
annotate_ignore_thread_sanitizer_guard& operator=(
|
|
154
|
+
const annotate_ignore_thread_sanitizer_guard&) = delete;
|
|
155
|
+
|
|
156
|
+
~annotate_ignore_thread_sanitizer_guard() {
|
|
157
|
+
annotate_ignore_reads_end(file_, line_);
|
|
158
|
+
annotate_ignore_writes_end(file_, line_);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
private:
|
|
162
|
+
char const* const file_;
|
|
163
|
+
int const line_;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
} // namespace folly
|