Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: src/builtins/builtins-promise.cc

Issue 2650803003: [inspector] change target promise for kDebugWillHandle & kDebugDidHandle (Closed)
Patch Set: added missing guard in asyncTaskCreated Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/builtins/builtins-promise.h" 5 #include "src/builtins/builtins-promise.h"
6 #include "src/builtins/builtins-constructor.h" 6 #include "src/builtins/builtins-constructor.h"
7 #include "src/builtins/builtins-utils.h" 7 #include "src/builtins/builtins-utils.h"
8 #include "src/builtins/builtins.h" 8 #include "src/builtins/builtins.h"
9 #include "src/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/code-stub-assembler.h" 10 #include "src/code-stub-assembler.h"
(...skipping 24 matching lines...) Expand all
35 Node* PromiseBuiltinsAssembler::AllocateAndInitJSPromise(Node* context) { 35 Node* PromiseBuiltinsAssembler::AllocateAndInitJSPromise(Node* context) {
36 return AllocateAndInitJSPromise(context, UndefinedConstant()); 36 return AllocateAndInitJSPromise(context, UndefinedConstant());
37 } 37 }
38 38
39 Node* PromiseBuiltinsAssembler::AllocateAndInitJSPromise(Node* context, 39 Node* PromiseBuiltinsAssembler::AllocateAndInitJSPromise(Node* context,
40 Node* parent) { 40 Node* parent) {
41 Node* const instance = AllocateJSPromise(context); 41 Node* const instance = AllocateJSPromise(context);
42 PromiseInit(instance); 42 PromiseInit(instance);
43 43
44 Label out(this); 44 Label out(this);
45 GotoUnless(IsPromiseHookEnabled(), &out); 45 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &out);
46 CallRuntime(Runtime::kPromiseHookInit, context, instance, parent); 46 CallRuntime(Runtime::kPromiseHookInit, context, instance, parent);
47 Goto(&out); 47 Goto(&out);
48 48
49 Bind(&out); 49 Bind(&out);
50 return instance; 50 return instance;
51 } 51 }
52 52
53 Node* PromiseBuiltinsAssembler::AllocateAndSetJSPromise(Node* context, 53 Node* PromiseBuiltinsAssembler::AllocateAndSetJSPromise(Node* context,
54 Node* status, 54 Node* status,
55 Node* result) { 55 Node* result) {
56 CSA_ASSERT(this, TaggedIsSmi(status)); 56 CSA_ASSERT(this, TaggedIsSmi(status));
57 57
58 Node* const instance = AllocateJSPromise(context); 58 Node* const instance = AllocateJSPromise(context);
59 59
60 StoreObjectFieldNoWriteBarrier(instance, JSPromise::kStatusOffset, status); 60 StoreObjectFieldNoWriteBarrier(instance, JSPromise::kStatusOffset, status);
61 StoreObjectFieldNoWriteBarrier(instance, JSPromise::kResultOffset, result); 61 StoreObjectFieldNoWriteBarrier(instance, JSPromise::kResultOffset, result);
62 StoreObjectFieldNoWriteBarrier(instance, JSPromise::kFlagsOffset, 62 StoreObjectFieldNoWriteBarrier(instance, JSPromise::kFlagsOffset,
63 SmiConstant(0)); 63 SmiConstant(0));
64 64
65 Label out(this); 65 Label out(this);
66 GotoUnless(IsPromiseHookEnabled(), &out); 66 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &out);
67 CallRuntime(Runtime::kPromiseHookInit, context, instance, 67 CallRuntime(Runtime::kPromiseHookInit, context, instance,
68 UndefinedConstant()); 68 UndefinedConstant());
69 Goto(&out); 69 Goto(&out);
70 70
71 Bind(&out); 71 Bind(&out);
72 return instance; 72 return instance;
73 } 73 }
74 74
75 std::pair<Node*, Node*> 75 std::pair<Node*, Node*>
76 PromiseBuiltinsAssembler::CreatePromiseResolvingFunctions( 76 PromiseBuiltinsAssembler::CreatePromiseResolvingFunctions(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 capability, JSPromiseCapability::kPromiseOffset, promise); 127 capability, JSPromiseCapability::kPromiseOffset, promise);
128 128
129 Node* resolve = nullptr; 129 Node* resolve = nullptr;
130 Node* reject = nullptr; 130 Node* reject = nullptr;
131 131
132 std::tie(resolve, reject) = 132 std::tie(resolve, reject) =
133 CreatePromiseResolvingFunctions(promise, debug_event, native_context); 133 CreatePromiseResolvingFunctions(promise, debug_event, native_context);
134 StoreObjectField(capability, JSPromiseCapability::kResolveOffset, resolve); 134 StoreObjectField(capability, JSPromiseCapability::kResolveOffset, resolve);
135 StoreObjectField(capability, JSPromiseCapability::kRejectOffset, reject); 135 StoreObjectField(capability, JSPromiseCapability::kRejectOffset, reject);
136 136
137 GotoUnless(IsPromiseHookEnabled(), &out); 137 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &out);
138 CallRuntime(Runtime::kPromiseHookInit, context, promise, 138 CallRuntime(Runtime::kPromiseHookInit, context, promise,
139 UndefinedConstant()); 139 UndefinedConstant());
140 Goto(&out); 140 Goto(&out);
141 } 141 }
142 142
143 Bind(&if_custom_promise); 143 Bind(&if_custom_promise);
144 { 144 {
145 Label if_notcallable(this, Label::kDeferred); 145 Label if_notcallable(this, Label::kDeferred);
146 Node* executor_context = 146 Node* executor_context =
147 CreatePromiseGetCapabilitiesExecutorContext(capability, native_context); 147 CreatePromiseGetCapabilitiesExecutorContext(capability, native_context);
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 { 568 {
569 Label reject(this); 569 Label reject(this);
570 Node* const result = LoadObjectField(promise, JSPromise::kResultOffset); 570 Node* const result = LoadObjectField(promise, JSPromise::kResultOffset);
571 GotoUnless(WordEqual(status, SmiConstant(v8::Promise::kFulfilled)), 571 GotoUnless(WordEqual(status, SmiConstant(v8::Promise::kFulfilled)),
572 &reject); 572 &reject);
573 573
574 Node* info = AllocatePromiseReactionJobInfo( 574 Node* info = AllocatePromiseReactionJobInfo(
575 result, var_on_resolve.value(), deferred_promise, deferred_on_resolve, 575 result, var_on_resolve.value(), deferred_promise, deferred_on_resolve,
576 deferred_on_reject, context); 576 deferred_on_reject, context);
577 // TODO(gsathya): Move this to TF 577 // TODO(gsathya): Move this to TF
578 CallRuntime(Runtime::kEnqueuePromiseReactionJob, context, promise, info, 578 CallRuntime(Runtime::kEnqueuePromiseReactionJob, context, info);
579 SmiConstant(v8::Promise::kFulfilled));
580 Goto(&out); 579 Goto(&out);
581 580
582 Bind(&reject); 581 Bind(&reject);
583 { 582 {
584 Node* const has_handler = PromiseHasHandler(promise); 583 Node* const has_handler = PromiseHasHandler(promise);
585 Label enqueue(this); 584 Label enqueue(this);
586 585
587 // TODO(gsathya): Fold these runtime calls and move to TF. 586 // TODO(gsathya): Fold these runtime calls and move to TF.
588 GotoIf(has_handler, &enqueue); 587 GotoIf(has_handler, &enqueue);
589 CallRuntime(Runtime::kPromiseRevokeReject, context, promise); 588 CallRuntime(Runtime::kPromiseRevokeReject, context, promise);
590 Goto(&enqueue); 589 Goto(&enqueue);
591 590
592 Bind(&enqueue); 591 Bind(&enqueue);
593 { 592 {
594 Node* info = AllocatePromiseReactionJobInfo( 593 Node* info = AllocatePromiseReactionJobInfo(
595 result, var_on_reject.value(), deferred_promise, 594 result, var_on_reject.value(), deferred_promise,
596 deferred_on_resolve, deferred_on_reject, context); 595 deferred_on_resolve, deferred_on_reject, context);
597 // TODO(gsathya): Move this to TF 596 // TODO(gsathya): Move this to TF
598 CallRuntime(Runtime::kEnqueuePromiseReactionJob, context, promise, 597 CallRuntime(Runtime::kEnqueuePromiseReactionJob, context, info);
599 info, SmiConstant(v8::Promise::kRejected));
600 Goto(&out); 598 Goto(&out);
601 } 599 }
602 } 600 }
603 } 601 }
604 } 602 }
605 603
606 Bind(&out); 604 Bind(&out);
607 PromiseSetHasHandler(promise); 605 PromiseSetHasHandler(promise);
608 return deferred_promise; 606 return deferred_promise;
609 } 607 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 StoreMapNoWriteBarrier(info, 654 StoreMapNoWriteBarrier(info,
657 Heap::kPromiseResolveThenableJobInfoMapRootIndex); 655 Heap::kPromiseResolveThenableJobInfoMapRootIndex);
658 StoreObjectFieldNoWriteBarrier( 656 StoreObjectFieldNoWriteBarrier(
659 info, PromiseResolveThenableJobInfo::kThenableOffset, thenable); 657 info, PromiseResolveThenableJobInfo::kThenableOffset, thenable);
660 StoreObjectFieldNoWriteBarrier( 658 StoreObjectFieldNoWriteBarrier(
661 info, PromiseResolveThenableJobInfo::kThenOffset, then); 659 info, PromiseResolveThenableJobInfo::kThenOffset, then);
662 StoreObjectFieldNoWriteBarrier( 660 StoreObjectFieldNoWriteBarrier(
663 info, PromiseResolveThenableJobInfo::kResolveOffset, resolve); 661 info, PromiseResolveThenableJobInfo::kResolveOffset, resolve);
664 StoreObjectFieldNoWriteBarrier( 662 StoreObjectFieldNoWriteBarrier(
665 info, PromiseResolveThenableJobInfo::kRejectOffset, reject); 663 info, PromiseResolveThenableJobInfo::kRejectOffset, reject);
666 StoreObjectFieldNoWriteBarrier(info,
667 PromiseResolveThenableJobInfo::kDebugIdOffset,
668 SmiConstant(kDebugPromiseNoID));
669 StoreObjectFieldNoWriteBarrier( 664 StoreObjectFieldNoWriteBarrier(
670 info, PromiseResolveThenableJobInfo::kContextOffset, context); 665 info, PromiseResolveThenableJobInfo::kContextOffset, context);
671 return info; 666 return info;
672 } 667 }
673 668
674 void PromiseBuiltinsAssembler::InternalResolvePromise(Node* context, 669 void PromiseBuiltinsAssembler::InternalResolvePromise(Node* context,
675 Node* promise, 670 Node* promise,
676 Node* result) { 671 Node* result) {
677 Isolate* isolate = this->isolate(); 672 Isolate* isolate = this->isolate();
678 673
679 Variable var_reason(this, MachineRepresentation::kTagged), 674 Variable var_reason(this, MachineRepresentation::kTagged),
680 var_then(this, MachineRepresentation::kTagged); 675 var_then(this, MachineRepresentation::kTagged);
681 676
682 Label do_enqueue(this), fulfill(this), if_cycle(this, Label::kDeferred), 677 Label do_enqueue(this), fulfill(this), if_cycle(this, Label::kDeferred),
683 if_rejectpromise(this, Label::kDeferred), out(this); 678 if_rejectpromise(this, Label::kDeferred), out(this);
684 679
685 Label cycle_check(this); 680 Label cycle_check(this);
686 GotoUnless(IsPromiseHookEnabled(), &cycle_check); 681 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &cycle_check);
687 CallRuntime(Runtime::kPromiseHookResolve, context, promise); 682 CallRuntime(Runtime::kPromiseHookResolve, context, promise);
688 Goto(&cycle_check); 683 Goto(&cycle_check);
689 684
690 Bind(&cycle_check); 685 Bind(&cycle_check);
691 // 6. If SameValue(resolution, promise) is true, then 686 // 6. If SameValue(resolution, promise) is true, then
692 GotoIf(SameValue(promise, result, context), &if_cycle); 687 GotoIf(SameValue(promise, result, context), &if_cycle);
693 688
694 // 7. If Type(resolution) is not Object, then 689 // 7. If Type(resolution) is not Object, then
695 GotoIf(TaggedIsSmi(result), &fulfill); 690 GotoIf(TaggedIsSmi(result), &fulfill);
696 GotoUnless(IsJSReceiver(result), &fulfill); 691 GotoUnless(IsJSReceiver(result), &fulfill);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 Node* reject = nullptr; 781 Node* reject = nullptr;
787 std::tie(resolve, reject) = CreatePromiseResolvingFunctions( 782 std::tie(resolve, reject) = CreatePromiseResolvingFunctions(
788 promise, FalseConstant(), native_context); 783 promise, FalseConstant(), native_context);
789 784
790 Node* const info = AllocatePromiseResolveThenableJobInfo( 785 Node* const info = AllocatePromiseResolveThenableJobInfo(
791 result, var_then.value(), resolve, reject, context); 786 result, var_then.value(), resolve, reject, context);
792 787
793 Label enqueue(this); 788 Label enqueue(this);
794 GotoUnless(IsDebugActive(), &enqueue); 789 GotoUnless(IsDebugActive(), &enqueue);
795 790
796 Node* const debug_id =
797 CallRuntime(Runtime::kDebugNextAsyncTaskId, context, promise);
798 StoreObjectField(info, PromiseResolveThenableJobInfo::kDebugIdOffset,
799 debug_id);
800
801 GotoIf(TaggedIsSmi(result), &enqueue); 791 GotoIf(TaggedIsSmi(result), &enqueue);
802 GotoUnless(HasInstanceType(result, JS_PROMISE_TYPE), &enqueue); 792 GotoUnless(HasInstanceType(result, JS_PROMISE_TYPE), &enqueue);
803 793
804 // Mark the dependency of the new promise on the resolution 794 // Mark the dependency of the new promise on the resolution
805 Node* const key = 795 Node* const key =
806 HeapConstant(isolate->factory()->promise_handled_by_symbol()); 796 HeapConstant(isolate->factory()->promise_handled_by_symbol());
807 CallRuntime(Runtime::kSetProperty, context, result, key, promise, 797 CallRuntime(Runtime::kSetProperty, context, result, key, promise,
808 SmiConstant(STRICT)); 798 SmiConstant(STRICT));
809 Goto(&enqueue); 799 Goto(&enqueue);
810 800
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 853
864 Node* const deferred_on_resolve = 854 Node* const deferred_on_resolve =
865 LoadObjectField(promise, JSPromise::kDeferredOnResolveOffset); 855 LoadObjectField(promise, JSPromise::kDeferredOnResolveOffset);
866 Node* const deferred_on_reject = 856 Node* const deferred_on_reject =
867 LoadObjectField(promise, JSPromise::kDeferredOnRejectOffset); 857 LoadObjectField(promise, JSPromise::kDeferredOnRejectOffset);
868 858
869 Node* const info = AllocatePromiseReactionJobInfo( 859 Node* const info = AllocatePromiseReactionJobInfo(
870 result, tasks, deferred_promise, deferred_on_resolve, deferred_on_reject, 860 result, tasks, deferred_promise, deferred_on_resolve, deferred_on_reject,
871 context); 861 context);
872 862
873 CallRuntime(Runtime::kEnqueuePromiseReactionJob, context, promise, info, 863 CallRuntime(Runtime::kEnqueuePromiseReactionJob, context, info);
874 status_smi);
875 Goto(&debug_async_event_enqueue_recurring); 864 Goto(&debug_async_event_enqueue_recurring);
876 865
877 Bind(&debug_async_event_enqueue_recurring); 866 Bind(&debug_async_event_enqueue_recurring);
878 { 867 {
879 GotoUnless(IsDebugActive(), &do_promisereset); 868 GotoUnless(IsDebugActive(), &do_promisereset);
880 CallRuntime(Runtime::kDebugAsyncEventEnqueueRecurring, context, promise, 869 CallRuntime(Runtime::kDebugAsyncEventEnqueueRecurring, context, promise,
881 status_smi); 870 status_smi);
882 Goto(&do_promisereset); 871 Goto(&do_promisereset);
883 } 872 }
884 873
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 if (debug_event) { 956 if (debug_event) {
968 GotoUnless(IsDebugActive(), &run_promise_hook); 957 GotoUnless(IsDebugActive(), &run_promise_hook);
969 CallRuntime(Runtime::kDebugPromiseReject, context, promise, value); 958 CallRuntime(Runtime::kDebugPromiseReject, context, promise, value);
970 Goto(&run_promise_hook); 959 Goto(&run_promise_hook);
971 } else { 960 } else {
972 Goto(&run_promise_hook); 961 Goto(&run_promise_hook);
973 } 962 }
974 963
975 Bind(&run_promise_hook); 964 Bind(&run_promise_hook);
976 { 965 {
977 GotoUnless(IsPromiseHookEnabled(), &report_unhandledpromise); 966 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &report_unhandledpromise);
978 CallRuntime(Runtime::kPromiseHookResolve, context, promise); 967 CallRuntime(Runtime::kPromiseHookResolve, context, promise);
979 Goto(&report_unhandledpromise); 968 Goto(&report_unhandledpromise);
980 } 969 }
981 970
982 Bind(&report_unhandledpromise); 971 Bind(&report_unhandledpromise);
983 { 972 {
984 GotoIf(PromiseHasHandler(promise), &fulfill); 973 GotoIf(PromiseHasHandler(promise), &fulfill);
985 CallRuntime(Runtime::kReportPromiseReject, context, promise, value); 974 CallRuntime(Runtime::kReportPromiseReject, context, promise, value);
986 Goto(&fulfill); 975 Goto(&fulfill);
987 } 976 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 } 1056 }
1068 1057
1069 Bind(&if_targetismodified); 1058 Bind(&if_targetismodified);
1070 { 1059 {
1071 ConstructorBuiltinsAssembler constructor_assembler(this->state()); 1060 ConstructorBuiltinsAssembler constructor_assembler(this->state());
1072 Node* const instance = constructor_assembler.EmitFastNewObject( 1061 Node* const instance = constructor_assembler.EmitFastNewObject(
1073 context, promise_fun, new_target); 1062 context, promise_fun, new_target);
1074 PromiseInit(instance); 1063 PromiseInit(instance);
1075 var_result.Bind(instance); 1064 var_result.Bind(instance);
1076 1065
1077 GotoUnless(IsPromiseHookEnabled(), &debug_push); 1066 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &debug_push);
1078 CallRuntime(Runtime::kPromiseHookInit, context, instance, 1067 CallRuntime(Runtime::kPromiseHookInit, context, instance,
1079 UndefinedConstant()); 1068 UndefinedConstant());
1080 Goto(&debug_push); 1069 Goto(&debug_push);
1081 } 1070 }
1082 1071
1083 Bind(&debug_push); 1072 Bind(&debug_push);
1084 { 1073 {
1085 GotoUnless(is_debug_active, &run_executor); 1074 GotoUnless(is_debug_active, &run_executor);
1086 CallRuntime(Runtime::kDebugPushPromise, context, var_result.value()); 1075 CallRuntime(Runtime::kDebugPushPromise, context, var_result.value());
1087 Goto(&run_executor); 1076 Goto(&run_executor);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 Node* const is_debug_active = IsDebugActive(); 1251 Node* const is_debug_active = IsDebugActive();
1263 Label run_handler(this), if_rejectpromise(this), promisehook_before(this), 1252 Label run_handler(this), if_rejectpromise(this), promisehook_before(this),
1264 promisehook_after(this), debug_pop(this); 1253 promisehook_after(this), debug_pop(this);
1265 1254
1266 GotoUnless(is_debug_active, &promisehook_before); 1255 GotoUnless(is_debug_active, &promisehook_before);
1267 CallRuntime(Runtime::kDebugPushPromise, context, deferred_promise); 1256 CallRuntime(Runtime::kDebugPushPromise, context, deferred_promise);
1268 Goto(&promisehook_before); 1257 Goto(&promisehook_before);
1269 1258
1270 Bind(&promisehook_before); 1259 Bind(&promisehook_before);
1271 { 1260 {
1272 GotoUnless(IsPromiseHookEnabled(), &run_handler); 1261 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &run_handler);
1273 CallRuntime(Runtime::kPromiseHookBefore, context, deferred_promise); 1262 CallRuntime(Runtime::kPromiseHookBefore, context, deferred_promise);
1274 Goto(&run_handler); 1263 Goto(&run_handler);
1275 } 1264 }
1276 1265
1277 Bind(&run_handler); 1266 Bind(&run_handler);
1278 { 1267 {
1279 Callable call_callable = CodeFactory::Call(isolate); 1268 Callable call_callable = CodeFactory::Call(isolate);
1280 Node* const result = 1269 Node* const result =
1281 CallJS(call_callable, context, handler, UndefinedConstant(), value); 1270 CallJS(call_callable, context, handler, UndefinedConstant(), value);
1282 1271
(...skipping 20 matching lines...) Expand all
1303 Bind(&if_rejectpromise); 1292 Bind(&if_rejectpromise);
1304 { 1293 {
1305 Callable promise_handle_reject = CodeFactory::PromiseHandleReject(isolate); 1294 Callable promise_handle_reject = CodeFactory::PromiseHandleReject(isolate);
1306 CallStub(promise_handle_reject, context, deferred_promise, 1295 CallStub(promise_handle_reject, context, deferred_promise,
1307 deferred_on_reject, var_reason.value()); 1296 deferred_on_reject, var_reason.value());
1308 Goto(&promisehook_after); 1297 Goto(&promisehook_after);
1309 } 1298 }
1310 1299
1311 Bind(&promisehook_after); 1300 Bind(&promisehook_after);
1312 { 1301 {
1313 GotoUnless(IsPromiseHookEnabled(), &debug_pop); 1302 GotoUnless(IsPromiseHookEnabledOrDebugIsActive(), &debug_pop);
1314 CallRuntime(Runtime::kPromiseHookAfter, context, deferred_promise); 1303 CallRuntime(Runtime::kPromiseHookAfter, context, deferred_promise);
1315 Goto(&debug_pop); 1304 Goto(&debug_pop);
1316 } 1305 }
1317 1306
1318 Bind(&debug_pop); 1307 Bind(&debug_pop);
1319 { 1308 {
1320 Label out(this); 1309 Label out(this);
1321 1310
1322 GotoUnless(is_debug_active, &out); 1311 GotoUnless(is_debug_active, &out);
1323 CallRuntime(Runtime::kDebugPopPromise, context); 1312 CallRuntime(Runtime::kDebugPopPromise, context);
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1537 Node* const reason = Parameter(2); 1526 Node* const reason = Parameter(2);
1538 Node* const debug_event = Parameter(3); 1527 Node* const debug_event = Parameter(3);
1539 Node* const context = Parameter(6); 1528 Node* const context = Parameter(6);
1540 1529
1541 InternalPromiseReject(context, promise, reason, debug_event); 1530 InternalPromiseReject(context, promise, reason, debug_event);
1542 Return(UndefinedConstant()); 1531 Return(UndefinedConstant());
1543 } 1532 }
1544 1533
1545 } // namespace internal 1534 } // namespace internal
1546 } // namespace v8 1535 } // namespace v8
OLDNEW
« no previous file with comments | « src/assembler.cc ('k') | src/code-stub-assembler.h » ('j') | src/runtime/runtime-promise.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698