| Index: third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp
|
| diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp
|
| index 57712a9c107439879c99a6ba3c8e568b08a92d4e..982e70c701c094a3724c5f53b1a4ea113358b46f 100644
|
| --- a/third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp
|
| +++ b/third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp
|
| @@ -50,12 +50,10 @@ std::unique_ptr<protocol::Profiler::CPUProfileNode> buildInspectorObjectFor(v8::
|
| {
|
| v8::HandleScope handleScope(isolate);
|
|
|
| - std::unique_ptr<protocol::Array<protocol::Profiler::CPUProfileNode>> children = protocol::Array<protocol::Profiler::CPUProfileNode>::create();
|
| + std::unique_ptr<protocol::Array<int>> children = protocol::Array<int>::create();
|
| const int childrenCount = node->GetChildrenCount();
|
| - for (int i = 0; i < childrenCount; i++) {
|
| - const v8::CpuProfileNode* child = node->GetChild(i);
|
| - children->addItem(buildInspectorObjectFor(isolate, child));
|
| - }
|
| + for (int i = 0; i < childrenCount; i++)
|
| + children->addItem(node->GetChild(i)->GetNodeId());
|
|
|
| std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> positionTicks = buildInspectorObjectForPositionTicks(node);
|
|
|
| @@ -94,10 +92,21 @@ std::unique_ptr<protocol::Array<double>> buildInspectorObjectForTimestamps(v8::C
|
| return array;
|
| }
|
|
|
| +void flattenNodesTree(v8::Isolate* isolate, const v8::CpuProfileNode* node, protocol::Array<protocol::Profiler::CPUProfileNode>* list)
|
| +{
|
| + list->addItem(buildInspectorObjectFor(isolate, node));
|
| + const int childrenCount = node->GetChildrenCount();
|
| + for (int i = 0; i < childrenCount; i++)
|
| + flattenNodesTree(isolate, node->GetChild(i), list);
|
| +}
|
| +
|
| std::unique_ptr<protocol::Profiler::CPUProfile> createCPUProfile(v8::Isolate* isolate, v8::CpuProfile* v8profile)
|
| {
|
| + std::unique_ptr<protocol::Array<protocol::Profiler::CPUProfileNode>> nodes = protocol::Array<protocol::Profiler::CPUProfileNode>::create();
|
| + flattenNodesTree(isolate, v8profile->GetTopDownRoot(), nodes.get());
|
| +
|
| std::unique_ptr<protocol::Profiler::CPUProfile> profile = protocol::Profiler::CPUProfile::create()
|
| - .setHead(buildInspectorObjectFor(isolate, v8profile->GetTopDownRoot()))
|
| + .setNodes(std::move(nodes))
|
| .setStartTime(static_cast<double>(v8profile->GetStartTime()) / 1000000)
|
| .setEndTime(static_cast<double>(v8profile->GetEndTime()) / 1000000).build();
|
| profile->setSamples(buildInspectorObjectForSamples(v8profile));
|
|
|