| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/happymandarin/node_modules/v8-profiler/src/ |
Upload File : |
#include "cpu_profiler.h"
#include "cpu_profile.h"
namespace nodex {
using v8::CpuProfile;
using v8::Handle;
using v8::Local;
using v8::Object;
using v8::Array;
using v8::String;
CpuProfiler::CpuProfiler () {}
CpuProfiler::~CpuProfiler () {}
void CpuProfiler::Initialize (Local<Object> target) {
Nan::HandleScope scope;
Local<Object> cpuProfiler = Nan::New<Object>();
Local<Array> profiles = Nan::New<Array>();
Nan::SetMethod(cpuProfiler, "startProfiling", CpuProfiler::StartProfiling);
Nan::SetMethod(cpuProfiler, "stopProfiling", CpuProfiler::StopProfiling);
Nan::SetMethod(cpuProfiler, "setSamplingInterval", CpuProfiler::SetSamplingInterval);
cpuProfiler->Set(Nan::New<String>("profiles").ToLocalChecked(), profiles);
Profile::profiles.Reset(profiles);
target->Set(Nan::New<String>("cpu").ToLocalChecked(), cpuProfiler);
}
NAN_METHOD(CpuProfiler::StartProfiling) {
Local<String> title = info[0]->ToString();
#if (NODE_MODULE_VERSION > 0x000B)
bool recsamples = info[1]->ToBoolean()->Value();
v8::Isolate::GetCurrent()->GetCpuProfiler()->StartProfiling(title, recsamples);
#else
v8::CpuProfiler::StartProfiling(title);
#endif
}
NAN_METHOD(CpuProfiler::StopProfiling) {
const CpuProfile* profile;
Local<String> title = Nan::EmptyString();
if (info.Length()) {
if (info[0]->IsString()) {
title = info[0]->ToString();
} else if (!info[0]->IsUndefined()) {
return Nan::ThrowTypeError("Wrong argument [0] type (wait String)");
}
}
#if (NODE_MODULE_VERSION > 0x000B)
profile = v8::Isolate::GetCurrent()->GetCpuProfiler()->StopProfiling(title);
#else
profile = v8::CpuProfiler::StopProfiling(title);
#endif
info.GetReturnValue().Set(Profile::New(profile));
}
NAN_METHOD(CpuProfiler::SetSamplingInterval) {
#if (NODE_MODULE_VERSION > 0x000B)
v8::Isolate::GetCurrent()->GetCpuProfiler()->SetSamplingInterval(info[0]->Uint32Value());
#endif
}
} //namespace nodex