src: add extractPromiseWrap function
Currently PromiseHook extracts the PromiseWrap from a Local<Promise> in two places. This commit extracts that code into a function instead. PR-URL: https://github.com/nodejs/node/pull/19340 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
9a70b27254
commit
69f8523d83
@ -275,19 +275,20 @@ void PromiseWrap::getIsChainedPromise(Local<String> property,
|
||||
info.Holder()->GetInternalField(kIsChainedPromiseField));
|
||||
}
|
||||
|
||||
static PromiseWrap* extractPromiseWrap(Local<Promise> promise) {
|
||||
Local<Value> resource_object_value = promise->GetInternalField(0);
|
||||
if (resource_object_value->IsObject()) {
|
||||
return Unwrap<PromiseWrap>(resource_object_value.As<Object>());
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static void PromiseHook(PromiseHookType type, Local<Promise> promise,
|
||||
Local<Value> parent, void* arg) {
|
||||
Environment* env = static_cast<Environment*>(arg);
|
||||
Local<Value> resource_object_value = promise->GetInternalField(0);
|
||||
PromiseWrap* wrap = nullptr;
|
||||
if (resource_object_value->IsObject()) {
|
||||
Local<Object> resource_object = resource_object_value.As<Object>();
|
||||
wrap = Unwrap<PromiseWrap>(resource_object);
|
||||
}
|
||||
|
||||
PromiseWrap* wrap = extractPromiseWrap(promise);
|
||||
if (type == PromiseHookType::kInit || wrap == nullptr) {
|
||||
bool silent = type != PromiseHookType::kInit;
|
||||
PromiseWrap* parent_wrap = nullptr;
|
||||
|
||||
// set parent promise's async Id as this promise's triggerAsyncId
|
||||
if (parent->IsPromise()) {
|
||||
@ -295,11 +296,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
|
||||
// is a chained promise, so we set parent promise's id as
|
||||
// current promise's triggerAsyncId
|
||||
Local<Promise> parent_promise = parent.As<Promise>();
|
||||
Local<Value> parent_resource = parent_promise->GetInternalField(0);
|
||||
if (parent_resource->IsObject()) {
|
||||
parent_wrap = Unwrap<PromiseWrap>(parent_resource.As<Object>());
|
||||
}
|
||||
|
||||
PromiseWrap* parent_wrap = extractPromiseWrap(parent_promise);
|
||||
if (parent_wrap == nullptr) {
|
||||
parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user