| Index: Source/core/inspector/ScriptProfile.cpp
|
| diff --git a/Source/core/inspector/ScriptProfile.cpp b/Source/core/inspector/ScriptProfile.cpp
|
| index e835b01121c0b3a0674f58813e6f8bff186ba6a6..d1663b2eefde9fb6c30c07bfa01ac232d3818c2f 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::LineTickInfo> > buildInspectorObjectForLineTicks(const v8::CpuProfileNode* node)
|
| +{
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::Profiler::LineTickInfo> > array = TypeBuilder::Array<TypeBuilder::Profiler::LineTickInfo>::create();
|
| + unsigned lineCount = node->GetHitLineCount();
|
| + if (!lineCount)
|
| + return array;
|
| +
|
| + Vector<v8::CpuProfileNode::LineTick> entries(lineCount);
|
| + if (node->GetLineTicks(&entries[0], lineCount)) {
|
| + for (unsigned i = 0; i < lineCount; i++) {
|
| + RefPtr<TypeBuilder::Profiler::LineTickInfo> line = TypeBuilder::Profiler::LineTickInfo::create()
|
| + .setLine(entries[i].line)
|
| + .setTicks(entries[i].hit_count);
|
| + array->addItem(line);
|
| + }
|
| + }
|
| +
|
| + 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::LineTickInfo> > 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();
|
|
|