src: remove AddPromiseHook()
· nodejs/node@96c3224 (original) (raw)
`@@ -39,8 +39,6 @@ using v8::NewStringType;
`
39
39
`using v8::Number;
`
40
40
`using v8::Object;
`
41
41
`using v8::Private;
`
42
``
`-
using v8::Promise;
`
43
``
`-
using v8::PromiseHookType;
`
44
42
`using v8::StackFrame;
`
45
43
`using v8::StackTrace;
`
46
44
`using v8::String;
`
`@@ -50,25 +48,6 @@ using v8::Undefined;
`
50
48
`using v8::Value;
`
51
49
`using worker::Worker;
`
52
50
``
53
``
`-
// TODO(@jasnell): Likely useful to move this to util or node_internal to
`
54
``
`-
// allow reuse. But since we're not reusing it yet...
`
55
``
`-
class TraceEventScope {
`
56
``
`-
public:
`
57
``
`-
TraceEventScope(const char* category,
`
58
``
`-
const char* name,
`
59
``
`-
void* id) : category_(category), name_(name), id_(id) {
`
60
``
`-
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(category_, name_, id_);
`
61
``
`-
}
`
62
``
`-
~TraceEventScope() {
`
63
``
`-
TRACE_EVENT_NESTABLE_ASYNC_END0(category_, name_, id_);
`
64
``
`-
}
`
65
``
-
66
``
`-
private:
`
67
``
`-
const char* category_;
`
68
``
`-
const char* name_;
`
69
``
`-
void* id_;
`
70
``
`-
};
`
71
``
-
72
51
`int const Environment::kNodeContextTag = 0x6e6f64;
`
73
52
`void* const Environment::kNodeContextTagPtr = const_cast<void*>(
`
74
53
`static_cast<const void*>(&Environment::kNodeContextTag));
`
`@@ -590,56 +569,6 @@ void Environment::AtExit(void (cb)(void arg), void* arg) {
`
590
569
` at_exit_functions_.push_back(ExitCallback{cb, arg});
`
591
570
`}
`
592
571
``
593
``
`-
void Environment::AddPromiseHook(promise_hook_func fn, void* arg) {
`
594
``
`-
auto it = std::find_if(
`
595
``
`-
promise_hooks_.begin(), promise_hooks_.end(),
`
596
``
`-
[&](const PromiseHookCallback& hook) {
`
597
``
`-
return hook.cb_ == fn && hook.arg_ == arg;
`
598
``
`-
});
`
599
``
`-
if (it != promise_hooks_.end()) {
`
600
``
`-
it->enable_count_++;
`
601
``
`-
return;
`
602
``
`-
}
`
603
``
`-
promise_hooks_.push_back(PromiseHookCallback{fn, arg, 1});
`
604
``
-
605
``
`-
if (promise_hooks_.size() == 1) {
`
606
``
`-
isolate_->SetPromiseHook(EnvPromiseHook);
`
607
``
`-
}
`
608
``
`-
}
`
609
``
-
610
``
`-
bool Environment::RemovePromiseHook(promise_hook_func fn, void* arg) {
`
611
``
`-
auto it = std::find_if(
`
612
``
`-
promise_hooks_.begin(), promise_hooks_.end(),
`
613
``
`-
[&](const PromiseHookCallback& hook) {
`
614
``
`-
return hook.cb_ == fn && hook.arg_ == arg;
`
615
``
`-
});
`
616
``
-
617
``
`-
if (it == promise_hooks_.end()) return false;
`
618
``
-
619
``
`-
if (--it->enable_count_ > 0) return true;
`
620
``
-
621
``
`-
promise_hooks_.erase(it);
`
622
``
`-
if (promise_hooks_.empty()) {
`
623
``
`-
isolate_->SetPromiseHook(nullptr);
`
624
``
`-
}
`
625
``
-
626
``
`-
return true;
`
627
``
`-
}
`
628
``
-
629
``
`-
void Environment::EnvPromiseHook(PromiseHookType type,
`
630
``
`-
Local promise,
`
631
``
`-
Local parent) {
`
632
``
`-
Local context = promise->CreationContext();
`
633
``
-
634
``
`-
Environment* env = Environment::GetCurrent(context);
`
635
``
`-
if (env == nullptr) return;
`
636
``
`-
TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment),
`
637
``
`-
"EnvPromiseHook", env);
`
638
``
`-
for (const PromiseHookCallback& hook : env->promise_hooks_) {
`
639
``
`-
hook.cb_(type, promise, parent, hook.arg_);
`
640
``
`-
}
`
641
``
`-
}
`
642
``
-
643
572
`void Environment::RunAndClearNativeImmediates() {
`
644
573
` TraceEventScope trace_scope(TRACING_CATEGORY_NODE1(environment),
`
645
574
`"RunAndClearNativeImmediates", this);
`