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);

`