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..3385c7ed07b4082a57023003566929af3483f3e3 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; |
+ auto array = protocol::Array<protocol::Profiler::PositionTickInfo>::create(); |
std::vector<v8::CpuProfileNode::LineTick> entries(lineCount); |
if (node->GetLineTicks(&entries[0], lineCount)) { |
for (unsigned i = 0; i < lineCount; i++) { |
@@ -42,42 +41,46 @@ 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() |
+ auto callFrame = protocol::Runtime::CallFrame::create() |
.setFunctionName(toProtocolString(node->GetFunctionName())) |
.setScriptId(String16::fromInteger(node->GetScriptId())) |
.setUrl(toProtocolString(node->GetScriptResourceName())) |
.setLineNumber(node->GetLineNumber() - 1) |
.setColumnNumber(node->GetColumnNumber() - 1) |
.build(); |
- std::unique_ptr<protocol::Profiler::CPUProfileNode> result = protocol::Profiler::CPUProfileNode::create() |
+ auto 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(); |
if (childrenCount) { |
- std::unique_ptr<protocol::Array<int>> children = protocol::Array<int>::create(); |
+ auto children = protocol::Array<int>::create(); |
for (int i = 0; i < childrenCount; i++) |
children->addItem(node->GetChild(i)->GetNodeId()); |
result->setChildren(std::move(children)); |
} |
+ |
+ const char* deoptReason = node->GetBailoutReason(); |
+ if (deoptReason && deoptReason[0] && strcmp(deoptReason, "no reason")) |
+ result->setDeoptReason(deoptReason); |
+ |
+ auto positionTicks = buildInspectorObjectForPositionTicks(node); |
+ if (positionTicks) |
+ result->setPositionTicks(std::move(positionTicks)); |
+ |
return result; |
} |
std::unique_ptr<protocol::Array<int>> buildInspectorObjectForSamples(v8::CpuProfile* v8profile) |
{ |
- std::unique_ptr<protocol::Array<int>> array = protocol::Array<int>::create(); |
+ auto array = protocol::Array<int>::create(); |
int count = v8profile->GetSamplesCount(); |
for (int i = 0; i < count; i++) |
array->addItem(v8profile->GetSample(i)->GetNodeId()); |
@@ -86,7 +89,7 @@ std::unique_ptr<protocol::Array<int>> buildInspectorObjectForSamples(v8::CpuProf |
std::unique_ptr<protocol::Array<int>> buildInspectorObjectForTimestamps(v8::CpuProfile* v8profile) |
{ |
- std::unique_ptr<protocol::Array<int>> array = protocol::Array<int>::create(); |
+ auto array = protocol::Array<int>::create(); |
int count = v8profile->GetSamplesCount(); |
uint64_t lastTime = v8profile->GetStartTime(); |
for (int i = 0; i < count; i++) { |
@@ -107,10 +110,10 @@ void flattenNodesTree(v8::Isolate* isolate, const v8::CpuProfileNode* node, prot |
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(); |
+ auto nodes = protocol::Array<protocol::Profiler::CPUProfileNode>::create(); |
flattenNodesTree(isolate, v8profile->GetTopDownRoot(), nodes.get()); |
- std::unique_ptr<protocol::Profiler::CPUProfile> profile = protocol::Profiler::CPUProfile::create() |
+ auto profile = protocol::Profiler::CPUProfile::create() |
.setNodes(std::move(nodes)) |
.setStartTime(static_cast<double>(v8profile->GetStartTime())) |
.setEndTime(static_cast<double>(v8profile->GetEndTime())).build(); |
@@ -122,7 +125,7 @@ std::unique_ptr<protocol::Profiler::CPUProfile> createCPUProfile(v8::Isolate* is |
std::unique_ptr<protocol::Debugger::Location> currentDebugLocation(V8InspectorImpl* inspector) |
{ |
std::unique_ptr<V8StackTrace> callStack = inspector->captureStackTrace(1); |
- std::unique_ptr<protocol::Debugger::Location> location = protocol::Debugger::Location::create() |
+ auto location = protocol::Debugger::Location::create() |
.setScriptId(callStack->topScriptId()) |
.setLineNumber(callStack->topLineNumber()).build(); |
location->setColumnNumber(callStack->topColumnNumber()); |