Make Gold more like Core.
authorMichael Lee <mzlee@fb.com>
Mon, 15 Feb 2016 14:00:09 +0000 (06:00 -0800)
committerfacebook-github-bot-1 <folly-bot@fb.com>
Mon, 15 Feb 2016 14:20:24 +0000 (06:20 -0800)
Summary:Adding padding for Android was wrong, instead, we should have
used `std::aligned_storage`.

Reviewed By: fugalh

Differential Revision: D2934566

fb-gh-sync-id: f541b89309be70791fced48f63b6b5aecc49bfbb
shipit-source-id: f541b89309be70791fced48f63b6b5aecc49bfbb

folly/futures/test/CoreTest.cpp

index 4f7c99e9be04f68365b47c490a5fe531c4e478d9..c65a76d0564280020a4838212c0f0a71831319dc 100644 (file)
 
 using namespace folly;
 
-// On android, we see a different way of memory alignment of this structure.
-// Adding some extra padding to make it pass.
-#ifdef __ANDROID_
-constexpr size_t extraPadding = 8;
-#else
-constexpr size_t extraPadding = 0;
-#endif
-
 TEST(Core, size) {
+  static constexpr size_t lambdaBufSize = 8 * sizeof(void*);
   struct Gold {
-    char lambdaBuf_[8 * sizeof(void*)];
+    typename std::aligned_storage<lambdaBufSize>::type lambdaBuf_;
     folly::Optional<Try<Unit>> result_;
     std::function<void(Try<Unit>&&)> callback_;
     detail::FSM<detail::State> fsm_;
@@ -48,5 +41,5 @@ TEST(Core, size) {
   };
   // If this number goes down, it's fine!
   // If it goes up, please seek professional advice ;-)
-  EXPECT_GE(sizeof(Gold) + extraPadding, sizeof(detail::Core<Unit>));
+  EXPECT_GE(sizeof(Gold), sizeof(detail::Core<Unit>));
 }