src: add Env::profiler_idle_notifier_started()
Refs: https://github.com/ayojs/ayo/pull/93 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> PR-URL: https://github.com/nodejs/node/pull/20876 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Shingo Inoue <leko.noor@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Gus Caplan <me@gus.host>
This commit is contained in:
parent
19dae6bd19
commit
8939f36630
@ -322,6 +322,10 @@ inline Environment* Environment::GetThreadLocalEnv() {
|
|||||||
return static_cast<Environment*>(uv_key_get(&thread_local_env));
|
return static_cast<Environment*>(uv_key_get(&thread_local_env));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool Environment::profiler_idle_notifier_started() const {
|
||||||
|
return profiler_idle_notifier_started_;
|
||||||
|
}
|
||||||
|
|
||||||
inline v8::Isolate* Environment::isolate() const {
|
inline v8::Isolate* Environment::isolate() const {
|
||||||
return isolate_;
|
return isolate_;
|
||||||
}
|
}
|
||||||
|
@ -263,6 +263,11 @@ void Environment::CleanupHandles() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Environment::StartProfilerIdleNotifier() {
|
void Environment::StartProfilerIdleNotifier() {
|
||||||
|
if (profiler_idle_notifier_started_)
|
||||||
|
return;
|
||||||
|
|
||||||
|
profiler_idle_notifier_started_ = true;
|
||||||
|
|
||||||
uv_prepare_start(&idle_prepare_handle_, [](uv_prepare_t* handle) {
|
uv_prepare_start(&idle_prepare_handle_, [](uv_prepare_t* handle) {
|
||||||
Environment* env = ContainerOf(&Environment::idle_prepare_handle_, handle);
|
Environment* env = ContainerOf(&Environment::idle_prepare_handle_, handle);
|
||||||
env->isolate()->SetIdle(true);
|
env->isolate()->SetIdle(true);
|
||||||
@ -275,6 +280,7 @@ void Environment::StartProfilerIdleNotifier() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Environment::StopProfilerIdleNotifier() {
|
void Environment::StopProfilerIdleNotifier() {
|
||||||
|
profiler_idle_notifier_started_ = false;
|
||||||
uv_prepare_stop(&idle_prepare_handle_);
|
uv_prepare_stop(&idle_prepare_handle_);
|
||||||
uv_check_stop(&idle_check_handle_);
|
uv_check_stop(&idle_check_handle_);
|
||||||
}
|
}
|
||||||
|
@ -615,6 +615,7 @@ class Environment {
|
|||||||
|
|
||||||
void StartProfilerIdleNotifier();
|
void StartProfilerIdleNotifier();
|
||||||
void StopProfilerIdleNotifier();
|
void StopProfilerIdleNotifier();
|
||||||
|
inline bool profiler_idle_notifier_started() const;
|
||||||
|
|
||||||
inline v8::Isolate* isolate() const;
|
inline v8::Isolate* isolate() const;
|
||||||
inline tracing::Agent* tracing_agent() const;
|
inline tracing::Agent* tracing_agent() const;
|
||||||
@ -840,6 +841,7 @@ class Environment {
|
|||||||
uv_idle_t immediate_idle_handle_;
|
uv_idle_t immediate_idle_handle_;
|
||||||
uv_prepare_t idle_prepare_handle_;
|
uv_prepare_t idle_prepare_handle_;
|
||||||
uv_check_t idle_check_handle_;
|
uv_check_t idle_check_handle_;
|
||||||
|
bool profiler_idle_notifier_started_ = false;
|
||||||
|
|
||||||
AsyncHooks async_hooks_;
|
AsyncHooks async_hooks_;
|
||||||
ImmediateInfo immediate_info_;
|
ImmediateInfo immediate_info_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user