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

Unified Diff: base/trace_event/memory_dump_manager.h

Issue 2819413002: [memory-infra] Remove MemoryDumpManagerDelegate (Closed)
Patch Set: rebase. Created 3 years, 8 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
« no previous file with comments | « no previous file | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/trace_event/memory_dump_manager.h
diff --git a/base/trace_event/memory_dump_manager.h b/base/trace_event/memory_dump_manager.h
index 1583c9ee6c7b5d37e104f1763015bce07454ec64..7d35ca5cd2f51685e0c0f4a25685ef98354ef88b 100644
--- a/base/trace_event/memory_dump_manager.h
+++ b/base/trace_event/memory_dump_manager.h
@@ -24,11 +24,11 @@
#include "base/trace_event/process_memory_dump.h"
#include "base/trace_event/trace_event.h"
-// Forward declare |MemoryDumpManagerDelegateImplTest| so that we can make it a
+// Forward declare |ProcessLocalDumpManagerImplTest| so that we can make it a
// friend of |MemoryDumpManager| and give it access to |SetInstanceForTesting|.
namespace memory_instrumentation {
-class MemoryDumpManagerDelegateImplTest;
+class ProcessLocalDumpManagerImplTest;
} // namespace memory_instrumentation
@@ -40,7 +40,6 @@ class Thread;
namespace trace_event {
class MemoryTracingObserver;
-class MemoryDumpManagerDelegate;
class MemoryDumpProvider;
class MemoryDumpSessionState;
@@ -49,6 +48,10 @@ class MemoryDumpSessionState;
// RequestDumpPoint(). The extension by Un(RegisterDumpProvider).
class BASE_EXPORT MemoryDumpManager {
public:
+ using RequestGlobalDumpFunction =
+ RepeatingCallback<void(const MemoryDumpRequestArgs& args,
+ const GlobalMemoryDumpCallback& callback)>;
+
static const char* const kTraceCategory;
static const char* const kLogPrefix;
@@ -64,10 +67,12 @@ class BASE_EXPORT MemoryDumpManager {
// On the other side, the MemoryDumpManager will not be fully operational
// (i.e. will NACK any RequestGlobalMemoryDump()) until initialized.
// Arguments:
- // delegate: inversion-of-control interface for embedder-specific behaviors
- // (multiprocess handshaking). See the lifetime and thread-safety
- // requirements in the |MemoryDumpManagerDelegate| docstring.
- void Initialize(std::unique_ptr<MemoryDumpManagerDelegate> delegate);
+ // request_dump_function: Function to invoke a global dump. Global dump
+ // involves embedder-specific behaviors like multiprocess handshaking.
+ // is_coordinator: True when current process coodinates the periodic dump
+ // triggering.
+ void Initialize(RequestGlobalDumpFunction request_dump_function,
+ bool is_coordinator);
// (Un)Registers a MemoryDumpProvider instance.
// Args:
@@ -130,6 +135,14 @@ class BASE_EXPORT MemoryDumpManager {
// Enable.
void Disable();
+ // NOTE: Use RequestGlobalDump() to create memory dumps. Creates a memory dump
+ // for the current process and appends it to the trace. |callback| will be
+ // invoked asynchronously upon completion on the same thread on which
+ // CreateProcessDump() was called. This method should only be used by the
+ // embedder while creating a global memory dump.
+ void CreateProcessDump(const MemoryDumpRequestArgs& args,
+ const ProcessMemoryDumpCallback& callback);
+
// Enable heap profiling if kEnableHeapProfiling is specified.
void EnableHeapProfilingIfNeeded();
@@ -172,9 +185,8 @@ class BASE_EXPORT MemoryDumpManager {
private:
friend std::default_delete<MemoryDumpManager>; // For the testing instance.
friend struct DefaultSingletonTraits<MemoryDumpManager>;
- friend class MemoryDumpManagerDelegate;
friend class MemoryDumpManagerTest;
- friend class memory_instrumentation::MemoryDumpManagerDelegateImplTest;
+ friend class memory_instrumentation::ProcessLocalDumpManagerImplTest;
// Holds the state of a process memory dump that needs to be carried over
// across task runners in order to fulfil an asynchronous CreateProcessDump()
@@ -245,13 +257,6 @@ class BASE_EXPORT MemoryDumpManager {
void FinalizeDumpAndAddToTrace(
std::unique_ptr<ProcessMemoryDumpAsyncState> pmd_async_state);
- // Internal, used only by MemoryDumpManagerDelegate.
- // Creates a memory dump for the current process and appends it to the trace.
- // |callback| will be invoked asynchronously upon completion on the same
- // thread on which CreateProcessDump() was called.
- void CreateProcessDump(const MemoryDumpRequestArgs& args,
- const ProcessMemoryDumpCallback& callback);
-
// Calls InvokeOnMemoryDump() for the next MDP on the task runner specified by
// the MDP while registration. On failure to do so, skips and continues to
// next MDP.
@@ -291,11 +296,16 @@ class BASE_EXPORT MemoryDumpManager {
std::unordered_set<StringPiece, StringPieceHash>
strict_thread_check_blacklist_;
- std::unique_ptr<MemoryDumpManagerDelegate> delegate_;
std::unique_ptr<MemoryTracingObserver> tracing_observer_;
- // Protects from concurrent accesses to the |dump_providers_*| and |delegate_|
- // to guard against disabling logging while dumping on another thread.
+ // Function provided by the embedder to handle global dump requests.
+ RequestGlobalDumpFunction request_dump_function_;
+
+ // True when current process coordinates the periodic dump triggering.
+ bool is_coordinator_;
+
+ // Protects from concurrent accesses to the local state, eg: to guard against
+ // disabling logging while dumping on another thread.
Lock lock_;
// Optimization to avoid attempting any memory dump (i.e. to not walk an empty
@@ -319,29 +329,6 @@ class BASE_EXPORT MemoryDumpManager {
DISALLOW_COPY_AND_ASSIGN(MemoryDumpManager);
};
-// The delegate is supposed to be long lived (read: a Singleton) and thread
-// safe (i.e. should expect calls from any thread and handle thread hopping).
-class BASE_EXPORT MemoryDumpManagerDelegate {
- public:
- MemoryDumpManagerDelegate() {}
- virtual ~MemoryDumpManagerDelegate() {}
-
- virtual void RequestGlobalMemoryDump(
- const MemoryDumpRequestArgs& args,
- const GlobalMemoryDumpCallback& callback) = 0;
-
- virtual bool IsCoordinator() const = 0;
-
- protected:
- void CreateProcessDump(const MemoryDumpRequestArgs& args,
- const ProcessMemoryDumpCallback& callback) {
- MemoryDumpManager::GetInstance()->CreateProcessDump(args, callback);
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MemoryDumpManagerDelegate);
-};
-
} // namespace trace_event
} // namespace base
« no previous file with comments | « no previous file | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698