Chromium Code Reviews| Index: sql/sql_memory_dump_provider.cc |
| diff --git a/sql/sql_memory_dump_provider.cc b/sql/sql_memory_dump_provider.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a2b280ae1cefed3fc3ca44b9227584e92470b97a |
| --- /dev/null |
| +++ b/sql/sql_memory_dump_provider.cc |
| @@ -0,0 +1,56 @@ |
| +// Copyright 2015 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 "sql/sql_memory_dump_provider.h" |
| + |
| +#include "base/trace_event/memory_dump_manager.h" |
| +#include "base/trace_event/process_memory_dump.h" |
| +#include "third_party/sqlite/sqlite3.h" |
| + |
| +namespace sql { |
| + |
| +// static |
| +SqlMemoryDumpProvider* SqlMemoryDumpProvider::GetInstance() { |
| + return base::Singleton< |
| + SqlMemoryDumpProvider, |
| + base::LeakySingletonTraits<SqlMemoryDumpProvider>>::get(); |
| +} |
| + |
| +SqlMemoryDumpProvider::SqlMemoryDumpProvider() {} |
| + |
| +SqlMemoryDumpProvider::~SqlMemoryDumpProvider() {} |
| + |
| +bool SqlMemoryDumpProvider::OnMemoryDump( |
| + const base::trace_event::MemoryDumpArgs& args, |
| + base::trace_event::ProcessMemoryDump* pmd) { |
| + base::trace_event::MemoryAllocatorDump* dump = |
| + pmd->CreateAllocatorDump("sqlite"); |
| + dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, |
| + base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
| + sqlite3_memory_used()); |
| + dump->AddScalar("malloc_high_wmark_size", |
| + base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
| + sqlite3_memory_highwater(1 /*resetFlag */)); |
|
Scott Hess - ex-Googler
2015/10/07 23:08:57
sqlite3_memory_used() is literally sqlite3_status(
ssid
2015/10/08 16:53:59
I see. I thought getting them separately was faste
|
| + |
| + int status; |
| + int dummy_high_water = -1; |
| + int malloc_count = -1; |
| + status = sqlite3_status(SQLITE_STATUS_MALLOC_COUNT, &malloc_count, |
| + &dummy_high_water, 0 /* resetFlag */); |
| + if (status == SQLITE_OK) { |
| + dump->AddScalar("malloc_count", |
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects, |
| + malloc_count); |
| + } |
| + |
| + const char* system_allocator_name = |
| + base::trace_event::MemoryDumpManager::GetInstance() |
| + ->system_allocator_pool_name(); |
| + if (system_allocator_name) { |
| + pmd->AddSuballocation(dump->guid(), system_allocator_name); |
| + } |
| + return true; |
| +} |
| + |
| +} // namespace sql |