Commit 7c70aa5a authored by Keishi Hattori's avatar Keishi Hattori Committed by Commit Bot

Add InstanceCountersMemoryDumpProvider

Adds Blink's instance count data to memory infra

Bug: None
Change-Id: I6c814846017e0e7906f014c93b4ffbf7adaccb88
Reviewed-on: https://chromium-review.googlesource.com/577471
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarPrimiano Tucci <primiano@chromium.org>
Reviewed-by: default avatarErik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488597}
parent 04998e8a
...@@ -263,6 +263,8 @@ component("platform") { ...@@ -263,6 +263,8 @@ component("platform") {
"Histogram.h", "Histogram.h",
"InstanceCounters.cpp", "InstanceCounters.cpp",
"InstanceCounters.h", "InstanceCounters.h",
"InstanceCountersMemoryDumpProvider.cc",
"InstanceCountersMemoryDumpProvider.h",
"KeyboardCodes.h", "KeyboardCodes.h",
"KillRing.h", "KillRing.h",
"KillRingNone.cpp", "KillRingNone.cpp",
......
// Copyright 2017 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 "platform/InstanceCountersMemoryDumpProvider.h"
#include "base/trace_event/process_memory_dump.h"
#include "platform/InstanceCounters.h"
#include "platform/wtf/StdLibExtras.h"
namespace blink {
InstanceCountersMemoryDumpProvider*
InstanceCountersMemoryDumpProvider::Instance() {
DEFINE_STATIC_LOCAL(InstanceCountersMemoryDumpProvider, instance, ());
return &instance;
}
bool InstanceCountersMemoryDumpProvider::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* memory_dump) {
using base::trace_event::MemoryAllocatorDump;
#define DUMP_COUNTER(CounterType) \
{ \
MemoryAllocatorDump* counter_dump = \
memory_dump->CreateAllocatorDump("counter/" #CounterType); \
counter_dump->AddScalar("object_count", \
MemoryAllocatorDump::kUnitsObjects, \
InstanceCounters::CounterValue( \
InstanceCounters::k##CounterType##Counter)); \
break; \
}
for (int i = 0; i < InstanceCounters::kCounterTypeLength; ++i) {
InstanceCounters::CounterType type =
static_cast<InstanceCounters::CounterType>(i);
switch (type) {
case InstanceCounters::kAudioHandlerCounter:
DUMP_COUNTER(AudioHandler)
case InstanceCounters::kDocumentCounter:
DUMP_COUNTER(Document)
case InstanceCounters::kFrameCounter:
DUMP_COUNTER(Frame)
case InstanceCounters::kJSEventListenerCounter:
DUMP_COUNTER(JSEventListener)
case InstanceCounters::kLayoutObjectCounter:
DUMP_COUNTER(LayoutObject)
case InstanceCounters::kMediaKeySessionCounter:
DUMP_COUNTER(MediaKeySession)
case InstanceCounters::kMediaKeysCounter:
DUMP_COUNTER(MediaKeys)
case InstanceCounters::kNodeCounter:
DUMP_COUNTER(Node)
case InstanceCounters::kResourceCounter:
DUMP_COUNTER(Resource)
case InstanceCounters::kScriptPromiseCounter:
DUMP_COUNTER(ScriptPromise)
case InstanceCounters::kSuspendableObjectCounter:
DUMP_COUNTER(SuspendableObject)
case InstanceCounters::kV8PerContextDataCounter:
DUMP_COUNTER(V8PerContextData)
case InstanceCounters::kWorkerGlobalScopeCounter:
DUMP_COUNTER(WorkerGlobalScope)
case InstanceCounters::kCounterTypeLength:
break;
}
}
return true;
}
} // namespace blink
// Copyright 2017 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.
#ifndef InstanceCountersMemoryDumpProvider_h
#define InstanceCountersMemoryDumpProvider_h
#include "base/trace_event/memory_dump_provider.h"
#include "platform/PlatformExport.h"
#include "platform/wtf/Allocator.h"
#include "platform/wtf/Noncopyable.h"
namespace blink {
class PLATFORM_EXPORT InstanceCountersMemoryDumpProvider final
: public base::trace_event::MemoryDumpProvider {
USING_FAST_MALLOC(InstanceCountersMemoryDumpProvider);
public:
static InstanceCountersMemoryDumpProvider* Instance();
~InstanceCountersMemoryDumpProvider() override {}
// MemoryDumpProvider implementation.
bool OnMemoryDump(const base::trace_event::MemoryDumpArgs&,
base::trace_event::ProcessMemoryDump*) override;
private:
InstanceCountersMemoryDumpProvider() {}
WTF_MAKE_NONCOPYABLE(InstanceCountersMemoryDumpProvider);
};
} // namespace blink
#endif // InstanceCountersMemoryDumpProvider_h
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "base/trace_event/memory_dump_manager.h" #include "base/trace_event/memory_dump_manager.h"
#include "platform/FontFamilyNames.h" #include "platform/FontFamilyNames.h"
#include "platform/Histogram.h" #include "platform/Histogram.h"
#include "platform/InstanceCountersMemoryDumpProvider.h"
#include "platform/Language.h" #include "platform/Language.h"
#include "platform/MemoryCoordinator.h" #include "platform/MemoryCoordinator.h"
#include "platform/PartitionAllocMemoryDumpProvider.h" #include "platform/PartitionAllocMemoryDumpProvider.h"
...@@ -144,6 +145,9 @@ void Platform::Initialize(Platform* platform) { ...@@ -144,6 +145,9 @@ void Platform::Initialize(Platform* platform) {
base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
MemoryCacheDumpProvider::Instance(), "MemoryCache", MemoryCacheDumpProvider::Instance(), "MemoryCache",
base::ThreadTaskRunnerHandle::Get()); base::ThreadTaskRunnerHandle::Get());
base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
InstanceCountersMemoryDumpProvider::Instance(), "BlinkObjectCounters",
base::ThreadTaskRunnerHandle::Get());
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment