deps: V8: cherry-pick 4c074516397b
Original commit message:
[promises] Fix slow path when context promise hooks are present
Bug: chromium:1201936
Change-Id: I1ee545e33587ddf4a5c7e1cbd64b53d36c75a146
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850936
Reviewed-by: Marja Hölttä <marja@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#74267}
Refs: 4c07451639
PR-URL: https://github.com/nodejs/node/pull/38273
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
Reviewed-By: Mary Marchini <oss@mmarchini.me>
This commit is contained in:
parent
e6f622f496
commit
c678285498
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
# Reset this number to 0 on major V8 upgrades.
|
# Reset this number to 0 on major V8 upgrades.
|
||||||
# Increment by one for each non-official patch applied to deps/v8.
|
# Increment by one for each non-official patch applied to deps/v8.
|
||||||
'v8_embedder_string': '-node.11',
|
'v8_embedder_string': '-node.12',
|
||||||
|
|
||||||
##### V8 defaults for Node.js #####
|
##### V8 defaults for Node.js #####
|
||||||
|
|
||||||
|
3
deps/v8/src/builtins/promise-jobs.tq
vendored
3
deps/v8/src/builtins/promise-jobs.tq
vendored
@ -7,6 +7,7 @@
|
|||||||
// https://tc39.es/ecma262/#sec-promise-jobs
|
// https://tc39.es/ecma262/#sec-promise-jobs
|
||||||
namespace promise {
|
namespace promise {
|
||||||
extern macro IsJSPromiseMap(Map): bool;
|
extern macro IsJSPromiseMap(Map): bool;
|
||||||
|
extern macro NeedsAnyPromiseHooks(): bool;
|
||||||
|
|
||||||
// https://tc39.es/ecma262/#sec-promiseresolvethenablejob
|
// https://tc39.es/ecma262/#sec-promiseresolvethenablejob
|
||||||
transitioning builtin
|
transitioning builtin
|
||||||
@ -25,7 +26,7 @@ PromiseResolveThenableJob(implicit context: Context)(
|
|||||||
const promiseThen = *NativeContextSlot(ContextSlot::PROMISE_THEN_INDEX);
|
const promiseThen = *NativeContextSlot(ContextSlot::PROMISE_THEN_INDEX);
|
||||||
const thenableMap = thenable.map;
|
const thenableMap = thenable.map;
|
||||||
if (TaggedEqual(then, promiseThen) && IsJSPromiseMap(thenableMap) &&
|
if (TaggedEqual(then, promiseThen) && IsJSPromiseMap(thenableMap) &&
|
||||||
!IsIsolatePromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate() &&
|
!NeedsAnyPromiseHooks() &&
|
||||||
IsPromiseSpeciesLookupChainIntact(nativeContext, thenableMap)) {
|
IsPromiseSpeciesLookupChainIntact(nativeContext, thenableMap)) {
|
||||||
// We know that the {thenable} is a JSPromise, which doesn't require
|
// We know that the {thenable} is a JSPromise, which doesn't require
|
||||||
// any special treatment and that {then} corresponds to the initial
|
// any special treatment and that {then} corresponds to the initial
|
||||||
|
6
deps/v8/src/codegen/code-stub-assembler.cc
vendored
6
deps/v8/src/codegen/code-stub-assembler.cc
vendored
@ -13843,11 +13843,11 @@ TNode<BoolT> CodeStubAssembler::
|
|||||||
return Word32NotEqual(flags, Int32Constant(0));
|
return Word32NotEqual(flags, Int32Constant(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
TNode<BoolT> CodeStubAssembler::
|
TNode<BoolT> CodeStubAssembler::NeedsAnyPromiseHooks(TNode<Uint32T> flags) {
|
||||||
IsAnyPromiseHookEnabledOrHasAsyncEventDelegate(TNode<Uint32T> flags) {
|
|
||||||
uint32_t mask = Isolate::PromiseHookFields::HasContextPromiseHook::kMask |
|
uint32_t mask = Isolate::PromiseHookFields::HasContextPromiseHook::kMask |
|
||||||
Isolate::PromiseHookFields::HasIsolatePromiseHook::kMask |
|
Isolate::PromiseHookFields::HasIsolatePromiseHook::kMask |
|
||||||
Isolate::PromiseHookFields::HasAsyncEventDelegate::kMask;
|
Isolate::PromiseHookFields::HasAsyncEventDelegate::kMask |
|
||||||
|
Isolate::PromiseHookFields::IsDebugActive::kMask;
|
||||||
return IsSetWord32(flags, mask);
|
return IsSetWord32(flags, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
deps/v8/src/codegen/code-stub-assembler.h
vendored
10
deps/v8/src/codegen/code-stub-assembler.h
vendored
@ -3535,12 +3535,10 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
|
|||||||
return IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
|
return IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
|
||||||
PromiseHookFlags());
|
PromiseHookFlags());
|
||||||
}
|
}
|
||||||
TNode<BoolT> IsAnyPromiseHookEnabledOrHasAsyncEventDelegate(
|
|
||||||
TNode<Uint32T> flags);
|
TNode<BoolT> NeedsAnyPromiseHooks(TNode<Uint32T> flags);
|
||||||
TNode<BoolT>
|
TNode<BoolT> NeedsAnyPromiseHooks() {
|
||||||
IsAnyPromiseHookEnabledOrHasAsyncEventDelegate() {
|
return NeedsAnyPromiseHooks(PromiseHookFlags());
|
||||||
return IsAnyPromiseHookEnabledOrHasAsyncEventDelegate(
|
|
||||||
PromiseHookFlags());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// for..in helpers
|
// for..in helpers
|
||||||
|
Loading…
x
Reference in New Issue
Block a user