<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/dbbe63695b82353deb297e066a12a9069ab9ddad">https://github.com/macports/macports-ports/commit/dbbe63695b82353deb297e066a12a9069ab9ddad</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit dbbe63695b82353deb297e066a12a9069ab9ddad
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Thu Jan 25 03:20:05 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    folly: update to 2024.01.22.00, support testing
</span>---
 devel/folly/Portfile                       |  57 +++-
 devel/folly/files/patch-older-systems.diff | 495 +++++++++++++++++++++++------
 2 files changed, 453 insertions(+), 99 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/Portfile b/devel/folly/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 893c601596c..21288f4aa05 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/folly/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/folly/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,11 +20,11 @@ if {[string match *clang* ${configure.compiler}]} {
</span> # NB: Facebook does not do API stability, apparently, so please don't
 # upgrade without also upgrading its dependents, as listed by:
 # port list rdepends:folly
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        facebook folly 2024.01.08.00 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        facebook folly 2024.01.22.00 v
</span> revision            0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  be1a27c48af23af50cee6268fd14a9fbaf5f454b \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  97334f8c7a8dfd933381c0afacd3ab48000f3a90f74d83482b8ec259b997d039 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    3962098
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  440ea5d76c1325aa933757de92871a85111c56f0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  8423580be1c7cd6a60ae3fd7ba8ace5b26e86b80de6933901a219d7027692036 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    3968413
</span> 
 categories          devel
 license             Apache-2
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,19 +69,19 @@ depends_lib-append  port:bzip2 \
</span> 
 cmake.generator     Ninja
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/facebook/folly/pull/2124
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/facebook/folly/pull/1907
</span> patchfiles-append   patch-older-systems.diff
 
 configure.args-append   -DBUILD_SHARED_LIBS=ON \
                         -DFOLLY_USE_JEMALLOC=0
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.thread_local_storage \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        yes
</span> compiler.cxx_standard   2017
 configure.cxxflags-append \
                         -std=c++17
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# error: TARGET_OS_xxx not defined, evaluates to 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.cppflags-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        -Wno-undef-prefix
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # error: typedef redefinition with different types ('uint8_t' (aka 'unsigned char') vs 'enum clockid_t')
 compiler.blacklist-append {clang < 1100}
 # error: 'path' is unavailable: introduced in macOS 10.15
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -116,9 +116,13 @@ platform darwin {
</span>             configure.ldflags-append \
                                 -latomic
         }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[string match *clang* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # error: TARGET_OS_xxx not defined, evaluates to 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.cppflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                -Wno-undef-prefix
</span>     }
     # Fix for building in Rosetta, so that x86 SSE is not invoked:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.major} == 10 && ${build_arch} eq "ppc"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${os.major} == 10 && ${configure.build_arch} eq "ppc"} {
</span>         configure.args-append   -DCMAKE_LIBRARY_ARCHITECTURE="ppc" \
                                 -DIS_X86_64_ARCH=OFF
     }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -141,3 +145,38 @@ variant native description {Build with best native support for local CPU capabil
</span>                                 -march=native
     }
 }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# FIXME: at the moment about 90% of tests pass on PowerPC.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This is somewhat worse than Sonoma arm64, where 91% of tests pass.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/facebook/folly/issues/2128
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant tests description {Enable testing} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.pre_args-replace  -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append       -DBUILD_TESTS=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-test {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${os.platform} eq "darwin" && ${configure.cxx_stdlib} ne "libc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach testexec    [glob ${cmake.build_dir}/*test] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                move            ${testexec} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                ${testexec}-orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set  wrapper    [open "${testexec}" w 0755]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} "#!/bin/bash"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} {if [ -n "$DYLD_LIBRARY_PATH" ]; then}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} "   DYLD_LIBRARY_PATH=${prefix}/lib/libgcc:\./:\${DYLD_LIBRARY_PATH}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} {else}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} "   DYLD_LIBRARY_PATH=${prefix}/lib/libgcc:\./"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} {fi}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} {export DYLD_LIBRARY_PATH}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts ${wrapper} {exec "${0}-orig" "$@"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                close $wrapper
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # test infrastructure uses /bin/ps, which is forbidden by sandboxing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        append portsandbox_profile " (allow process-exec (literal \"/bin/ps\") (with no-profile))"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.run                    yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/folly/files/patch-older-systems.diff b/devel/folly/files/patch-older-systems.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 813b716ec46..4711bd66989 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/folly/files/patch-older-systems.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/folly/files/patch-older-systems.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,64 +1,97 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git folly/io/async/fdsock/AsyncFdSocket.h folly/io/async/fdsock/AsyncFdSocket.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index d3d84bb58..8fbfbd9ba 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- folly/io/async/fdsock/AsyncFdSocket.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ folly/io/async/fdsock/AsyncFdSocket.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -19,6 +19,16 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <folly/io/async/AsyncSocket.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <folly/io/async/fdsock/SocketFds.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MIN_REQUIRED < 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __DARWIN_ALIGN32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef __DARWIN_ALIGN32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace folly {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Including `gtest/gtest_prod.h` would make gtest/gmock a hard dep
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> diff --git CMake/folly-deps.cmake CMake/folly-deps.cmake
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 989259a87..7fa4cb4e5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c72273a73..eb4627637 100644
</span> --- CMake/folly-deps.cmake
 +++ CMake/folly-deps.cmake
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -247,7 +250,7 @@ check_cxx_source_compiles("
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -247,7 +247,7 @@ check_cxx_source_compiles("
</span>    FOLLY_STDLIB_LIBCPP
  )
  
 -if (APPLE)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+if (APPLE AND NOT(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (APPLE AND (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
</span>    list (APPEND CMAKE_REQUIRED_LIBRARIES c++abi)
    list (APPEND FOLLY_LINK_LIBRARIES c++abi)
  endif ()
 diff --git CMakeLists.txt CMakeLists.txt
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index dfd4c3820..d02121df0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 01a28eeab..2383b30cb 100644
</span> --- CMakeLists.txt
 +++ CMakeLists.txt
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -261,6 +261,16 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -708,7 +708,7 @@ if (BUILD_TESTS OR BUILD_BENCHMARKS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST bits_test_2 SOURCES BitsTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST bitvector_test SOURCES BitVectorCodingTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST dynamic_parser_test SOURCES DynamicParserTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      TEST eliasfano_test SOURCES EliasFanoCodingTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TEST eliasfano_test APPLE_DISABLED SOURCES EliasFanoCodingTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST event_count_test SOURCES EventCountTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       # FunctionSchedulerTest has a lot of timing-dependent checks,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       # and tends to fail on heavily loaded systems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -993,7 +993,7 @@ if (BUILD_TESTS OR BUILD_BENCHMARKS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST atomic_hash_map_test HANGING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         SOURCES AtomicHashMapTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST atomic_linked_list_test SOURCES AtomicLinkedListTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      TEST atomic_unordered_map_test SOURCES AtomicUnorderedMapTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TEST atomic_unordered_map_test APPLE_DISABLED SOURCES AtomicUnorderedMapTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST base64_test SOURCES base64_test.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST clock_gettime_wrappers_test SOURCES ClockGettimeWrappersTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST concurrent_bit_set_test SOURCES ConcurrentBitSetTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1005,7 +1005,7 @@ if (BUILD_TESTS OR BUILD_BENCHMARKS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST cpu_id_test SOURCES CpuIdTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST demangle_test SOURCES DemangleTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST deterministic_schedule_test SOURCES DeterministicScheduleTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      TEST discriminated_ptr_test SOURCES DiscriminatedPtrTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TEST discriminated_ptr_test APPLE_DISABLED SOURCES DiscriminatedPtrTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST dynamic_test SOURCES DynamicTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST dynamic_converter_test SOURCES DynamicConverterTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       TEST dynamic_other_test SOURCES DynamicOtherTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/ConstexprMath.h folly/ConstexprMath.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5df7ae5a6..6fe2b6430 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/ConstexprMath.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/ConstexprMath.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,15 +42,25 @@ using enable_if_floating_t =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ///
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// mimic: std::numbers::e_v, C++20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <typename T>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__ppc__) || defined(__i386__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++FOLLY_INLINE_VARIABLE constexpr T e_v = detail::enable_if_floating_t<T>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    2.71828182845904523536028747135266250);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FOLLY_INLINE_VARIABLE constexpr T e_v = detail::enable_if_floating_t<T>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     2.71828182845904523536028747135266249775724709369995L);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span>  
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # base64 SIMD files compilation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  message(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    STATUS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "PowerPC Big Endian has a limited support, "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "skipping building Base64SWAR of base64"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  list(REMOVE_ITEM files ${FOLLY_DIR}/detail/base64_detail/Base64SWAR.cpp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+endif()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (NOT(${IS_X86_64_ARCH}))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   message(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     STATUS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// ln2_v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ///
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// mimic: std::numbers::ln2_v, C++20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <typename T>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__ppc__) || defined(__i386__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++FOLLY_INLINE_VARIABLE constexpr T ln2_v = detail::enable_if_floating_t<T>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    0.693147180559945309417232121458176568);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FOLLY_INLINE_VARIABLE constexpr T ln2_v = detail::enable_if_floating_t<T>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     0.69314718055994530941723212145817656807550013436025L);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ///
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/DiscriminatedPtr.h folly/DiscriminatedPtr.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4284cdf72..582f9a6a7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/DiscriminatedPtr.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/DiscriminatedPtr.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,8 +35,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/Portability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/detail/DiscriminatedPtrDetail.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !FOLLY_X64 && !FOLLY_AARCH64 && !FOLLY_PPC64 && !FOLLY_RISCV64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#error "DiscriminatedPtr is x64, arm64, ppc64 and riscv64 specific code."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !FOLLY_X64 && !FOLLY_AARCH64 && !FOLLY_PPC && !FOLLY_PPC64 && !FOLLY_RISCV64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#error "DiscriminatedPtr is x64, arm64, ppc, ppc64 and riscv64 specific code."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace folly {
</span> diff --git folly/File.cpp folly/File.cpp
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 401eb7a01..c50a6d7e5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f61fc3cc7..c5c9966d3 100644
</span> --- folly/File.cpp
 +++ folly/File.cpp
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -120,8 +120,10 @@ File File::dupCloseOnExec() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -118,8 +118,10 @@ File File::dupCloseOnExec() const {
</span>      int fd;
  #ifdef _WIN32
      fd = ::dup(fd_);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -71,10 +104,10 @@ index 401eb7a01..c50a6d7e5 100644
</span>      checkUnixError(fd, "dup() failed");
  
 diff --git folly/Portability.h folly/Portability.h
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 24ba108bb..933d240e7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5e1c1dee1..b59bb2358 100644
</span> --- folly/Portability.h
 +++ folly/Portability.h
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -103,12 +103,18 @@ constexpr bool kHasUnalignedAccess = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -115,12 +115,18 @@ constexpr bool kHasUnalignedAccess = false;
</span>  #define FOLLY_AARCH64 0
  #endif
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -94,15 +127,15 @@ index 24ba108bb..933d240e7 100644
</span>  #if defined(__s390x__)
  #define FOLLY_S390X 1
  #else
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -120,6 +126,7 @@ constexpr bool kIsArchArm = FOLLY_ARM == 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -138,6 +144,7 @@ constexpr bool kIsArchArm = FOLLY_ARM == 1;
</span>  constexpr bool kIsArchAmd64 = FOLLY_X64 == 1;
  constexpr bool kIsArchAArch64 = FOLLY_AARCH64 == 1;
  constexpr bool kIsArchPPC64 = FOLLY_PPC64 == 1;
 +constexpr bool kIsArchPPC = FOLLY_PPC == 1;
  constexpr bool kIsArchS390X = FOLLY_S390X == 1;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr bool kIsArchRISCV64 = FOLLY_RISCV64 == 1;
</span>  } // namespace folly
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -272,6 +279,9 @@ constexpr auto kIsLittleEndian = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -302,6 +309,9 @@ constexpr auto kIsLittleEndian = false;
</span>  #else
  constexpr auto kIsLittleEndian = true;
  #endif
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -112,36 +145,92 @@ index 24ba108bb..933d240e7 100644
</span>  #else
  constexpr auto kIsLittleEndian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__;
  #endif
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git folly/detail/base64_detail/Base64Api.cpp folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 9c8493c06..4ada55281 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ folly/detail/base64_detail/Base64Api.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -31,10 +31,16 @@ Base64RuntimeImpl base64EncodeSelectImplementation() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         base64URLDecodeSWAR};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__POWERPC__) || (defined(__powerpc__) && defined(WORDS_BIGENDIAN)) // PowerPC BE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      base64EncodeScalar,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      base64URLEncode};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else // Everything but PowerPC BE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64EncodeScalar,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64URLEncodeScalar,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64DecodeSWAR,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       base64URLDecodeSWAR};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/Synchronized.h folly/Synchronized.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d563e4aec..e55eaefbf 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/Synchronized.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/Synchronized.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1510,8 +1510,10 @@ class LockedPtr {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SynchronizedType* parent() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     using simulacrum = typename SynchronizedType::Simulacrum;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     static_assert(sizeof(simulacrum) == sizeof(SynchronizedType), "mismatch");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     static_assert(alignof(simulacrum) == alignof(SynchronizedType), "mismatch");
</span> +#endif
<span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } // namespace folly::detail::base64_detail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     constexpr auto off = offsetof(simulacrum, mutex_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const auto raw = reinterpret_cast<char*>(lock_.mutex());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return reinterpret_cast<SynchronizedType*>(raw - (raw ? off : 0));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/detail/base64_detail/Base64SWAR.cpp folly/detail/base64_detail/Base64SWAR.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 72fc4278c..06d0ce4aa 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/detail/base64_detail/Base64SWAR.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/detail/base64_detail/Base64SWAR.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,8 +103,13 @@ constexpr auto kBase64SwarDecodeTable =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <bool isURL>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ std::uint32_t base64DecodeSWARMainLoop(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const char*& f, const char* l, char*& o) noexcept {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #warning "This code may not work on a Big-endian architecture yet."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       folly::kIsLittleEndian, "Big endian requires a redesigned table");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   std::uint32_t errorAccumulator = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/experimental/EliasFanoCoding.h folly/experimental/EliasFanoCoding.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 03c266d0f..43d90b8a4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/experimental/EliasFanoCoding.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/experimental/EliasFanoCoding.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,7 +42,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace folly {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace compression {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static_assert(kIsLittleEndian, "EliasFanoCoding.h requires little endianness");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #warning "This code may not work on a Big-endian architecture yet."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  static_assert(kIsLittleEndian, "EliasFanoCoding.h requires little endianness");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr size_t kCacheLineSize = 64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/hash/test/ChecksumBenchmark.cpp folly/hash/test/ChecksumBenchmark.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c9a1d7212..1f4061751 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/hash/test/ChecksumBenchmark.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/hash/test/ChecksumBenchmark.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,6 +19,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/Benchmark.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/hash/Checksum.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr size_t kBufSize = 512 * 1024;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint8_t* buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -58,7 +62,11 @@ int main(int argc, char** argv) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   gflags::ParseCommandLineFlags(&argc, &argv, true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   google::InitGoogleLogging(argv[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED < 101500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  buf = static_cast<uint8_t*>(malloc(kBufSize + 64));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   buf = static_cast<uint8_t*>(std::aligned_alloc(4096, kBufSize + 64));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   std::default_random_engine rng(1729); // Deterministic seed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   std::uniform_int_distribution<uint16_t> dist(0, 255);
</span> diff --git folly/io/async/AsyncUDPSocket.cpp folly/io/async/AsyncUDPSocket.cpp
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index ce0e33e96..6748c9aab 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d95698cc8..00421573a 100644
</span> --- folly/io/async/AsyncUDPSocket.cpp
 +++ folly/io/async/AsyncUDPSocket.cpp
 @@ -262,6 +262,7 @@ void AsyncUDPSocket::init(sa_family_t family, BindOptions bindOptions) {
              "failed to set IPV6_RECVTCLASS on the socket",
              errno);
        }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #ifdef IP_RECVTOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    #ifdef IP_RECVTOS
</span>      } else if (family == AF_INET) {
        if (netops::setsockopt(
                socket, IPPROTO_IP, IP_RECVTOS, &flag, sizeof(flag)) != 0) {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -149,10 +238,31 @@ index ce0e33e96..6748c9aab 100644
</span>              "failed to set IP_RECVTOS on the socket",
              errno);
        }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    #endif
</span>      }
    }
  
