Chromium Code Reviews| Index: Source/core/inspector/ScriptProfile.cpp |
| diff --git a/Source/core/inspector/ScriptProfile.cpp b/Source/core/inspector/ScriptProfile.cpp |
| index e835b01121c0b3a0674f58813e6f8bff186ba6a6..8b7b1216fcfe51f42a5a257ecc0ccd07ef65221e 100644 |
| --- a/Source/core/inspector/ScriptProfile.cpp |
| +++ b/Source/core/inspector/ScriptProfile.cpp |
| @@ -64,6 +64,26 @@ double ScriptProfile::endTime() const |
| return static_cast<double>(m_profile->GetEndTime()) / 1000000; |
| } |
| +static RefPtr<TypeBuilder::Array<TypeBuilder::Profiler::LineTick> > buildInspectorObjectForLineTicks(const v8::CpuProfileNode* node) |
| +{ |
| + RefPtr<TypeBuilder::Array<TypeBuilder::Profiler::LineTick> > array = TypeBuilder::Array<TypeBuilder::Profiler::LineTick>::create(); |
| + unsigned lineCount = node->GetHitLineCount(); |
| + if (lineCount) { |
|
apavlov
2014/11/13 09:08:30
We prefer early bail-outs (this saves indentation
Pan
2014/11/17 01:14:22
Done.
|
| + Vector<v8::CpuProfileNode::LineTick> entries(lineCount); |
| + bool res = node->GetLineTicks(&entries[0], lineCount); |
|
apavlov
2014/11/13 09:08:30
This can be inlined into the conditional.
Pan
2014/11/17 01:14:22
Done.
|
| + if (res) { |
| + for (unsigned i = 0; i < lineCount; i++) { |
| + RefPtr<TypeBuilder::Profiler::LineTick> line = TypeBuilder::Profiler::LineTick::create() |
| + .setLine(entries[i].line) |
| + .setTicks(entries[i].hit_count); |
| + array->addItem(line); |
|
apavlov
2014/11/13 09:08:30
line.release()
Pan
2014/11/17 01:14:22
Done.
|
| + line.release(); |
|
apavlov
2014/11/13 09:08:30
Remove this line, as it makes no sense this way. l
Pan
2014/11/17 01:14:22
Done.
|
| + } |
| + } |
| + } |
| + return array; |
| +} |
| + |
| static PassRefPtr<TypeBuilder::Profiler::CPUProfileNode> buildInspectorObjectFor(const v8::CpuProfileNode* node) |
| { |
| v8::HandleScope handleScope(v8::Isolate::GetCurrent()); |
| @@ -75,6 +95,8 @@ static PassRefPtr<TypeBuilder::Profiler::CPUProfileNode> buildInspectorObjectFor |
| children->addItem(buildInspectorObjectFor(child)); |
| } |
| + RefPtr<TypeBuilder::Array<TypeBuilder::Profiler::LineTick> > lineTicks = buildInspectorObjectForLineTicks(node); |
| + |
| RefPtr<TypeBuilder::Profiler::CPUProfileNode> result = TypeBuilder::Profiler::CPUProfileNode::create() |
| .setFunctionName(toCoreString(node->GetFunctionName())) |
| .setScriptId(String::number(node->GetScriptId())) |
| @@ -84,6 +106,7 @@ static PassRefPtr<TypeBuilder::Profiler::CPUProfileNode> buildInspectorObjectFor |
| .setHitCount(node->GetHitCount()) |
| .setCallUID(node->GetCallUid()) |
| .setChildren(children.release()) |
| + .setLineTicks(lineTicks.release()) |
| .setDeoptReason(node->GetBailoutReason()) |
| .setId(node->GetNodeId()); |
| return result.release(); |