OLD | NEW |
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 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 // Combinators. | 442 // Combinators. |
443 | 443 |
444 // ES#sec-promise.resolve | 444 // ES#sec-promise.resolve |
445 // Promise.resolve ( x ) | 445 // Promise.resolve ( x ) |
446 function PromiseResolve(x) { | 446 function PromiseResolve(x) { |
447 if (!IS_RECEIVER(this)) { | 447 if (!IS_RECEIVER(this)) { |
448 throw MakeTypeError(kCalledOnNonObject, PromiseResolve); | 448 throw MakeTypeError(kCalledOnNonObject, PromiseResolve); |
449 } | 449 } |
450 if (IsPromise(x) && x.constructor === this) return x; | 450 if (IsPromise(x) && x.constructor === this) return x; |
451 | 451 |
| 452 // Avoid creating resolving functions. |
| 453 if (this === GlobalPromise) { |
| 454 var promise = PromiseInit(new GlobalPromise(promiseRawSymbol)); |
| 455 var resolveResult = ResolvePromise(promise, x); |
| 456 return promise; |
| 457 } |
| 458 |
452 var promiseCapability = NewPromiseCapability(this); | 459 var promiseCapability = NewPromiseCapability(this); |
453 var resolveResult = %_Call(promiseCapability.resolve, UNDEFINED, x); | 460 var resolveResult = %_Call(promiseCapability.resolve, UNDEFINED, x); |
454 return promiseCapability.promise; | 461 return promiseCapability.promise; |
455 } | 462 } |
456 | 463 |
457 // ES#sec-promise.all | 464 // ES#sec-promise.all |
458 // Promise.all ( iterable ) | 465 // Promise.all ( iterable ) |
459 function PromiseAll(iterable) { | 466 function PromiseAll(iterable) { |
460 if (!IS_RECEIVER(this)) { | 467 if (!IS_RECEIVER(this)) { |
461 throw MakeTypeError(kCalledOnNonObject, "Promise.all"); | 468 throw MakeTypeError(kCalledOnNonObject, "Promise.all"); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 to.PromiseChain = PromiseChain; | 625 to.PromiseChain = PromiseChain; |
619 to.PromiseDefer = PromiseDefer; | 626 to.PromiseDefer = PromiseDefer; |
620 to.PromiseAccept = PromiseAccept; | 627 to.PromiseAccept = PromiseAccept; |
621 | 628 |
622 to.PromiseCreateRejected = PromiseCreateRejected; | 629 to.PromiseCreateRejected = PromiseCreateRejected; |
623 to.PromiseCreateResolved = PromiseCreateResolved; | 630 to.PromiseCreateResolved = PromiseCreateResolved; |
624 to.PromiseThen = PromiseThen; | 631 to.PromiseThen = PromiseThen; |
625 }); | 632 }); |
626 | 633 |
627 }) | 634 }) |
OLD | NEW |