static PassRefPtr<Inspector::TypeBuilder::Profiler::CPUProfileNode> buildInspectorObjectFor(const JSC::ProfileNode* node) { typedef Vector<RefPtr<JSC::ProfileNode>> ProfileNodesList; const ProfileNodesList& nodeChildren = node->children(); ProfileNodesList::const_iterator end = nodeChildren.end(); RefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::Profiler::CPUProfileNode>> children = Inspector::TypeBuilder::Array<Inspector::TypeBuilder::Profiler::CPUProfileNode>::create(); for (ProfileNodesList::const_iterator iter = nodeChildren.begin(); iter != end; ++iter) children->addItem(buildInspectorObjectFor(iter->get())); RefPtr<Inspector::TypeBuilder::Profiler::CPUProfileNode> result = Inspector::TypeBuilder::Profiler::CPUProfileNode::create() .setFunctionName(node->functionName()) .setUrl(node->url()) .setLineNumber(node->lineNumber()) .setTotalTime(node->totalTime()) .setSelfTime(node->selfTime()) .setNumberOfCalls(node->numberOfCalls()) .setCallUID(node->callIdentifier().hash()) .setChildren(children.release()); return result.release(); }
static PassRefPtr<InspectorObject> buildInspectorObjectFor(const v8::CpuProfileNode* node) { v8::HandleScope handleScope; RefPtr<InspectorObject> result = InspectorObject::create(); result->setString("functionName", toWebCoreString(node->GetFunctionName())); result->setString("url", toWebCoreString(node->GetScriptResourceName())); result->setNumber("lineNumber", node->GetLineNumber()); result->setNumber("totalTime", node->GetTotalTime()); result->setNumber("selfTime", node->GetSelfTime()); result->setNumber("numberOfCalls", 0); result->setBoolean("visible", true); result->setNumber("callUID", node->GetCallUid()); RefPtr<InspectorArray> children = InspectorArray::create(); const int childrenCount = node->GetChildrenCount(); for (int i = 0; i < childrenCount; i++) { const v8::CpuProfileNode* child = node->GetChild(i); children->pushObject(buildInspectorObjectFor(child)); } result->setArray("children", children); return result.release(); }
static PassRefPtr<InspectorObject> buildInspectorObjectFor(const JSC::ProfileNode* node) { RefPtr<InspectorObject> result = InspectorObject::create(); result->setString("functionName", ustringToString(node->functionName())); result->setString("url", ustringToString(node->url())); result->setNumber("lineNumber", node->lineNumber()); result->setNumber("totalTime", node->totalTime()); result->setNumber("selfTime", node->selfTime()); result->setNumber("numberOfCalls", node->numberOfCalls()); result->setBoolean("visible", node->visible()); result->setNumber("callUID", node->callIdentifier().hash()); RefPtr<InspectorArray> childrenArray = InspectorArray::create(); typedef Vector<RefPtr<JSC::ProfileNode> > ProfileNodesList; const ProfileNodesList& children = node->children(); ProfileNodesList::const_iterator end = children.end(); for (ProfileNodesList::const_iterator iter = children.begin(); iter != end; ++iter) childrenArray->pushObject(buildInspectorObjectFor(iter->get())); result->setArray("children", childrenArray); return result; }
static PassRefPtr<TypeBuilder::Profiler::CPUProfileNode> buildInspectorObjectFor(const v8::CpuProfileNode* node) { v8::HandleScope handleScope(v8::Isolate::GetCurrent()); RefPtr<TypeBuilder::Array<TypeBuilder::Profiler::CPUProfileNode> > children = TypeBuilder::Array<TypeBuilder::Profiler::CPUProfileNode>::create(); const int childrenCount = node->GetChildrenCount(); for (int i = 0; i < childrenCount; i++) { const v8::CpuProfileNode* child = node->GetChild(i); children->addItem(buildInspectorObjectFor(child)); } RefPtr<TypeBuilder::Profiler::CPUProfileNode> result = TypeBuilder::Profiler::CPUProfileNode::create() .setFunctionName(toWebCoreString(node->GetFunctionName())) .setScriptId(String::number(node->GetScriptId())) .setUrl(toWebCoreString(node->GetScriptResourceName())) .setLineNumber(node->GetLineNumber()) .setHitCount(node->GetHitCount()) .setCallUID(node->GetCallUid()) .setChildren(children.release()) .setDeoptReason(node->GetBailoutReason()); result->setId(node->GetNodeId()); return result.release(); }
static PassRefPtr<TypeBuilder::Profiler::CPUProfileNode> buildInspectorObjectFor(const v8::CpuProfileNode* node) { v8::HandleScope handleScope; RefPtr<TypeBuilder::Array<TypeBuilder::Profiler::CPUProfileNode> > children = TypeBuilder::Array<TypeBuilder::Profiler::CPUProfileNode>::create(); const int childrenCount = node->GetChildrenCount(); for (int i = 0; i < childrenCount; i++) { const v8::CpuProfileNode* child = node->GetChild(i); children->addItem(buildInspectorObjectFor(child)); } RefPtr<TypeBuilder::Profiler::CPUProfileNode> result = TypeBuilder::Profiler::CPUProfileNode::create() .setFunctionName(toWebCoreString(node->GetFunctionName())) .setUrl(toWebCoreString(node->GetScriptResourceName())) .setLineNumber(node->GetLineNumber()) .setTotalTime(node->GetTotalTime()) .setSelfTime(node->GetSelfTime()) .setNumberOfCalls(0) .setVisible(true) .setCallUID(node->GetCallUid()) .setChildren(children.release()); return result.release(); }
PassRefPtr<InspectorObject> ScriptProfile::buildInspectorObjectForHead() const { return buildInspectorObjectFor(m_profile->GetTopDownRoot()); }
PassRefPtr<TypeBuilder::Profiler::CPUProfileNode> ScriptProfile::buildInspectorObjectForHead() const { return buildInspectorObjectFor(m_profile->GetTopDownRoot()); }
PassRefPtr<Inspector::TypeBuilder::Profiler::CPUProfileNode> ScriptProfile::buildInspectorObjectForHead() const { return buildInspectorObjectFor(m_profile->head()); }