123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "gin/v8_shared_memory_dump_provider.h"
- #include <string>
- #include "base/memory/singleton.h"
- #include "base/trace_event/memory_dump_manager.h"
- #include "base/trace_event/process_memory_dump.h"
- #include "v8/include/v8-initialization.h"
- #include "v8/include/v8-isolate.h"
- namespace gin {
- V8SharedMemoryDumpProvider::V8SharedMemoryDumpProvider() {
- base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
- this, "V8SharedMemory", nullptr);
- }
- // static
- void V8SharedMemoryDumpProvider::Register() {
- // The provider is registered as part of the constructor, so all this does is
- // access the singleton causing it to be constructed on the first access.
- base::Singleton<
- V8SharedMemoryDumpProvider,
- base::LeakySingletonTraits<V8SharedMemoryDumpProvider>>::get();
- }
- // Called at trace dump point time. Creates a snapshot with the memory counters
- // for the current isolate.
- bool V8SharedMemoryDumpProvider::OnMemoryDump(
- const base::trace_event::MemoryDumpArgs& args,
- base::trace_event::ProcessMemoryDump* process_memory_dump) {
- v8::SharedMemoryStatistics shared_memory_statistics;
- v8::V8::GetSharedMemoryStatistics(&shared_memory_statistics);
- std::string dump_base_name = "v8/shared";
- auto* shared_memory_dump = process_memory_dump->CreateAllocatorDump(
- dump_base_name + "/read_only_space");
- shared_memory_dump->AddScalar(
- base::trace_event::MemoryAllocatorDump::kNameSize,
- base::trace_event::MemoryAllocatorDump::kUnitsBytes,
- shared_memory_statistics.read_only_space_physical_size());
- shared_memory_dump->AddScalar(
- "allocated_objects_size",
- base::trace_event::MemoryAllocatorDump::kUnitsBytes,
- shared_memory_statistics.read_only_space_used_size());
- shared_memory_dump->AddScalar(
- "virtual_size", base::trace_event::MemoryAllocatorDump::kUnitsBytes,
- shared_memory_statistics.read_only_space_size());
- return true;
- }
- } // namespace gin
|