| Index: src/code-stub-assembler.cc
|
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc
|
| index 7532319bf2a8dc16f9f491b35933df73cbc6b2a6..aa932fbcb979a639eb2df5d3dc5e8167000d55de 100644
|
| --- a/src/code-stub-assembler.cc
|
| +++ b/src/code-stub-assembler.cc
|
| @@ -8315,27 +8315,43 @@ Node* CodeStubAssembler::AllocateFunctionWithMapAndContext(Node* map,
|
| return fun;
|
| }
|
|
|
| -Node* CodeStubAssembler::AllocateJSPromise(Node* context) {
|
| +Node* CodeStubAssembler::AllocateAndInitJSPromise(Node* context) {
|
| Node* const native_context = LoadNativeContext(context);
|
| Node* const promise_fun =
|
| LoadContextElement(native_context, Context::PROMISE_FUNCTION_INDEX);
|
| Node* const initial_map =
|
| LoadObjectField(promise_fun, JSFunction::kPrototypeOrInitialMapOffset);
|
| - Node* const instance = AllocateJSObjectFromMap(initial_map);
|
| + Node* const promise = AllocateJSObjectFromMap(initial_map);
|
| + StoreObjectFieldNoWriteBarrier(promise, JSPromise::kStatusOffset,
|
| + SmiConstant(v8::Promise::kPending));
|
| + StoreObjectFieldNoWriteBarrier(promise, JSPromise::kFlagsOffset,
|
| + SmiConstant(0));
|
|
|
| - return instance;
|
| + return promise;
|
| }
|
|
|
| -void CodeStubAssembler::PromiseInit(Node* promise) {
|
| - StoreObjectField(promise, JSPromise::kStatusOffset,
|
| - SmiConstant(v8::Promise::kPending));
|
| - StoreObjectField(promise, JSPromise::kFlagsOffset, SmiConstant(0));
|
| -}
|
| +Node* CodeStubAssembler::AllocateAndSetJSPromise(Node* context, Node* status,
|
| + Node* result) {
|
| + Node* const native_context = LoadNativeContext(context);
|
| + Node* const promise_fun =
|
| + LoadContextElement(native_context, Context::PROMISE_FUNCTION_INDEX);
|
| + Node* const initial_map =
|
| + LoadObjectField(promise_fun, JSFunction::kPrototypeOrInitialMapOffset);
|
| + Node* const promise = AllocateJSObjectFromMap(initial_map);
|
|
|
| -void CodeStubAssembler::PromiseSet(Node* promise, Node* status, Node* result) {
|
| CSA_ASSERT(this, TaggedIsSmi(status));
|
| - StoreObjectField(promise, JSPromise::kStatusOffset, status);
|
| - StoreObjectField(promise, JSPromise::kResultOffset, result);
|
| +
|
| + StoreObjectFieldNoWriteBarrier(promise, JSPromise::kStatusOffset, status);
|
| + StoreObjectFieldNoWriteBarrier(promise, JSPromise::kResultOffset, result);
|
| + StoreObjectFieldNoWriteBarrier(promise, JSPromise::kFlagsOffset,
|
| + SmiConstant(0));
|
| +
|
| + return promise;
|
| +}
|
| +
|
| +void CodeStubAssembler::JSPromiseInit(Node* promise) {
|
| + StoreObjectField(promise, JSPromise::kStatusOffset,
|
| + SmiConstant(v8::Promise::kPending));
|
| StoreObjectField(promise, JSPromise::kFlagsOffset, SmiConstant(0));
|
| }
|
|
|
|
|