react-native-windows 0.81.32 → 0.81.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Directory.Build.props +2 -17
- 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/Microsoft.ReactNative.vcxproj +2 -8
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
- package/PropertySheets/Bundle.props +3 -3
- 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 +2 -1
- package/PropertySheets/React.Cpp.props +4 -4
- package/ReactCommon/ReactCommon.vcxproj +0 -10
- package/ReactCommon/packages.lock.win32.json +0 -10
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +61 -6
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/Warm-RnwFeedCache.ps1 +413 -0
- package/Scripts/creaternwapp.cmd +5 -1
- package/Scripts/creaternwlib.cmd +8 -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 +11 -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/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 +12 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/{fmt → external/fmt}/cgmanifest.json +1 -1
- 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 +61 -0
- package/external/folly/LICENSE +200 -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/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/sync-config.json +8 -0
- package/package.json +6 -6
- 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/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/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,55 @@
|
|
|
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
|
+
// FOLLY_CREATE_EXTERN_ACCESSOR
|
|
20
|
+
//
|
|
21
|
+
// Defines a variable template which holds the address of an object or null
|
|
22
|
+
// given a condition which identifies whether that object is expected to have
|
|
23
|
+
// a definition.
|
|
24
|
+
//
|
|
25
|
+
// Example:
|
|
26
|
+
//
|
|
27
|
+
// extern void foobar(int); // may be defined in another library
|
|
28
|
+
// inline constexpr bool has_foobar = // ...
|
|
29
|
+
//
|
|
30
|
+
// namespace myapp {
|
|
31
|
+
// FOLLY_CREATE_EXTERN_ACCESSOR(access_foobar_v, ::foobar);
|
|
32
|
+
// void try_foobar(int num) {
|
|
33
|
+
// if (auto ptr = access_foobar_v<has_foobar>) {
|
|
34
|
+
// ptr(num);
|
|
35
|
+
// }
|
|
36
|
+
// }
|
|
37
|
+
// }
|
|
38
|
+
//
|
|
39
|
+
// Remarks:
|
|
40
|
+
//
|
|
41
|
+
// This can be done more simply using weak symbols. But weak symbols are non-
|
|
42
|
+
// portable and the rules around the use of weak symbols are complex.
|
|
43
|
+
#define FOLLY_CREATE_EXTERN_ACCESSOR(varname, name) \
|
|
44
|
+
struct __folly_extern_accessor_##varname { \
|
|
45
|
+
template <bool E, typename N> \
|
|
46
|
+
static constexpr N* get() noexcept { \
|
|
47
|
+
if constexpr (E) { \
|
|
48
|
+
return &name; \
|
|
49
|
+
} else { \
|
|
50
|
+
return nullptr; \
|
|
51
|
+
} \
|
|
52
|
+
} \
|
|
53
|
+
}; \
|
|
54
|
+
template <bool E, typename N = decltype(name)> \
|
|
55
|
+
inline constexpr N* varname = __folly_extern_accessor_##varname::get<E, N>()
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
namespace folly {
|
|
20
|
+
|
|
21
|
+
FOLLY_ALWAYS_INLINE void compiler_may_unsafely_assume(bool cond) {
|
|
22
|
+
FOLLY_SAFE_DCHECK(cond, "compiler-hint assumption fails at runtime");
|
|
23
|
+
#if defined(__clang__)
|
|
24
|
+
__builtin_assume(cond);
|
|
25
|
+
#elif defined(__GNUC__)
|
|
26
|
+
if (!cond) {
|
|
27
|
+
__builtin_unreachable();
|
|
28
|
+
}
|
|
29
|
+
#elif defined(_MSC_VER)
|
|
30
|
+
__assume(cond);
|
|
31
|
+
#else
|
|
32
|
+
while (!cond)
|
|
33
|
+
;
|
|
34
|
+
#endif
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[[noreturn]] FOLLY_ALWAYS_INLINE void
|
|
38
|
+
compiler_may_unsafely_assume_unreachable() {
|
|
39
|
+
FOLLY_SAFE_DCHECK(false, "compiler-hint unreachability reached at runtime");
|
|
40
|
+
#if defined(__GNUC__)
|
|
41
|
+
__builtin_unreachable();
|
|
42
|
+
#elif defined(_MSC_VER)
|
|
43
|
+
__assume(0);
|
|
44
|
+
#else
|
|
45
|
+
while (!0)
|
|
46
|
+
;
|
|
47
|
+
#endif
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
FOLLY_ALWAYS_INLINE void compiler_may_unsafely_assume_separate_storage(
|
|
51
|
+
void const* const a, void const* const b) {
|
|
52
|
+
FOLLY_SAFE_DCHECK(
|
|
53
|
+
a != b, "compiler-hint separate storage assumption fails at runtime");
|
|
54
|
+
#if FOLLY_HAS_BUILTIN(__builtin_assume_separate_storage)
|
|
55
|
+
__builtin_assume_separate_storage(a, b);
|
|
56
|
+
#endif
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#if defined(_MSC_VER) && !defined(__clang__)
|
|
60
|
+
|
|
61
|
+
namespace detail {
|
|
62
|
+
|
|
63
|
+
#pragma optimize("", off)
|
|
64
|
+
|
|
65
|
+
inline void compiler_must_force_sink(void const*) {}
|
|
66
|
+
|
|
67
|
+
#pragma optimize("", on)
|
|
68
|
+
|
|
69
|
+
} // namespace detail
|
|
70
|
+
|
|
71
|
+
template <typename T>
|
|
72
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_elide_fn::operator()(
|
|
73
|
+
T const& t) const noexcept {
|
|
74
|
+
detail::compiler_must_force_sink(&t);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
template <typename T>
|
|
78
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_predict_fn::operator()(
|
|
79
|
+
T& t) const noexcept {
|
|
80
|
+
detail::compiler_must_force_sink(&t);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#else
|
|
84
|
+
|
|
85
|
+
namespace detail {
|
|
86
|
+
|
|
87
|
+
template <typename T, typename D = std::decay_t<T>>
|
|
88
|
+
using compiler_must_force_indirect = std::bool_constant<
|
|
89
|
+
!std::is_trivially_copyable_v<D> || //
|
|
90
|
+
sizeof(long) < sizeof(D) || //
|
|
91
|
+
std::is_pointer<D>::value>;
|
|
92
|
+
|
|
93
|
+
template <typename T>
|
|
94
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_elide(T const& t, std::false_type) {
|
|
95
|
+
// the "r" constraint forces the compiler to make the value available in a
|
|
96
|
+
// register to the asm block, which means that it must first have been
|
|
97
|
+
// computed or loaded
|
|
98
|
+
//
|
|
99
|
+
// used for small trivial values which the compiler will put into registers
|
|
100
|
+
//
|
|
101
|
+
// avoided for pointers to avoid fallout in calling code which mistakenly
|
|
102
|
+
// applies the hint to the address of a value but not to the value itself
|
|
103
|
+
asm volatile("" : : "r"(t));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
template <typename T>
|
|
107
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_elide(T const& t, std::true_type) {
|
|
108
|
+
// tells the compiler that the asm block will read the value from memory,
|
|
109
|
+
// and that in addition it might read or write from any memory location
|
|
110
|
+
//
|
|
111
|
+
// if the memory clobber could be split into input and output, that would be
|
|
112
|
+
// preferrable
|
|
113
|
+
asm volatile("" : : "m"(t) : "memory");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
template <typename T>
|
|
117
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_predict(T& t, std::false_type) {
|
|
118
|
+
asm volatile("" : "+r"(t));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
template <typename T>
|
|
122
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_predict(T& t, std::true_type) {
|
|
123
|
+
asm volatile("" : : "m"(t) : "memory");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
} // namespace detail
|
|
127
|
+
|
|
128
|
+
template <typename T>
|
|
129
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_elide_fn::operator()(
|
|
130
|
+
T const& t) const noexcept {
|
|
131
|
+
using i = detail::compiler_must_force_indirect<T>;
|
|
132
|
+
detail::compiler_must_not_elide(t, i{});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
template <typename T>
|
|
136
|
+
FOLLY_ALWAYS_INLINE void compiler_must_not_predict_fn::operator()(
|
|
137
|
+
T& t) const noexcept {
|
|
138
|
+
using i = detail::compiler_must_force_indirect<T>;
|
|
139
|
+
detail::compiler_must_not_predict(t, i{});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
#endif
|
|
143
|
+
|
|
144
|
+
} // namespace folly
|
|
@@ -0,0 +1,238 @@
|
|
|
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 <type_traits>
|
|
20
|
+
|
|
21
|
+
#include <folly/Portability.h>
|
|
22
|
+
#include <folly/Traits.h>
|
|
23
|
+
#include <folly/lang/SafeAssert.h>
|
|
24
|
+
|
|
25
|
+
namespace folly {
|
|
26
|
+
|
|
27
|
+
// compiler_may_unsafely_assume
|
|
28
|
+
//
|
|
29
|
+
// Unsafe. Avoid when not absolutely necessary.
|
|
30
|
+
//
|
|
31
|
+
// Permits the compiler to assume the truth of the provided expression and to
|
|
32
|
+
// optimize the surrounding code as if that expression were true.
|
|
33
|
+
//
|
|
34
|
+
// Causes every possible kind of subtle, irreproducible, non-debuggable failure
|
|
35
|
+
// if the provided expression is ever, for any reason, false: random crashes,
|
|
36
|
+
// silent memory corruptions, arbitrary code execution, privacy violation, etc.
|
|
37
|
+
//
|
|
38
|
+
// Must only be used on conditions that are provable internal logic invariants.
|
|
39
|
+
//
|
|
40
|
+
// Must not be used on conditions which depend on external inputs. For such
|
|
41
|
+
// cases, an assertion or exception may be used instead.
|
|
42
|
+
void compiler_may_unsafely_assume(bool cond);
|
|
43
|
+
|
|
44
|
+
// compiler_may_unsafely_assume_unreachable
|
|
45
|
+
//
|
|
46
|
+
// Unsafe. Avoid when not absolutely necessary.
|
|
47
|
+
//
|
|
48
|
+
// Permits the compiler to assume that the given statement cannot be reached
|
|
49
|
+
// and to optimize the surrounding code accordingly. Permits call sites to omit
|
|
50
|
+
// return statements in non-void-returning functions without compiler error.
|
|
51
|
+
//
|
|
52
|
+
// Causes every possible kind of subtle, irreproducible, non-debuggable failure
|
|
53
|
+
// if the given statement is ever, for any reason, reached: random crashes,
|
|
54
|
+
// silent memory corruptions, arbitrary code execution, privacy violation, etc.
|
|
55
|
+
//
|
|
56
|
+
// Must only be used on conditions that are provable internal logic invariants.
|
|
57
|
+
//
|
|
58
|
+
// Must not be used on conditions which depend on external inputs. For such
|
|
59
|
+
// cases, an assertion or exception may be used instead.
|
|
60
|
+
[[noreturn]] void compiler_may_unsafely_assume_unreachable();
|
|
61
|
+
|
|
62
|
+
// compiler_may_unsafely_assume_separate_storage
|
|
63
|
+
//
|
|
64
|
+
// Unsafe. Avoid when not absolutely necessary.
|
|
65
|
+
//
|
|
66
|
+
// Permits the compiler to assume that the given pointers point into regions
|
|
67
|
+
// that were allocated separately, and that therefore any pointers at any
|
|
68
|
+
// offset relative to one is never equal to any pointer at any offset relative
|
|
69
|
+
// to the other.
|
|
70
|
+
//
|
|
71
|
+
// Regions being allocated separately means that they are separate global
|
|
72
|
+
// variables, thread-local variables, stack variables, or heap allocations.
|
|
73
|
+
//
|
|
74
|
+
// This can be helpful when some library has an ownership model that is opaque
|
|
75
|
+
// to the compiler. For example, modifying some_vector[0] never modifies the
|
|
76
|
+
// vector itself; changes to parser state don't need to be stored to memory
|
|
77
|
+
// before reading the next byte of data to be parsed, etc.
|
|
78
|
+
void compiler_may_unsafely_assume_separate_storage(
|
|
79
|
+
const void* a, const void* b);
|
|
80
|
+
|
|
81
|
+
// compiler_must_not_elide
|
|
82
|
+
//
|
|
83
|
+
// Ensures that the referred-to value will be computed even when an optimizing
|
|
84
|
+
// compiler might otherwise remove the computation. Note: this hint takes its
|
|
85
|
+
// value parameter by reference.
|
|
86
|
+
//
|
|
87
|
+
// Useful for values that are computed during benchmarking but otherwise are
|
|
88
|
+
// unused. The compiler tends to do a good job at eliminating unused variables,
|
|
89
|
+
// which can affect benchmark results, and this hint instructs the compiler to
|
|
90
|
+
// treat the value as though it were used.
|
|
91
|
+
struct compiler_must_not_elide_fn {
|
|
92
|
+
template <typename T>
|
|
93
|
+
FOLLY_ALWAYS_INLINE void operator()(T const& t) const noexcept;
|
|
94
|
+
};
|
|
95
|
+
inline constexpr compiler_must_not_elide_fn compiler_must_not_elide{};
|
|
96
|
+
|
|
97
|
+
// compiler_must_not_predict
|
|
98
|
+
//
|
|
99
|
+
// Ensures that the compiler will not use its knowledge of the referred-to
|
|
100
|
+
// value to optimize or otherwise shape the following code. Note: this hint
|
|
101
|
+
// takes its value parameter by reference.
|
|
102
|
+
//
|
|
103
|
+
// Useful when constant propagation or power reduction is possible in a
|
|
104
|
+
// benchmark but not in real use cases. Optimizations done to benchmarked code
|
|
105
|
+
// which cannot be done to real code can affect benchmark results, and this
|
|
106
|
+
// hint instructs the compiler to treat value which it can predict as though it
|
|
107
|
+
// were unpredictable.
|
|
108
|
+
struct compiler_must_not_predict_fn {
|
|
109
|
+
template <typename T>
|
|
110
|
+
FOLLY_ALWAYS_INLINE void operator()(T& t) const noexcept;
|
|
111
|
+
};
|
|
112
|
+
inline constexpr compiler_must_not_predict_fn compiler_must_not_predict{};
|
|
113
|
+
|
|
114
|
+
// ----
|
|
115
|
+
|
|
116
|
+
namespace detail {
|
|
117
|
+
|
|
118
|
+
template <typename T>
|
|
119
|
+
using detect_folly_is_unsafe_for_async_usage =
|
|
120
|
+
typename T::folly_is_unsafe_for_async_usage;
|
|
121
|
+
|
|
122
|
+
// is_unsafe_for_async_usage_v
|
|
123
|
+
//
|
|
124
|
+
// Whether a type is directly marked as unsafe for async usage with a member
|
|
125
|
+
// type alias. See unsafe_for_async_usage below.
|
|
126
|
+
template <typename T>
|
|
127
|
+
inline constexpr bool is_unsafe_for_async_usage_v = detected_or_t<
|
|
128
|
+
std::false_type,
|
|
129
|
+
detail::detect_folly_is_unsafe_for_async_usage,
|
|
130
|
+
T>::value;
|
|
131
|
+
|
|
132
|
+
} // namespace detail
|
|
133
|
+
|
|
134
|
+
// unsafe_for_async_usage
|
|
135
|
+
//
|
|
136
|
+
// Defines member type alias folly_is_unsafe_for_async_usage, which is the tag
|
|
137
|
+
// marking the class as unsafe for async usage. Serves as a convenience wrapper
|
|
138
|
+
// around the tag.
|
|
139
|
+
//
|
|
140
|
+
// The meaning of the tag is that the current thread must not be yielded in any
|
|
141
|
+
// way during the lifetime of any tagged object.
|
|
142
|
+
//
|
|
143
|
+
// The most common form of yielding the current thread during the lifetime of
|
|
144
|
+
// an object is where the lifetime of the object crosses a coroutine suspension
|
|
145
|
+
// point. Example:
|
|
146
|
+
//
|
|
147
|
+
// struct unsafe : private unsafe_for_async_usage {};
|
|
148
|
+
// Task<> sink();
|
|
149
|
+
// Task<> go() {
|
|
150
|
+
// unsafe object; // object is tagged as unsafe for async usage
|
|
151
|
+
// co_await sink(); // but crossing the co_await is async usage
|
|
152
|
+
// }
|
|
153
|
+
//
|
|
154
|
+
// Some objects, especially some which are intended for use with the RAII
|
|
155
|
+
// pattern, may be thread-sensitive and permit access only on one single thread
|
|
156
|
+
// throughout their lifetimes. Or they may be non-reentrant and may permit only
|
|
157
|
+
// well-nested accesses or may not permit any reentrant accesses at all. In
|
|
158
|
+
// either case, they do not permit yielding the current thread during their
|
|
159
|
+
// lifetimes. Examples:
|
|
160
|
+
// * Some objects that rely internally on thread-locals.
|
|
161
|
+
// * In particular, the storage defined by FOLLY_DECLARE_REUSED.
|
|
162
|
+
// * lock_guards for most mutexes.
|
|
163
|
+
// * Some advanced concurrency primitives.
|
|
164
|
+
// * In particular, hazard-pointers and rcu-guards.
|
|
165
|
+
//
|
|
166
|
+
// Note that the current thread being yielded refers to any form of cooperative
|
|
167
|
+
// multitasking, such as coroutines, as compared with the kernel preempting the
|
|
168
|
+
// current thread and then resuming it later.
|
|
169
|
+
//
|
|
170
|
+
// In order to mark a class type, either:
|
|
171
|
+
// * Declare a member type alias
|
|
172
|
+
// `using folly_is_unsafe_for_async_usage = std::true_type`.
|
|
173
|
+
// * Declare either a non-static data member or a base which is marked. As a
|
|
174
|
+
// convenience, unsafe_for_async_usage is marked and may be used as that non-
|
|
175
|
+
// static data member or base. If using a non-static data member, it is ideal
|
|
176
|
+
// to declare it with attribute [[no_unique_address]], possibly as wrapped in
|
|
177
|
+
// FOLLY_ATTR_NO_UNIQUE_ADDRESS, to avoid increasing the size of the class.
|
|
178
|
+
// * std::lock_guard/unique_lock/scoped_lock are considered unsafe unless the
|
|
179
|
+
// underlying mutex has a typedef `folly_coro_aware_mutex`.
|
|
180
|
+
//
|
|
181
|
+
// NOTE: you can explicitly opt out from a check for a type by having
|
|
182
|
+
// `folly_is_unsafe_for_async_usage` be `std::false_type`.
|
|
183
|
+
//
|
|
184
|
+
// It is recommended to use a non-static data member or a base which is marked,
|
|
185
|
+
// in preference to using a member type alias, since it is impossible to typo
|
|
186
|
+
// the spelling of a non-static data member or base while it is easy to typo
|
|
187
|
+
// the spelling of a member type alias.
|
|
188
|
+
//
|
|
189
|
+
// Example:
|
|
190
|
+
//
|
|
191
|
+
// struct thread_counter {
|
|
192
|
+
// static thread_local int value;
|
|
193
|
+
// };
|
|
194
|
+
// struct thread_counter_raii : private unsafe_for_async_usage {
|
|
195
|
+
// thread_counter_raii() { ++thread_counter::value; }
|
|
196
|
+
// ~thread_counter_raii() { --thread_counter::value; }
|
|
197
|
+
// };
|
|
198
|
+
// coroutine callee();
|
|
199
|
+
// coroutine caller() {
|
|
200
|
+
// thread_counter_raii g;
|
|
201
|
+
// co_await callee(); // static analysis might warn here
|
|
202
|
+
// }
|
|
203
|
+
//
|
|
204
|
+
// This marker can be used to implement a static analysis that detects misuses
|
|
205
|
+
// with objects of classes marked with this tag, namely, where the current
|
|
206
|
+
// thread may be yielded in any way during the lifetimes of such objects.
|
|
207
|
+
struct unsafe_for_async_usage { // a convenience wrapper for the marker below:
|
|
208
|
+
// the marker member type alias
|
|
209
|
+
using folly_is_unsafe_for_async_usage = std::true_type;
|
|
210
|
+
};
|
|
211
|
+
static_assert(detail::is_unsafe_for_async_usage_v<unsafe_for_async_usage>, "");
|
|
212
|
+
|
|
213
|
+
namespace detail {
|
|
214
|
+
|
|
215
|
+
template <typename T>
|
|
216
|
+
using detect_folly_is_coro_aware_mutex = typename T::folly_coro_aware_mutex;
|
|
217
|
+
|
|
218
|
+
} // namespace detail
|
|
219
|
+
|
|
220
|
+
// Inheriting or having a member `unsafe_for_async_usage_if` will conditionally
|
|
221
|
+
// tag the type.
|
|
222
|
+
template <bool If>
|
|
223
|
+
struct unsafe_for_async_usage_if {};
|
|
224
|
+
|
|
225
|
+
template <>
|
|
226
|
+
struct unsafe_for_async_usage_if<true> {
|
|
227
|
+
using folly_is_unsafe_for_async_usage = std::true_type;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
// Detects the presense of folly_coro_aware_mutex nested typedef.
|
|
231
|
+
// This helps custom lock guards have the same behavior as std::lock_guard.
|
|
232
|
+
template <typename T>
|
|
233
|
+
constexpr bool is_coro_aware_mutex_v =
|
|
234
|
+
is_detected_v<detail::detect_folly_is_coro_aware_mutex, T>;
|
|
235
|
+
|
|
236
|
+
} // namespace folly
|
|
237
|
+
|
|
238
|
+
#include <folly/lang/Hint-inl.h>
|
|
@@ -0,0 +1,98 @@
|
|
|
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/CPortability.h>
|
|
20
|
+
|
|
21
|
+
// FOLLY_KEEP
|
|
22
|
+
//
|
|
23
|
+
// When applied to a function, prevents removal of the function. Useful for
|
|
24
|
+
// marking functions which it is desirable to keep.
|
|
25
|
+
//
|
|
26
|
+
// A common use-case is for keeping unused functions in test or benchmark
|
|
27
|
+
// programs which serve as convenient targets for inspecting how the compiler
|
|
28
|
+
// translates source code to machine code. Such functions may be disassembled
|
|
29
|
+
// for inspection in the debugger of with the objdump tool, and are often, for
|
|
30
|
+
// lack of imagination, called check functions in test and benchmark programs.
|
|
31
|
+
//
|
|
32
|
+
// Example:
|
|
33
|
+
//
|
|
34
|
+
// extern "C" FOLLY_KEEP void check_throw_int_0() {
|
|
35
|
+
// throw 0;
|
|
36
|
+
// }
|
|
37
|
+
//
|
|
38
|
+
// $ objdump -dCM intel-mnemonic path/to/binary | less
|
|
39
|
+
// # less permits searching for check_throw_int_0
|
|
40
|
+
//
|
|
41
|
+
// $ gdb path/to/binary -q -batch -ex 'disassemble check_throw_int_0'
|
|
42
|
+
//
|
|
43
|
+
// Functions may be removed when building with both function-sections and
|
|
44
|
+
// gc-sections. It is tricky to keep them; this utility captures the steps
|
|
45
|
+
// required.
|
|
46
|
+
//
|
|
47
|
+
// In order for this mechanism to work, this header must be included. This
|
|
48
|
+
// mechanism relies on the hidden global variable below.
|
|
49
|
+
//
|
|
50
|
+
// The linker, when asked to with --gc-sections, may throw out unreferenced
|
|
51
|
+
// sections. When the compiler emits each function into its own section, as it
|
|
52
|
+
// does when asked to with -ffunction-sections, the linker will throw out
|
|
53
|
+
// unreferenced functions. The key is to move all kept functions into a single
|
|
54
|
+
// section, avoiding the behavior of -ffunction-sections, and then force the
|
|
55
|
+
// compiler to emit some reference to at least one function in that section.
|
|
56
|
+
// This way, the linker will see at least one reference to the kept section,
|
|
57
|
+
// and so will not throw it out.
|
|
58
|
+
#if __GNUC__ && __linux__
|
|
59
|
+
#define FOLLY_KEEP [[gnu::section(".text.folly.keep")]]
|
|
60
|
+
#else
|
|
61
|
+
#define FOLLY_KEEP
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
#if __GNUC__ && __linux__
|
|
65
|
+
#if defined(__clang__) || FOLLY_ARM || FOLLY_AARCH64
|
|
66
|
+
#define FOLLY_KEEP_DETAIL_ATTR_NAKED [[gnu::naked]]
|
|
67
|
+
#else
|
|
68
|
+
#define FOLLY_KEEP_DETAIL_ATTR_NAKED
|
|
69
|
+
#endif
|
|
70
|
+
#define FOLLY_KEEP_DETAIL_ATTR_NOINLINE [[gnu::noinline]]
|
|
71
|
+
#else
|
|
72
|
+
#define FOLLY_KEEP_DETAIL_ATTR_NAKED
|
|
73
|
+
#define FOLLY_KEEP_DETAIL_ATTR_NOINLINE
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
namespace folly {
|
|
77
|
+
namespace detail {
|
|
78
|
+
|
|
79
|
+
// marking this as [[gnu::naked]] gets clang not to emit any text for this
|
|
80
|
+
FOLLY_KEEP FOLLY_KEEP_DETAIL_ATTR_NAKED static void keep_anchor() {}
|
|
81
|
+
|
|
82
|
+
class keep {
|
|
83
|
+
public:
|
|
84
|
+
// must accept the anchor function as an argument
|
|
85
|
+
FOLLY_KEEP_DETAIL_ATTR_NOINLINE explicit keep(void (*)()) noexcept {}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// noinline ctor and trivial dtor minimize the text size of this
|
|
89
|
+
static keep keep_instance{keep_anchor};
|
|
90
|
+
|
|
91
|
+
// weak and noinline to prevent the compiler from eliding calls
|
|
92
|
+
template <typename... T>
|
|
93
|
+
FOLLY_ATTR_WEAK FOLLY_NOINLINE void keep_sink(T&&...) {}
|
|
94
|
+
template <typename... T>
|
|
95
|
+
FOLLY_ATTR_WEAK FOLLY_NOINLINE void keep_sink_nx(T&&...) noexcept {}
|
|
96
|
+
|
|
97
|
+
} // namespace detail
|
|
98
|
+
} // namespace folly
|
|
@@ -0,0 +1,124 @@
|
|
|
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 <new>
|
|
20
|
+
|
|
21
|
+
#include <folly/CppAttributes.h>
|
|
22
|
+
#include <folly/Portability.h>
|
|
23
|
+
#include <folly/functional/Invoke.h>
|
|
24
|
+
|
|
25
|
+
namespace folly {
|
|
26
|
+
|
|
27
|
+
namespace detail {
|
|
28
|
+
|
|
29
|
+
#if defined(__cpp_aligned_new)
|
|
30
|
+
constexpr auto cpp_aligned_new_ = __cpp_aligned_new >= 201606;
|
|
31
|
+
#else
|
|
32
|
+
constexpr auto cpp_aligned_new_ = false;
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
#if defined(__cpp_sized_deallocation)
|
|
36
|
+
constexpr auto cpp_sized_deallocation_ = __cpp_sized_deallocation >= 201309L;
|
|
37
|
+
#else
|
|
38
|
+
constexpr auto cpp_sized_deallocation_ = false;
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
// https://clang.llvm.org/docs/LanguageExtensions.html#builtin-operator-new-and-builtin-operator-delete
|
|
42
|
+
|
|
43
|
+
constexpr auto op_new_builtin_ =
|
|
44
|
+
FOLLY_HAS_BUILTIN(__builtin_operator_new) >= 201802L;
|
|
45
|
+
constexpr auto op_del_builtin_ =
|
|
46
|
+
FOLLY_HAS_BUILTIN(__builtin_operator_del) >= 201802L;
|
|
47
|
+
|
|
48
|
+
FOLLY_CREATE_QUAL_INVOKER(op_new_builtin_fn_, __builtin_operator_new);
|
|
49
|
+
FOLLY_CREATE_QUAL_INVOKER(op_new_library_fn_, ::operator new);
|
|
50
|
+
|
|
51
|
+
FOLLY_CREATE_QUAL_INVOKER(op_del_builtin_fn_, __builtin_operator_delete);
|
|
52
|
+
FOLLY_CREATE_QUAL_INVOKER(op_del_library_fn_, ::operator delete);
|
|
53
|
+
|
|
54
|
+
template <bool Usual, bool C = (Usual && op_new_builtin_)>
|
|
55
|
+
constexpr conditional_t<C, op_new_builtin_fn_, op_new_library_fn_> op_new_;
|
|
56
|
+
|
|
57
|
+
template <bool Usual, bool C = (Usual && op_del_builtin_)>
|
|
58
|
+
constexpr conditional_t<C, op_del_builtin_fn_, op_del_library_fn_> op_del_;
|
|
59
|
+
|
|
60
|
+
template <bool Usual, typename... A>
|
|
61
|
+
FOLLY_ERASE void do_op_del_sized_(
|
|
62
|
+
void* const p, std::size_t const s, A const... a) {
|
|
63
|
+
if constexpr (detail::cpp_sized_deallocation_) {
|
|
64
|
+
return op_del_<Usual>(p, s, a...);
|
|
65
|
+
} else {
|
|
66
|
+
return op_del_<Usual>(p, a...);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
} // namespace detail
|
|
71
|
+
|
|
72
|
+
// operator_new
|
|
73
|
+
struct operator_new_fn {
|
|
74
|
+
FOLLY_NODISCARD FOLLY_ERASE void* operator()( //
|
|
75
|
+
std::size_t const s) const //
|
|
76
|
+
noexcept(noexcept(::operator new(0))) {
|
|
77
|
+
return detail::op_new_<true>(s);
|
|
78
|
+
}
|
|
79
|
+
FOLLY_NODISCARD FOLLY_ERASE void* operator()( //
|
|
80
|
+
std::size_t const s,
|
|
81
|
+
std::nothrow_t const& nt) const noexcept {
|
|
82
|
+
return detail::op_new_<true>(s, nt);
|
|
83
|
+
}
|
|
84
|
+
FOLLY_NODISCARD FOLLY_ERASE void* operator()( //
|
|
85
|
+
std::size_t const s,
|
|
86
|
+
std::align_val_t const a) const //
|
|
87
|
+
noexcept(noexcept(::operator new(0))) {
|
|
88
|
+
return detail::op_new_<detail::cpp_aligned_new_>(s, a);
|
|
89
|
+
}
|
|
90
|
+
FOLLY_NODISCARD FOLLY_ERASE void* operator()( //
|
|
91
|
+
std::size_t const s,
|
|
92
|
+
std::align_val_t const a,
|
|
93
|
+
std::nothrow_t const& nt) const noexcept {
|
|
94
|
+
return detail::op_new_<detail::cpp_aligned_new_>(s, a, nt);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
inline constexpr operator_new_fn operator_new{};
|
|
98
|
+
|
|
99
|
+
// operator_delete
|
|
100
|
+
struct operator_delete_fn {
|
|
101
|
+
FOLLY_ERASE void operator()( //
|
|
102
|
+
void* const p) const noexcept {
|
|
103
|
+
return detail::op_del_<true>(p);
|
|
104
|
+
}
|
|
105
|
+
FOLLY_ERASE void operator()( //
|
|
106
|
+
void* const p,
|
|
107
|
+
std::size_t const s) const noexcept {
|
|
108
|
+
return detail::do_op_del_sized_<true>(p, s);
|
|
109
|
+
}
|
|
110
|
+
FOLLY_ERASE void operator()( //
|
|
111
|
+
void* const p,
|
|
112
|
+
std::align_val_t const a) const noexcept {
|
|
113
|
+
return detail::op_del_<detail::cpp_aligned_new_>(p, a);
|
|
114
|
+
}
|
|
115
|
+
FOLLY_ERASE void operator()( //
|
|
116
|
+
void* const p,
|
|
117
|
+
std::size_t const s,
|
|
118
|
+
std::align_val_t const a) const noexcept {
|
|
119
|
+
return detail::do_op_del_sized_<detail::cpp_aligned_new_>(p, s, a);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
inline constexpr operator_delete_fn operator_delete{};
|
|
123
|
+
|
|
124
|
+
} // namespace folly
|