◐ Shell
clean mode source ↗

src: add Env::profiler_idle_notifier_started() · nodejs/node@314b47d

Original file line numberDiff line numberDiff line change

@@ -322,6 +322,10 @@ inline Environment* Environment::GetThreadLocalEnv() {

322322

return static_cast<Environment*>(uv_key_get(&thread_local_env));

323323

}

324324
325+

inline bool Environment::profiler_idle_notifier_started() const {

326+

return profiler_idle_notifier_started_;

327+

}

328+
325329

inline v8::Isolate* Environment::isolate() const {

326330

return isolate_;

327331

}

Original file line numberDiff line numberDiff line change

@@ -263,6 +263,11 @@ void Environment::CleanupHandles() {

263263

}

264264
265265

void Environment::StartProfilerIdleNotifier() {

266+

if (profiler_idle_notifier_started_)

267+

return;

268+
269+

profiler_idle_notifier_started_ = true;

270+
266271

uv_prepare_start(&idle_prepare_handle_, [](uv_prepare_t* handle) {

267272

Environment* env = ContainerOf(&Environment::idle_prepare_handle_, handle);

268273

env->isolate()->SetIdle(true);

@@ -275,6 +280,7 @@ void Environment::StartProfilerIdleNotifier() {

275280

}

276281
277282

void Environment::StopProfilerIdleNotifier() {

283+

profiler_idle_notifier_started_ = false;

278284

uv_prepare_stop(&idle_prepare_handle_);

279285

uv_check_stop(&idle_check_handle_);

280286

}

Original file line numberDiff line numberDiff line change

@@ -615,6 +615,7 @@ class Environment {

615615
616616

void StartProfilerIdleNotifier();

617617

void StopProfilerIdleNotifier();

618+

inline bool profiler_idle_notifier_started() const;

618619
619620

inline v8::Isolate* isolate() const;

620621

inline tracing::Agent* tracing_agent() const;

@@ -840,6 +841,7 @@ class Environment {

840841

uv_idle_t immediate_idle_handle_;

841842

uv_prepare_t idle_prepare_handle_;

842843

uv_check_t idle_check_handle_;

844+

bool profiler_idle_notifier_started_ = false;

843845
844846

AsyncHooks async_hooks_;

845847

ImmediateInfo immediate_info_;