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 1731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1742 void CustomPromiseHook(v8::PromiseHookType type, v8::Local<v8::Promise> promise, | 1742 void CustomPromiseHook(v8::PromiseHookType type, v8::Local<v8::Promise> promise, |
1743 v8::Local<v8::Value> parentPromise) {} | 1743 v8::Local<v8::Value> parentPromise) {} |
1744 | 1744 |
1745 TEST(IsPromiseHookEnabled) { | 1745 TEST(IsPromiseHookEnabled) { |
1746 Isolate* isolate(CcTest::InitIsolateOnce()); | 1746 Isolate* isolate(CcTest::InitIsolateOnce()); |
1747 | 1747 |
1748 const int kNumParams = 1; | 1748 const int kNumParams = 1; |
1749 CodeAssemblerTester data(isolate, kNumParams); | 1749 CodeAssemblerTester data(isolate, kNumParams); |
1750 CodeStubAssembler m(data.state()); | 1750 CodeStubAssembler m(data.state()); |
1751 | 1751 |
1752 m.Return(m.SelectBooleanConstant(m.IsPromiseHookEnabled())); | 1752 m.Return(m.SelectBooleanConstant(m.IsPromiseHookEnabledOrDebugIsActive())); |
1753 | 1753 |
1754 Handle<Code> code = data.GenerateCode(); | 1754 Handle<Code> code = data.GenerateCode(); |
1755 CHECK(!code.is_null()); | 1755 CHECK(!code.is_null()); |
1756 | 1756 |
1757 FunctionTester ft(code, kNumParams); | 1757 FunctionTester ft(code, kNumParams); |
1758 Handle<Object> result = | 1758 Handle<Object> result = |
1759 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); | 1759 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); |
1760 CHECK_EQ(isolate->heap()->false_value(), *result); | 1760 CHECK_EQ(isolate->heap()->false_value(), *result); |
1761 | 1761 |
1762 isolate->SetPromiseHook(CustomPromiseHook); | 1762 isolate->SetPromiseHook(CustomPromiseHook); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); | 1840 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); |
1841 CHECK(result->IsPromiseReactionJobInfo()); | 1841 CHECK(result->IsPromiseReactionJobInfo()); |
1842 Handle<PromiseReactionJobInfo> promise_info = | 1842 Handle<PromiseReactionJobInfo> promise_info = |
1843 Handle<PromiseReactionJobInfo>::cast(result); | 1843 Handle<PromiseReactionJobInfo>::cast(result); |
1844 CHECK_EQ(Smi::FromInt(1), promise_info->value()); | 1844 CHECK_EQ(Smi::FromInt(1), promise_info->value()); |
1845 CHECK(promise_info->tasks()->IsFixedArray()); | 1845 CHECK(promise_info->tasks()->IsFixedArray()); |
1846 CHECK(promise_info->deferred_promise()->IsFixedArray()); | 1846 CHECK(promise_info->deferred_promise()->IsFixedArray()); |
1847 CHECK(promise_info->deferred_on_resolve()->IsUndefined(isolate)); | 1847 CHECK(promise_info->deferred_on_resolve()->IsUndefined(isolate)); |
1848 CHECK(promise_info->deferred_on_reject()->IsUndefined(isolate)); | 1848 CHECK(promise_info->deferred_on_reject()->IsUndefined(isolate)); |
1849 CHECK(promise_info->context()->IsContext()); | 1849 CHECK(promise_info->context()->IsContext()); |
1850 CHECK_EQ(kDebugPromiseNoID, promise_info->debug_id()); | |
1851 } | 1850 } |
1852 | 1851 |
1853 TEST(AllocatePromiseResolveThenableJobInfo) { | 1852 TEST(AllocatePromiseResolveThenableJobInfo) { |
1854 Isolate* isolate(CcTest::InitIsolateOnce()); | 1853 Isolate* isolate(CcTest::InitIsolateOnce()); |
1855 | 1854 |
1856 const int kNumParams = 1; | 1855 const int kNumParams = 1; |
1857 CodeAssemblerTester data(isolate, kNumParams); | 1856 CodeAssemblerTester data(isolate, kNumParams); |
1858 PromiseBuiltinsAssembler p(data.state()); | 1857 PromiseBuiltinsAssembler p(data.state()); |
1859 | 1858 |
1860 Node* const context = p.Parameter(kNumParams + 2); | 1859 Node* const context = p.Parameter(kNumParams + 2); |
(...skipping 18 matching lines...) Expand all Loading... |
1879 FunctionTester ft(code, kNumParams); | 1878 FunctionTester ft(code, kNumParams); |
1880 Handle<Object> result = | 1879 Handle<Object> result = |
1881 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); | 1880 ft.Call(isolate->factory()->undefined_value()).ToHandleChecked(); |
1882 CHECK(result->IsPromiseResolveThenableJobInfo()); | 1881 CHECK(result->IsPromiseResolveThenableJobInfo()); |
1883 Handle<PromiseResolveThenableJobInfo> promise_info = | 1882 Handle<PromiseResolveThenableJobInfo> promise_info = |
1884 Handle<PromiseResolveThenableJobInfo>::cast(result); | 1883 Handle<PromiseResolveThenableJobInfo>::cast(result); |
1885 CHECK(promise_info->thenable()->IsJSPromise()); | 1884 CHECK(promise_info->thenable()->IsJSPromise()); |
1886 CHECK(promise_info->then()->IsJSFunction()); | 1885 CHECK(promise_info->then()->IsJSFunction()); |
1887 CHECK(promise_info->resolve()->IsJSFunction()); | 1886 CHECK(promise_info->resolve()->IsJSFunction()); |
1888 CHECK(promise_info->reject()->IsJSFunction()); | 1887 CHECK(promise_info->reject()->IsJSFunction()); |
1889 CHECK_EQ(kDebugPromiseNoID, promise_info->debug_id()); | |
1890 CHECK(promise_info->context()->IsContext()); | 1888 CHECK(promise_info->context()->IsContext()); |
1891 } | 1889 } |
1892 | 1890 |
1893 TEST(IsSymbol) { | 1891 TEST(IsSymbol) { |
1894 Isolate* isolate(CcTest::InitIsolateOnce()); | 1892 Isolate* isolate(CcTest::InitIsolateOnce()); |
1895 | 1893 |
1896 const int kNumParams = 1; | 1894 const int kNumParams = 1; |
1897 CodeAssemblerTester data(isolate, kNumParams); | 1895 CodeAssemblerTester data(isolate, kNumParams); |
1898 CodeStubAssembler m(data.state()); | 1896 CodeStubAssembler m(data.state()); |
1899 | 1897 |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2457 m.Return(m.SmiConstant(0)); | 2455 m.Return(m.SmiConstant(0)); |
2458 | 2456 |
2459 Handle<Code> code = data.GenerateCode(); | 2457 Handle<Code> code = data.GenerateCode(); |
2460 CHECK(!code.is_null()); | 2458 CHECK(!code.is_null()); |
2461 FunctionTester ft(code, kNumParams); | 2459 FunctionTester ft(code, kNumParams); |
2462 CHECK_EQ(1, Handle<Smi>::cast(ft.Call().ToHandleChecked())->value()); | 2460 CHECK_EQ(1, Handle<Smi>::cast(ft.Call().ToHandleChecked())->value()); |
2463 } | 2461 } |
2464 | 2462 |
2465 } // namespace internal | 2463 } // namespace internal |
2466 } // namespace v8 | 2464 } // namespace v8 |
OLD | NEW |