v8 API Deep Dive

CpuProfileNode

v8-profiler

// src/cpu_profile_node.cc

#include "v8-profiler.h"
[ .. ]

using v8::CpuProfileNode;
[ .. ]

Local<Value> ProfileNode::New (const CpuProfileNode* node) {
  Nan::EscapableHandleScope scope;

  int32_t count = node->GetChildrenCount();
  Local<Object> profile_node = Nan::New<Object>();
  Local<Array> children = Nan::New<Array>(count);

  for (int32_t index = 0; index < count; index++) {
    children->Set(index, ProfileNode::New(node->GetChild(index)));
  }

  profile_node->Set(Nan::New<String>("functionName").ToLocalChecked(),
                    node->GetFunctionName());
  profile_node->Set(Nan::New<String>("url").ToLocalChecked(),
                    node->GetScriptResourceName());
  profile_node->Set(Nan::New<String>("lineNumber").ToLocalChecked(),
                    Nan::New<Integer>(node->GetLineNumber()));
  [ .. ]