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; |
} |