static PassRefPtr<Protocol::Timeline::CPUProfileNode> buildInspectorObject(const JSC::ProfileNode* node) { RefPtr<Protocol::Array<Protocol::Timeline::CPUProfileNodeCall>> calls = Protocol::Array<Protocol::Timeline::CPUProfileNodeCall>::create(); for (const JSC::ProfileNode::Call& call : node->calls()) calls->addItem(buildInspectorObject(call)); RefPtr<Protocol::Timeline::CPUProfileNode> result = Protocol::Timeline::CPUProfileNode::create() .setId(node->id()) .setCalls(calls.release()); if (!node->functionName().isEmpty()) result->setFunctionName(node->functionName()); if (!node->url().isEmpty()) { result->setUrl(node->url()); result->setLineNumber(node->lineNumber()); result->setColumnNumber(node->columnNumber()); } if (!node->children().isEmpty()) { RefPtr<Protocol::Array<Protocol::Timeline::CPUProfileNode>> children = Protocol::Array<Protocol::Timeline::CPUProfileNode>::create(); for (RefPtr<JSC::ProfileNode> profileNode : node->children()) children->addItem(buildInspectorObject(profileNode.get())); result->setChildren(children); } return result.release(); }
static Ref<Protocol::Timeline::CPUProfileNode> buildInspectorObject(const JSC::ProfileNode* node) { auto result = Protocol::Timeline::CPUProfileNode::create() .setId(node->id()) .setCallInfo(buildAggregateCallInfoInspectorObject(node)) .release(); if (!node->functionName().isEmpty()) result->setFunctionName(node->functionName()); if (!node->url().isEmpty()) { result->setUrl(node->url()); result->setLineNumber(node->lineNumber()); result->setColumnNumber(node->columnNumber()); } if (!node->children().isEmpty()) { auto children = Protocol::Array<Protocol::Timeline::CPUProfileNode>::create(); for (RefPtr<JSC::ProfileNode> profileNode : node->children()) children->addItem(buildInspectorObject(profileNode.get())); result->setChildren(WTFMove(children)); } return result; }
static Ref<Protocol::Timeline::CPUProfile> buildProfileInspectorObject(const JSC::Profile* profile) { auto rootNodes = Protocol::Array<Protocol::Timeline::CPUProfileNode>::create(); for (RefPtr<JSC::ProfileNode> profileNode : profile->rootNode()->children()) rootNodes->addItem(buildInspectorObject(profileNode.get())); return Protocol::Timeline::CPUProfile::create() .setRootNodes(WTF::move(rootNodes)) .release(); }
static PassRefPtr<Protocol::Timeline::CPUProfile> buildProfileInspectorObject(const JSC::Profile* profile) { RefPtr<Protocol::Array<Protocol::Timeline::CPUProfileNode>> rootNodes = Protocol::Array<Protocol::Timeline::CPUProfileNode>::create(); for (RefPtr<JSC::ProfileNode> profileNode : profile->rootNode()->children()) rootNodes->addItem(buildInspectorObject(profileNode.get())); RefPtr<Protocol::Timeline::CPUProfile> result = Protocol::Timeline::CPUProfile::create() .setRootNodes(rootNodes); return result.release(); }