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 |
11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
12 // Imports | 12 // Imports |
13 | 13 |
14 var InternalArray = utils.InternalArray; | 14 var InternalArray = utils.InternalArray; |
15 var MakeTypeError; | 15 var MakeTypeError; |
16 var promiseCombinedDeferredSymbol = | 16 var promiseCombinedDeferredSymbol = |
17 utils.ImportNow("promise_combined_deferred_symbol"); | 17 utils.ImportNow("promise_combined_deferred_symbol"); |
18 var promiseHasHandlerSymbol = | 18 var promiseHasHandlerSymbol = |
19 utils.ImportNow("promise_has_handler_symbol"); | 19 utils.ImportNow("promise_has_handler_symbol"); |
20 var promiseRejectReactionsSymbol = | 20 var promiseRejectReactionsSymbol = |
21 utils.ImportNow("promise_reject_reactions_symbol"); | 21 utils.ImportNow("promise_reject_reactions_symbol"); |
22 var promiseFulfillReactionsSymbol = | 22 var promiseFulfillReactionsSymbol = |
23 utils.ImportNow("promise_fulfill_reactions_symbol"); | 23 utils.ImportNow("promise_fulfill_reactions_symbol"); |
24 var promiseDeferredReactionsSymbol = | 24 var promiseDeferredReactionsSymbol = |
25 utils.ImportNow("promise_deferred_reactions_symbol"); | 25 utils.ImportNow("promise_deferred_reactions_symbol"); |
26 var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); | 26 var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); |
27 var promiseStateSymbol = utils.ImportNow("promise_state_symbol"); | 27 var promiseStateSymbol = utils.ImportNow("promise_state_symbol"); |
28 var promiseResultSymbol = utils.ImportNow("promise_result_symbol"); | 28 var promiseResultSymbol = utils.ImportNow("promise_result_symbol"); |
29 var SpeciesConstructor; | 29 var SpeciesConstructor; |
| 30 var speciesSymbol = utils.ImportNow("species_symbol"); |
30 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 31 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
31 | 32 |
32 utils.Import(function(from) { | 33 utils.Import(function(from) { |
33 MakeTypeError = from.MakeTypeError; | 34 MakeTypeError = from.MakeTypeError; |
34 SpeciesConstructor = from.SpeciesConstructor; | 35 SpeciesConstructor = from.SpeciesConstructor; |
35 }); | 36 }); |
36 | 37 |
37 // ------------------------------------------------------------------- | 38 // ------------------------------------------------------------------- |
38 | 39 |
39 // [[PromiseState]] values: | 40 // [[PromiseState]] values: |
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 return false; | 557 return false; |
557 } | 558 } |
558 | 559 |
559 // Return whether the promise will be handled by a user-defined reject | 560 // Return whether the promise will be handled by a user-defined reject |
560 // handler somewhere down the promise chain. For this, we do a depth-first | 561 // handler somewhere down the promise chain. For this, we do a depth-first |
561 // search for a reject handler that's not the default PromiseIdRejectHandler. | 562 // search for a reject handler that's not the default PromiseIdRejectHandler. |
562 function PromiseHasUserDefinedRejectHandler() { | 563 function PromiseHasUserDefinedRejectHandler() { |
563 return PromiseHasUserDefinedRejectHandlerRecursive(this); | 564 return PromiseHasUserDefinedRejectHandlerRecursive(this); |
564 }; | 565 }; |
565 | 566 |
| 567 |
| 568 function PromiseSpecies() { |
| 569 return this; |
| 570 } |
| 571 |
566 // ------------------------------------------------------------------- | 572 // ------------------------------------------------------------------- |
567 // Install exported functions. | 573 // Install exported functions. |
568 | 574 |
569 %AddNamedProperty(global, 'Promise', GlobalPromise, DONT_ENUM); | 575 %AddNamedProperty(global, 'Promise', GlobalPromise, DONT_ENUM); |
570 %AddNamedProperty(GlobalPromise.prototype, toStringTagSymbol, "Promise", | 576 %AddNamedProperty(GlobalPromise.prototype, toStringTagSymbol, "Promise", |
571 DONT_ENUM | READ_ONLY); | 577 DONT_ENUM | READ_ONLY); |
572 | 578 |
573 utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ | 579 utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ |
574 "reject", PromiseReject, | 580 "reject", PromiseReject, |
575 "all", PromiseAll, | 581 "all", PromiseAll, |
576 "race", PromiseRace, | 582 "race", PromiseRace, |
577 "resolve", PromiseResolve | 583 "resolve", PromiseResolve |
578 ]); | 584 ]); |
579 | 585 |
| 586 utils.InstallGetter(GlobalPromise, speciesSymbol, PromiseSpecies); |
| 587 |
580 utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ | 588 utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ |
581 "then", PromiseThen, | 589 "then", PromiseThen, |
582 "catch", PromiseCatch | 590 "catch", PromiseCatch |
583 ]); | 591 ]); |
584 | 592 |
585 %InstallToContext([ | 593 %InstallToContext([ |
586 "promise_catch", PromiseCatch, | 594 "promise_catch", PromiseCatch, |
587 "promise_chain", PromiseChain, | 595 "promise_chain", PromiseChain, |
588 "promise_create", PromiseCreate, | 596 "promise_create", PromiseCreate, |
589 "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, | 597 "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, |
(...skipping 21 matching lines...) Expand all Loading... |
611 to.PromiseChain = PromiseChain; | 619 to.PromiseChain = PromiseChain; |
612 to.PromiseDefer = PromiseDefer; | 620 to.PromiseDefer = PromiseDefer; |
613 to.PromiseAccept = PromiseAccept; | 621 to.PromiseAccept = PromiseAccept; |
614 | 622 |
615 to.PromiseCreateRejected = PromiseCreateRejected; | 623 to.PromiseCreateRejected = PromiseCreateRejected; |
616 to.PromiseCreateResolved = PromiseCreateResolved; | 624 to.PromiseCreateResolved = PromiseCreateResolved; |
617 to.PromiseThen = PromiseThen; | 625 to.PromiseThen = PromiseThen; |
618 }); | 626 }); |
619 | 627 |
620 }) | 628 }) |
OLD | NEW |