1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef GIN_V8_ISOLATE_MEMORY_DUMP_PROVIDER_H_
6 #define GIN_V8_ISOLATE_MEMORY_DUMP_PROVIDER_H_
8 #include "base/memory/raw_ptr.h"
9 #include "base/task/single_thread_task_runner.h"
10 #include "base/trace_event/memory_dump_provider.h"
11 #include "gin/gin_export.h"
17 // Memory dump provider for the chrome://tracing infrastructure. It dumps
18 // summarized memory stats about the V8 Isolate.
19 class V8IsolateMemoryDumpProvider
20 : public base::trace_event::MemoryDumpProvider {
22 V8IsolateMemoryDumpProvider(
23 IsolateHolder* isolate_holder,
24 scoped_refptr<base::SingleThreadTaskRunner> task_runner);
25 V8IsolateMemoryDumpProvider(const V8IsolateMemoryDumpProvider&) = delete;
26 V8IsolateMemoryDumpProvider& operator=(const V8IsolateMemoryDumpProvider&) =
28 ~V8IsolateMemoryDumpProvider() override;
30 // MemoryDumpProvider implementation.
32 const base::trace_event::MemoryDumpArgs& args,
33 base::trace_event::ProcessMemoryDump* process_memory_dump) override;
36 void DumpHeapStatistics(
37 const base::trace_event::MemoryDumpArgs& args,
38 base::trace_event::ProcessMemoryDump* process_memory_dump);
40 raw_ptr<IsolateHolder> isolate_holder_; // Not owned.
45 #endif // GIN_V8_ISOLATE_MEMORY_DUMP_PROVIDER_H_