mirror of https://github.com/nodejs/node.git
perf_hooks: invoke performance_entry_callback via MakeSyncCallback()
It's desirable to retain async_contexts active at callsites of perf_hooks.performance.mark() and alike in the subsequent PerformanceObserver invocations such that the latter can access e.g. associated AsyncLocalStorage instances. In working towards this goal replace the node::MakeCallback(..., async_context{0, 0}) in PerformanceEntry::doNotify() by the new node::MakeSyncCallback() introduced specifically for this purpose. This change will retain the original async_context, if any, in perf_hook's observersCallback() and thus, for the subsequent doNotify() on unbuffered PerformanceObservers. Co-Authored-By: ZauberNerd <zaubernerd@zaubernerd.de> PR-URL: https://github.com/nodejs/node/pull/36343 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com>pull/36343/head
parent
348a3adacb
commit
c53ba1f618
|
@ -159,11 +159,10 @@ void PerformanceEntry::Notify(Environment* env,
|
|||
AliasedUint32Array& observers = env->performance_state()->observers;
|
||||
if (!env->performance_entry_callback().IsEmpty() &&
|
||||
type != NODE_PERFORMANCE_ENTRY_TYPE_INVALID && observers[type]) {
|
||||
node::MakeCallback(env->isolate(),
|
||||
object.As<Object>(),
|
||||
env->performance_entry_callback(),
|
||||
1, &object,
|
||||
node::async_context{0, 0});
|
||||
node::MakeSyncCallback(env->isolate(),
|
||||
object.As<Object>(),
|
||||
env->performance_entry_callback(),
|
||||
1, &object);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue