diff options
author | Matt Loring <mattloring@google.com> | 2017-05-23 12:17:17 -0700 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-05-26 10:32:54 +0200 |
commit | e6395cc07ae54f81699e369d292da29ecf113a16 (patch) | |
tree | 12ea34ec05e780bb873b100802819693a14fb838 /deps/v8/src/builtins/builtins-promise.cc | |
parent | 01a1022857ac29d2dae3eba288fb14ff4815f4d8 (diff) | |
download | android-node-v8-e6395cc07ae54f81699e369d292da29ecf113a16.tar.gz android-node-v8-e6395cc07ae54f81699e369d292da29ecf113a16.tar.bz2 android-node-v8-e6395cc07ae54f81699e369d292da29ecf113a16.zip |
deps: cherry-pick 6803eef from V8 upstream
Original commit message:
Allow embedder to set promise internal field count
Asynchronous context tracking mechanisms in Node.js need to store some
state on all promise objects. This change will allow embedders to
configure the number of internal fields on promises as is already done
for ArrayBuffers.
BUG=v8:6435
Review-Url: https://codereview.chromium.org/2889863002
Cr-Commit-Position: refs/heads/master@{#45496}
PR-URL: https://github.com/nodejs/node/pull/13175
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps/v8/src/builtins/builtins-promise.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-promise.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/deps/v8/src/builtins/builtins-promise.cc b/deps/v8/src/builtins/builtins-promise.cc index 0d0238d267..6d9fed83a9 100644 --- a/deps/v8/src/builtins/builtins-promise.cc +++ b/deps/v8/src/builtins/builtins-promise.cc @@ -31,6 +31,10 @@ void PromiseBuiltinsAssembler::PromiseInit(Node* promise) { StoreObjectField(promise, JSPromise::kStatusOffset, SmiConstant(v8::Promise::kPending)); StoreObjectField(promise, JSPromise::kFlagsOffset, SmiConstant(0)); + for (int i = 0; i < v8::Promise::kEmbedderFieldCount; i++) { + int offset = JSPromise::kSize + i * kPointerSize; + StoreObjectFieldNoWriteBarrier(promise, offset, SmiConstant(Smi::kZero)); + } } Node* PromiseBuiltinsAssembler::AllocateAndInitJSPromise(Node* context) { @@ -62,6 +66,10 @@ Node* PromiseBuiltinsAssembler::AllocateAndSetJSPromise(Node* context, StoreObjectFieldNoWriteBarrier(instance, JSPromise::kResultOffset, result); StoreObjectFieldNoWriteBarrier(instance, JSPromise::kFlagsOffset, SmiConstant(0)); + for (int i = 0; i < v8::Promise::kEmbedderFieldCount; i++) { + int offset = JSPromise::kSize + i * kPointerSize; + StoreObjectFieldNoWriteBarrier(instance, offset, SmiConstant(Smi::kZero)); + } Label out(this); GotoIfNot(IsPromiseHookEnabledOrDebugIsActive(), &out); |