OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/base/utils/random-number-generator.h" | 5 #include "src/base/utils/random-number-generator.h" |
6 #include "src/builtins/builtins-promise.h" | 6 #include "src/builtins/builtins-promise.h" |
7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/code-stub-assembler.h" | 8 #include "src/code-stub-assembler.h" |
9 #include "src/compiler/node.h" | 9 #include "src/compiler/node.h" |
10 #include "src/isolate.h" | 10 #include "src/isolate.h" |
(...skipping 1805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1816 | 1816 |
1817 TEST(AllocatePromiseReactionJobInfo) { | 1817 TEST(AllocatePromiseReactionJobInfo) { |
1818 Isolate* isolate(CcTest::InitIsolateOnce()); | 1818 Isolate* isolate(CcTest::InitIsolateOnce()); |
1819 | 1819 |
1820 const int kNumParams = 1; | 1820 const int kNumParams = 1; |
1821 CodeAssemblerTester data(isolate, kNumParams); | 1821 CodeAssemblerTester data(isolate, kNumParams); |
1822 CodeStubAssembler m(data.state()); | 1822 CodeStubAssembler m(data.state()); |
1823 PromiseBuiltinsAssembler p(data.state()); | 1823 PromiseBuiltinsAssembler p(data.state()); |
1824 | 1824 |
1825 Node* const context = m.Parameter(kNumParams + 2); | 1825 Node* const context = m.Parameter(kNumParams + 2); |
1826 Node* const promise = p.AllocateAndInitJSPromise(context); | |
1827 Node* const tasks = m.AllocateFixedArray(FAST_ELEMENTS, m.IntPtrConstant(1)); | 1826 Node* const tasks = m.AllocateFixedArray(FAST_ELEMENTS, m.IntPtrConstant(1)); |
1828 m.StoreFixedArrayElement(tasks, 0, m.UndefinedConstant()); | 1827 m.StoreFixedArrayElement(tasks, 0, m.UndefinedConstant()); |
1829 Node* const deferred_promise = | 1828 Node* const deferred_promise = |
1830 m.AllocateFixedArray(FAST_ELEMENTS, m.IntPtrConstant(1)); | 1829 m.AllocateFixedArray(FAST_ELEMENTS, m.IntPtrConstant(1)); |
1831 m.StoreFixedArrayElement(deferred_promise, 0, m.UndefinedConstant()); | 1830 m.StoreFixedArrayElement(deferred_promise, 0, m.UndefinedConstant()); |
1832 Node* const info = m.AllocatePromiseReactionJobInfo( | 1831 Node* const info = m.AllocatePromiseReactionJobInfo( |
1833 promise, m.SmiConstant(1), tasks, deferred_promise, m.UndefinedConstant(), | 1832 m.SmiConstant(1), tasks, deferred_promise, m.UndefinedConstant(), |
1834 m.UndefinedConstant(), context); | 1833 m.UndefinedConstant(), context); |
1835 m.Return(info); | 1834 m.Return(info); |
1836 | 1835 |
1837 Handle<Code> code = data.GenerateCode(); | 1836 Handle<Code> code = data.GenerateCode(); |
1838 CHECK(!code.is_null()); | 1837 CHECK(!code.is_null()); |
1839 | 1838 |
1840 FunctionTester ft(code, kNumParams); | 1839 FunctionTester ft(code, kNumParams); |
1841 Handle<Object> result = | 1840 Handle<Object> result = |
1842 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); | 1841 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); |
1843 CHECK(result->IsPromiseReactionJobInfo()); | 1842 CHECK(result->IsPromiseReactionJobInfo()); |
1844 Handle<PromiseReactionJobInfo> promise_info = | 1843 Handle<PromiseReactionJobInfo> promise_info = |
1845 Handle<PromiseReactionJobInfo>::cast(result); | 1844 Handle<PromiseReactionJobInfo>::cast(result); |
1846 CHECK_EQ(Smi::FromInt(1), promise_info->value()); | 1845 CHECK_EQ(Smi::FromInt(1), promise_info->value()); |
1847 CHECK(promise_info->promise()->IsJSPromise()); | |
1848 CHECK(promise_info->tasks()->IsFixedArray()); | 1846 CHECK(promise_info->tasks()->IsFixedArray()); |
1849 CHECK(promise_info->deferred_promise()->IsFixedArray()); | 1847 CHECK(promise_info->deferred_promise()->IsFixedArray()); |
1850 CHECK(promise_info->deferred_on_resolve()->IsUndefined(isolate)); | 1848 CHECK(promise_info->deferred_on_resolve()->IsUndefined(isolate)); |
1851 CHECK(promise_info->deferred_on_reject()->IsUndefined(isolate)); | 1849 CHECK(promise_info->deferred_on_reject()->IsUndefined(isolate)); |
1852 CHECK(promise_info->context()->IsContext()); | 1850 CHECK(promise_info->context()->IsContext()); |
1853 CHECK_EQ(kDebugPromiseNoID, promise_info->debug_id()); | 1851 CHECK_EQ(kDebugPromiseNoID, promise_info->debug_id()); |
1854 CHECK_EQ(kDebugNotActive, promise_info->debug_name()); | 1852 CHECK_EQ(kDebugNotActive, promise_info->debug_name()); |
1855 } | 1853 } |
1856 | 1854 |
1857 TEST(AllocatePromiseResolveThenableJobInfo) { | 1855 TEST(AllocatePromiseResolveThenableJobInfo) { |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2274 .ToHandleChecked(); | 2272 .ToHandleChecked(); |
2275 Handle<Object> prop2 = | 2273 Handle<Object> prop2 = |
2276 JSReceiver::GetProperty(isolate, promise, "rejectedReason") | 2274 JSReceiver::GetProperty(isolate, promise, "rejectedReason") |
2277 .ToHandleChecked(); | 2275 .ToHandleChecked(); |
2278 CHECK_EQ(*rejected_str, *prop2); | 2276 CHECK_EQ(*rejected_str, *prop2); |
2279 } | 2277 } |
2280 } | 2278 } |
2281 | 2279 |
2282 } // namespace internal | 2280 } // namespace internal |
2283 } // namespace v8 | 2281 } // namespace v8 |
OLD | NEW |