Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(598)

Unified Diff: base/memory/memory_coordinator_proxy.cc

Issue 2703743002: Refactor MemoryCoordinatorProxy (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/memory/memory_coordinator_proxy.cc
diff --git a/base/memory/memory_coordinator_proxy.cc b/base/memory/memory_coordinator_proxy.cc
index 24b6d66655e0e0d1cdaf59f89b7c2f2cb0c7458f..03e63873f30a7e8a88f31dd626291e64c42c7970 100644
--- a/base/memory/memory_coordinator_proxy.cc
+++ b/base/memory/memory_coordinator_proxy.cc
@@ -4,38 +4,52 @@
#include "base/memory/memory_coordinator_proxy.h"
+#include "base/atomicops.h"
+
namespace base {
+namespace {
+
+subtle::AtomicWord g_memory_coordinator = 0;
dcheng 2017/02/20 03:07:21 Is it necessary to use atomics? The base::Callback
bashi 2017/02/20 03:16:59 Probably it isn't necessary to use atomics. I just
+
+inline MemoryCoordinator* GetMemoryCoordinator() {
+ subtle::AtomicWord coordinator =
+ base::subtle::Acquire_Load(&g_memory_coordinator);
+ return reinterpret_cast<MemoryCoordinator*>(coordinator);
+}
+
+} // namespace
+
MemoryCoordinatorProxy::MemoryCoordinatorProxy() {
}
MemoryCoordinatorProxy::~MemoryCoordinatorProxy() {
}
+// static
MemoryCoordinatorProxy* MemoryCoordinatorProxy::GetInstance() {
return Singleton<base::MemoryCoordinatorProxy>::get();
}
+// static
+void MemoryCoordinatorProxy::SetMemoryCoordinator(
+ MemoryCoordinator* coordinator) {
+ base::subtle::Release_Store(
+ &g_memory_coordinator, reinterpret_cast<subtle::AtomicWord>(coordinator));
+}
+
MemoryState MemoryCoordinatorProxy::GetCurrentMemoryState() const {
- if (!getter_callback_)
+ auto* coordinator = GetMemoryCoordinator();
+ if (!coordinator)
return MemoryState::NORMAL;
- return getter_callback_.Run();
+ return coordinator->GetCurrentMemoryState();
}
void MemoryCoordinatorProxy::SetCurrentMemoryStateForTesting(
MemoryState memory_state) {
- DCHECK(setter_callback_);
- setter_callback_.Run(memory_state);
-}
-
-void MemoryCoordinatorProxy::SetGetCurrentMemoryStateCallback(
- GetCurrentMemoryStateCallback callback) {
- getter_callback_ = callback;
-}
-
-void MemoryCoordinatorProxy::SetSetCurrentMemoryStateForTestingCallback(
- SetCurrentMemoryStateCallback callback) {
- setter_callback_ = callback;
+ auto* coordinator = GetMemoryCoordinator();
+ DCHECK(coordinator);
+ coordinator->SetCurrentMemoryStateForTesting(memory_state);
}
} // namespace base

Powered by Google App Engine
This is Rietveld 408576698