diff options
author | Evan Brown <ezb@google.com> | 2023-09-12 09:14:32 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-09-12 09:15:26 -0700 |
commit | 5ae23ed130027e2376e0868ec4bb4fa358b7e238 (patch) | |
tree | 0e7cf0c8c3444ef0a620627a3eb9f528f202c586 /absl/container/internal/common_policy_traits_test.cc | |
parent | f01b1b56de359de540c97a7898ff3011c47e2c26 (diff) | |
download | abseil-5ae23ed130027e2376e0868ec4bb4fa358b7e238.tar.gz abseil-5ae23ed130027e2376e0868ec4bb4fa358b7e238.tar.bz2 abseil-5ae23ed130027e2376e0868ec4bb4fa358b7e238.zip |
Make PolicyTraits::transfer_uses_memcpy() true for node_hash_* tables.
This should enable binary size savings for now and more efficiency improvements with small buffer optimization.
PiperOrigin-RevId: 564741270
Change-Id: Icf204d88256243eb60464439a52dd589d7a559cb
Diffstat (limited to 'absl/container/internal/common_policy_traits_test.cc')
-rw-r--r-- | absl/container/internal/common_policy_traits_test.cc | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/absl/container/internal/common_policy_traits_test.cc b/absl/container/internal/common_policy_traits_test.cc index 5eaa4aae..faee3e7a 100644 --- a/absl/container/internal/common_policy_traits_test.cc +++ b/absl/container/internal/common_policy_traits_test.cc @@ -16,10 +16,12 @@ #include <functional> #include <memory> -#include <new> +#include <type_traits> +#include <utility> #include "gmock/gmock.h" #include "gtest/gtest.h" +#include "absl/base/config.h" namespace absl { ABSL_NAMESPACE_BEGIN @@ -51,9 +53,14 @@ std::function<Slot&(Slot*)> PolicyWithoutOptionalOps::element; struct PolicyWithOptionalOps : PolicyWithoutOptionalOps { static std::function<void(void*, Slot*, Slot*)> transfer; }; - std::function<void(void*, Slot*, Slot*)> PolicyWithOptionalOps::transfer; +struct PolicyWithMemcpyTransfer : PolicyWithoutOptionalOps { + static std::function<std::true_type(void*, Slot*, Slot*)> transfer; +}; +std::function<std::true_type(void*, Slot*, Slot*)> + PolicyWithMemcpyTransfer::transfer; + struct Test : ::testing::Test { Test() { PolicyWithoutOptionalOps::construct = [&](void* a1, Slot* a2, Slot a3) { @@ -114,6 +121,13 @@ TEST_F(Test, with_transfer) { common_policy_traits<PolicyWithOptionalOps>::transfer(&alloc, &a, &b); } +TEST(TransferUsesMemcpy, Basic) { + EXPECT_FALSE( + common_policy_traits<PolicyWithOptionalOps>::transfer_uses_memcpy()); + EXPECT_TRUE( + common_policy_traits<PolicyWithMemcpyTransfer>::transfer_uses_memcpy()); +} + } // namespace } // namespace container_internal ABSL_NAMESPACE_END |