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)); |
} |