<span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/io/async/fdsock/AsyncFdSocket.h folly/io/async/fdsock/AsyncFdSocket.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d3d84bb58..8fbfbd9ba 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/io/async/fdsock/AsyncFdSocket.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/io/async/fdsock/AsyncFdSocket.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,6 +19,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/io/async/AsyncSocket.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/io/async/fdsock/SocketFds.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 110000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __DARWIN_ALIGN32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef __DARWIN_ALIGN32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace folly {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Including `gtest/gtest_prod.h` would make gtest/gmock a hard dep
</span> diff --git folly/net/NetOps.h folly/net/NetOps.h
 index 674a216a2..c5881a7d9 100644
 --- folly/net/NetOps.h
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -188,23 +298,26 @@ index 09a8a9907..d3a6caac4 100644
</span>  using tcp_info = ::tcp_connection_info;
  const int tcp_info_sock_opt = TCP_CONNECTION_INFO;
 diff --git folly/portability/Asm.h folly/portability/Asm.h
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index e71da91c7..e1924c0e4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e71da91c7..2fdafe6cf 100644
</span> --- folly/portability/Asm.h
 +++ folly/portability/Asm.h
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -43,8 +43,10 @@ inline void asm_volatile_pause() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -43,8 +43,12 @@ inline void asm_volatile_pause() {
</span>    asm volatile("isb");
  #elif (defined(__arm__) && !(__ARM_ARCH < 7))
    asm volatile("yield");
 -#elif FOLLY_PPC64
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif FOLLY_PPC64 && !(defined(__APPLE__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   asm volatile("or 27,27,27");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif (FOLLY_PPC || FOLLY_PPC64) && defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  __asm__ volatile ("or r27,r27,r27" ::: "memory");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  asm volatile("or 27,27,27");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif FOLLY_PPC || FOLLY_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __asm__ volatile ("or r27,r27,r27" ::: "memory");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    asm volatile("or 27,27,27");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #endif
</span>  #endif
  }
  } // namespace folly
 diff --git folly/portability/Time.cpp folly/portability/Time.cpp
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 88f00150f..3f882b473 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4039ea814..1351826ea 100644
</span> --- folly/portability/Time.cpp
 +++ folly/portability/Time.cpp
 @@ -37,11 +37,13 @@ static void duration_to_ts(
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -230,7 +343,7 @@ index 88f00150f..3f882b473 100644
</span>    mach_msg_type_number_t task_basic_info_count = MACH_TASK_BASIC_INFO_COUNT;
    kern_result = task_info(
 @@ -74,6 +77,18 @@ static int clock_process_cputime(struct timespec* ts) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (UNLIKELY(kern_result != KERN_SUCCESS)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (FOLLY_UNLIKELY(kern_result != KERN_SUCCESS)) {
</span>      return -1;
    }
 +#else
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -241,7 +354,7 @@ index 88f00150f..3f882b473 100644
</span> +      TASK_BASIC_INFO,
 +      (thread_info_t)&task_basic_info,
 +      &task_basic_info_count);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (UNLIKELY(kern_result != KERN_SUCCESS)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (FOLLY_UNLIKELY(kern_result != KERN_SUCCESS)) {
</span> +    return -1;
 +  }
 +#endif
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -303,28 +416,230 @@ index 88f00150f..3f882b473 100644
</span>      default:
        errno = EINVAL;
        return -1;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/synchronization/AtomicRef.h folly/synchronization/AtomicRef.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b4408130c..54772a164 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/synchronization/AtomicRef.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/synchronization/AtomicRef.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28,7 +28,9 @@ namespace detail {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <typename T>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct atomic_ref_base {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(sizeof(T) == sizeof(std::atomic<T>), "size mismatch");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(alignof(T) == alignof(std::atomic<T>), "alignment mismatch");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(is_trivially_copyable_v<T>, "value not trivially-copyable");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   explicit atomic_ref_base(T& ref) : ref_(ref) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -156,9 +158,11 @@ struct make_atomic_ref_t {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   template <
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       typename T,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       std::enable_if_t<
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          is_trivially_copyable_v<T> && sizeof(T) == sizeof(std::atomic<T>) &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              alignof(T) == alignof(std::atomic<T>),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          int> = 0>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          is_trivially_copyable_v<T> && sizeof(T) == sizeof(std::atomic<T>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          && alignof(T) == alignof(std::atomic<T>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          , int> = 0>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   atomic_ref<T> operator()(T& ref) const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return atomic_ref<T>{ref};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/synchronization/NativeSemaphore.h folly/synchronization/NativeSemaphore.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f894eed63..2d7c195af 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/synchronization/NativeSemaphore.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/synchronization/NativeSemaphore.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,13 +20,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <limits>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdexcept>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/Utility.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/lang/Exception.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/portability/Windows.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(_WIN32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__) && (MAC_OS_X_VERSION_MIN_REQUIRED > 1050) && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <dispatch/dispatch.h> // @manual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -94,7 +98,7 @@ class NativeSemaphore {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   HANDLE sem_{INVALID_HANDLE_VALUE};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__) && (MAC_OS_X_VERSION_MIN_REQUIRED > 1050) && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class NativeSemaphore {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  public:
</span> diff --git folly/system/ThreadId.cpp folly/system/ThreadId.cpp
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index e426b39e1..b297d671f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index fa365a641..bd3760921 100644
</span> --- folly/system/ThreadId.cpp
 +++ folly/system/ThreadId.cpp
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -40,9 +40,17 @@ namespace detail {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -40,9 +40,13 @@ namespace detail {
</span>  
  uint64_t getOSThreadIDSlow() {
  #if __APPLE__
 -  uint64_t tid;
 -  pthread_threadid_np(nullptr, &tid);
 -  return tid;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #if MAC_OS_X_VERSION_MAX_ALLOWED < 1070
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    tid = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    uint64_t tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    tid = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #ifndef __POWERPC__
</span> +    uint64_t tid;
 +    pthread_threadid_np(nullptr, &tid);
 +    return tid;
<span style='display:block; white-space:pre;background:#e0ffe0;'>++  #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span> +  #endif
  #elif defined(_WIN32)
    return uint64_t(GetCurrentThreadId());
  #elif defined(__FreeBSD__)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/system/ThreadName.cpp folly/system/ThreadName.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6dc5878cc..d61fd49fe 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/system/ThreadName.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/system/ThreadName.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,9 +56,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_HAS_PTHREAD_SETNAME_NP_THREAD_NAME 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // macOS 10.6+ has pthread_setname_np(const char*) (1 param)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define FOLLY_HAS_PTHREAD_SETNAME_NP_NAME 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/test/ConstexprMathTest.cpp folly/test/ConstexprMathTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index db61e050c..c478fc138 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/test/ConstexprMathTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/test/ConstexprMathTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -985,10 +985,12 @@ TEST_F(ConstexprMathTest, constexpr_exp_floating) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     constexpr auto a = folly::constexpr_exp(3.3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     EXPECT_DOUBLE_EQ(std::exp(3.3), a);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     constexpr auto a = folly::constexpr_exp(471.L);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     EXPECT_DOUBLE_EQ(std::exp(471.L), a);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     constexpr auto a = folly::constexpr_exp(600.);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     EXPECT_NE(lim::infinity(), a);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/test/IteratorsTest.cpp folly/test/IteratorsTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 63195eced..db1235f7e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/test/IteratorsTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/test/IteratorsTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,7 +42,9 @@ TEST(IteratorsTest, IterFacadeHasCorrectTraits) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       std::is_same<TR::iterator_category, std::forward_iterator_tag>::value,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(std::is_same<TR::difference_type, ssize_t>::value, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(IteratorsTest, SimpleIteratorFacade) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -85,7 +87,9 @@ TEST(IteratorsTest, IterAdaptorHasCorrectTraits) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       std::is_same<TR::iterator_category, std::forward_iterator_tag>::value,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(std::is_same<TR::difference_type, ssize_t>::value, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(IteratorsTest, IterAdaptorWithPointer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/test/MemsetBenchmark.cpp folly/test/MemsetBenchmark.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 139987d0d..62423f925 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/test/MemsetBenchmark.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/test/MemsetBenchmark.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/Preprocessor.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/portability/GFlags.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEFINE_uint32(min_size, 1, "Minimum size to benchmark");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEFINE_uint32(max_size, 32768, "Maximum size to benchmark");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEFINE_bool(linear, false, "Test all sizes [min_size, max_size]");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -86,7 +90,11 @@ int main(int argc, char** argv) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   assert(FLAGS_step > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size_t totalBufSize = (FLAGS_max_size + FLAGS_page_offset + 4095) & ~4095;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED < 101500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  temp_buf = (uint8_t*)malloc(totalBufSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   temp_buf = (uint8_t*)aligned_alloc(4096, totalBufSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Make sure all pages are allocated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (size_t i = 0; i < totalBufSize; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     temp_buf[i] = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/test/MemsetTest.cpp folly/test/MemsetTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b1deaca05..b65b53acd 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/test/MemsetTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/test/MemsetTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +21,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <folly/portability/GTest.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr size_t kPageSize = 4096;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ constexpr uint8_t kBufEnd = 0xDB;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -45,8 +49,13 @@ void testMemsetImpl(uint8_t* buf, size_t maxLen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(MemsetAsmTest, alignedBuffer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   constexpr size_t kMaxSize = 2 * kPageSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED < 101500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint8_t* buf = reinterpret_cast<uint8_t*>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      malloc(kMaxSize + 2 * kPageSize));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint8_t* buf = reinterpret_cast<uint8_t*>(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       aligned_alloc(kPageSize, kMaxSize + 2 * kPageSize));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Get buffer aligned power of 2 from 16 all the way up to a page size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (size_t alignment = 16; alignment <= kPageSize; alignment <<= 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     testMemsetImpl(buf + (alignment % kPageSize), kMaxSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -55,8 +64,13 @@ TEST(MemsetAsmTest, alignedBuffer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(MemsetAsmTest, unalignedBuffer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED < 101500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  uint8_t* buf =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      reinterpret_cast<uint8_t*>(malloc(2 * kPageSize));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint8_t* buf =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       reinterpret_cast<uint8_t*>(aligned_alloc(kPageSize, 2 * kPageSize));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (size_t alignment = 1; alignment <= 192; alignment++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     testMemsetImpl(buf + alignment, 256);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git folly/test/OptionalTest.cpp folly/test/OptionalTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 016b60639..e0123348a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- folly/test/OptionalTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ folly/test/OptionalTest.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,9 +56,11 @@ struct NoDefault {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __ppc__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(sizeof(Optional<char>) == 2, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static_assert(sizeof(Optional<int>) == 8, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(sizeof(Optional<NoDefault>) == 4, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static_assert(sizeof(Optional<int>) == 8, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(sizeof(Optional<char>) == sizeof(boost::optional<char>), "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(sizeof(Optional<short>) == sizeof(boost::optional<short>), "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(sizeof(Optional<int>) == sizeof(boost::optional<int>), "");
</span></pre><pre style='margin:0'>

</pre>