| 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..bb6d81306c000c4ba87be4784539711ac68ce1c3
|
| --- /dev/null
|
| +++ b/sql/sql_memory_dump_provider.cc
|
| @@ -0,0 +1,62 @@
|
| +// 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) {
|
| + int memory_used = 0;
|
| + int memory_high_water = 0;
|
| + int status = sqlite3_status(SQLITE_STATUS_MEMORY_USED, &memory_used,
|
| + &memory_high_water, 1 /*resetFlag */);
|
| + if (status != SQLITE_OK)
|
| + return false;
|
| +
|
| + base::trace_event::MemoryAllocatorDump* dump =
|
| + pmd->CreateAllocatorDump("sqlite");
|
| + dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
|
| + base::trace_event::MemoryAllocatorDump::kUnitsBytes,
|
| + memory_used);
|
| + dump->AddScalar("malloc_high_wmark_size",
|
| + base::trace_event::MemoryAllocatorDump::kUnitsBytes,
|
| + memory_high_water);
|
| +
|
| + 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
|
|
|