Chromium Code Reviews| 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 169573b23ba0e6a181463bdba003e16f38d1f9e6..115089af4691a6ea285442aacf8e28e47c232c32 100644 |
| --- a/third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp |
| +++ b/third_party/WebKit/Source/platform/v8_inspector/V8ProfilerAgentImpl.cpp |
| @@ -28,11 +28,10 @@ namespace { |
| std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> buildInspectorObjectForPositionTicks(const v8::CpuProfileNode* node) |
| { |
| - std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> array = protocol::Array<protocol::Profiler::PositionTickInfo>::create(); |
| unsigned lineCount = node->GetHitLineCount(); |
| if (!lineCount) |
| - return array; |
| - |
| + return nullptr; |
| + std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> array = protocol::Array<protocol::Profiler::PositionTickInfo>::create(); |
|
caseq
2016/08/22 19:14:20
auto array = ...
alph
2016/08/22 19:24:08
Done.
|
| std::vector<v8::CpuProfileNode::LineTick> entries(lineCount); |
| if (node->GetLineTicks(&entries[0], lineCount)) { |
| for (unsigned i = 0; i < lineCount; i++) { |
| @@ -42,15 +41,12 @@ std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> buildInsp |
| array->addItem(std::move(line)); |
| } |
| } |
| - |
| return array; |
| } |
| std::unique_ptr<protocol::Profiler::CPUProfileNode> buildInspectorObjectFor(v8::Isolate* isolate, const v8::CpuProfileNode* node) |
| { |
| v8::HandleScope handleScope(isolate); |
| - |
| - std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> positionTicks = buildInspectorObjectForPositionTicks(node); |
| std::unique_ptr<protocol::Runtime::CallFrame> callFrame = protocol::Runtime::CallFrame::create() |
| .setFunctionName(toProtocolString(node->GetFunctionName())) |
| .setScriptId(String16::fromInteger(node->GetScriptId())) |
| @@ -61,8 +57,6 @@ std::unique_ptr<protocol::Profiler::CPUProfileNode> buildInspectorObjectFor(v8:: |
| std::unique_ptr<protocol::Profiler::CPUProfileNode> result = protocol::Profiler::CPUProfileNode::create() |
| .setCallFrame(std::move(callFrame)) |
| .setHitCount(node->GetHitCount()) |
| - .setPositionTicks(std::move(positionTicks)) |
| - .setDeoptReason(node->GetBailoutReason()) |
| .setId(node->GetNodeId()).build(); |
| const int childrenCount = node->GetChildrenCount(); |
| @@ -72,6 +66,15 @@ std::unique_ptr<protocol::Profiler::CPUProfileNode> buildInspectorObjectFor(v8:: |
| children->addItem(node->GetChild(i)->GetNodeId()); |
| result->setChildren(std::move(children)); |
| } |
| + |
| + const char* deoptReason = node->GetBailoutReason(); |
| + if (deoptReason && deoptReason[0] != '\0' && strcmp(deoptReason, "no reason")) |
|
caseq
2016/08/22 19:14:20
nit: drop != '\0'
alph
2016/08/22 19:24:08
Done.
|
| + result->setDeoptReason(deoptReason); |
| + |
| + std::unique_ptr<protocol::Array<protocol::Profiler::PositionTickInfo>> positionTicks = buildInspectorObjectForPositionTicks(node); |
| + if (positionTicks) |
| + result->setPositionTicks(std::move(positionTicks)); |
| + |
| return result; |
| } |