Commit dcbe5421 authored by Giuseppe Ottaviano's avatar Giuseppe Ottaviano Committed by Facebook GitHub Bot

Use AccessSpreader::cachedCurrent() in CoreCachedSharedPtr

Summary: Avoid an expensive `__vdso_getcpu` on every `get()`.

Reviewed By: terrelln

Differential Revision: D23469601

fbshipit-source-id: 6c7e62a136b7cd80baab6dcfb10cba13a2e472c0
parent 04513e57
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <array> #include <array>
#include <memory> #include <memory>
#include <folly/concurrency/AtomicSharedPtr.h>
#include <folly/concurrency/CacheLocality.h> #include <folly/concurrency/CacheLocality.h>
#include <folly/container/Enumerate.h> #include <folly/container/Enumerate.h>
#include <folly/synchronization/Hazptr.h> #include <folly/synchronization/Hazptr.h>
...@@ -55,7 +54,7 @@ class CoreCachedSharedPtr { ...@@ -55,7 +54,7 @@ class CoreCachedSharedPtr {
} }
std::shared_ptr<T> get() const { std::shared_ptr<T> get() const {
return slots_[AccessSpreader<>::current(kNumSlots)]; return slots_[AccessSpreader<>::cachedCurrent(kNumSlots)];
} }
private: private:
...@@ -77,7 +76,7 @@ class CoreCachedWeakPtr { ...@@ -77,7 +76,7 @@ class CoreCachedWeakPtr {
} }
std::weak_ptr<T> get() const { std::weak_ptr<T> get() const {
return slots_[AccessSpreader<>::current(kNumSlots)]; return slots_[AccessSpreader<>::cachedCurrent(kNumSlots)];
} }
private: private:
...@@ -135,7 +134,7 @@ class AtomicCoreCachedSharedPtr { ...@@ -135,7 +134,7 @@ class AtomicCoreCachedSharedPtr {
if (!slots) { if (!slots) {
return nullptr; return nullptr;
} }
return (slots->slots_)[AccessSpreader<>::current(kNumSlots)]; return (slots->slots_)[AccessSpreader<>::cachedCurrent(kNumSlots)];
} }
private: private:
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <folly/Benchmark.h> #include <folly/Benchmark.h>
#include <folly/Portability.h> #include <folly/Portability.h>
#include <folly/concurrency/AtomicSharedPtr.h>
#include <folly/concurrency/CoreCachedSharedPtr.h> #include <folly/concurrency/CoreCachedSharedPtr.h>
#include <folly/portability/GTest.h> #include <folly/portability/GTest.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment