v8_isolate_memory_dump_provider.h 1.5 KB

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