summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-promise.cc
diff options
context:
space:
mode:
authorMatt Loring <mattloring@google.com>2017-05-23 12:17:17 -0700
committerAnna Henningsen <anna@addaleax.net>2017-05-26 10:32:54 +0200
commite6395cc07ae54f81699e369d292da29ecf113a16 (patch)
tree12ea34ec05e780bb873b100802819693a14fb838 /deps/v8/src/builtins/builtins-promise.cc
parent01a1022857ac29d2dae3eba288fb14ff4815f4d8 (diff)
downloadandroid-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.cc8
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);