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

Side by Side Diff: src/js/promise.js

Issue 2219623002: [promise] Spec compliance fixes for async/await (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 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
« no previous file with comments | « src/js/prologue.js ('k') | test/mjsunit/harmony/async-await-no-constructor.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 (function(global, utils, extrasUtils) { 5 (function(global, utils, extrasUtils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 return promiseCapability.promise; 379 return promiseCapability.promise;
380 } 380 }
381 } 381 }
382 382
383 // Shortcut Promise.reject and Promise.resolve() implementations, used by 383 // Shortcut Promise.reject and Promise.resolve() implementations, used by
384 // Async Functions implementation. 384 // Async Functions implementation.
385 function PromiseCreateRejected(r) { 385 function PromiseCreateRejected(r) {
386 return %_Call(PromiseReject, GlobalPromise, r); 386 return %_Call(PromiseReject, GlobalPromise, r);
387 } 387 }
388 388
389 function PromiseCreateResolved(x) { 389 function PromiseCreateResolved(value) {
390 return %_Call(PromiseResolve, GlobalPromise, x); 390 if (IsPromise(value)) {
391 return value;
caitp 2016/08/05 00:43:43 looks great. Should we do something similar for Pr
Dan Ehrenberg 2016/08/05 01:22:36 I don't think we need to optimize for the reject c
392 } else {
393 var promise = PromiseInit(new GlobalPromise(promiseRawSymbol));
394 var resolveResult = ResolvePromise(promise, value);
395 return promise;
396 }
391 } 397 }
392 398
393 function PerformPromiseThen(promise, onResolve, onReject, resultCapability) { 399 function PerformPromiseThen(promise, onResolve, onReject, resultCapability) {
394 if (!IS_CALLABLE(onResolve)) onResolve = PromiseIdResolveHandler; 400 if (!IS_CALLABLE(onResolve)) onResolve = PromiseIdResolveHandler;
395 if (!IS_CALLABLE(onReject)) onReject = PromiseIdRejectHandler; 401 if (!IS_CALLABLE(onReject)) onReject = PromiseIdRejectHandler;
396 402
397 var status = GET_PRIVATE(promise, promiseStateSymbol); 403 var status = GET_PRIVATE(promise, promiseStateSymbol);
398 switch (status) { 404 switch (status) {
399 case kPending: 405 case kPending:
400 PromiseAttachCallbacks(promise, resultCapability, onResolve, onReject); 406 PromiseAttachCallbacks(promise, resultCapability, onResolve, onReject);
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 "createPromise", PromiseCreate, 628 "createPromise", PromiseCreate,
623 "resolvePromise", ResolvePromise, 629 "resolvePromise", ResolvePromise,
624 "rejectPromise", RejectPromise 630 "rejectPromise", RejectPromise
625 ]); 631 ]);
626 632
627 // TODO(v8:4567): Allow experimental natives to remove function prototype 633 // TODO(v8:4567): Allow experimental natives to remove function prototype
628 [PromiseChain, PromiseDefer, PromiseAccept].forEach( 634 [PromiseChain, PromiseDefer, PromiseAccept].forEach(
629 fn => %FunctionRemovePrototype(fn)); 635 fn => %FunctionRemovePrototype(fn));
630 636
631 utils.Export(function(to) { 637 utils.Export(function(to) {
632 to.IsPromise = IsPromise;
633
634 to.PromiseChain = PromiseChain; 638 to.PromiseChain = PromiseChain;
635 to.PromiseDefer = PromiseDefer; 639 to.PromiseDefer = PromiseDefer;
636 to.PromiseAccept = PromiseAccept; 640 to.PromiseAccept = PromiseAccept;
637 641
638 to.PromiseCreateRejected = PromiseCreateRejected; 642 to.PromiseCreateRejected = PromiseCreateRejected;
639 to.PromiseCreateResolved = PromiseCreateResolved; 643 to.PromiseCreateResolved = PromiseCreateResolved;
640 to.PromiseThen = PromiseThen; 644 to.PromiseThen = PromiseThen;
641 645
642 to.GlobalPromise = GlobalPromise; 646 to.GlobalPromise = GlobalPromise;
643 to.NewPromiseCapability = NewPromiseCapability; 647 to.NewPromiseCapability = NewPromiseCapability;
644 to.PerformPromiseThen = PerformPromiseThen; 648 to.PerformPromiseThen = PerformPromiseThen;
645 }); 649 });
646 650
647 }) 651 })
OLDNEW
« no previous file with comments | « src/js/prologue.js ('k') | test/mjsunit/harmony/async-await-no-constructor.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698