Chromium Code Reviews| Index: src/js/promise.js |
| diff --git a/src/js/promise.js b/src/js/promise.js |
| index 20ffc8c4892327ac68f5242c7900a1006303959e..54058b792bd7ad41b94e271df9b6b37a5599bb40 100644 |
| --- a/src/js/promise.js |
| +++ b/src/js/promise.js |
| @@ -386,8 +386,14 @@ function PromiseCreateRejected(r) { |
| return %_Call(PromiseReject, GlobalPromise, r); |
| } |
| -function PromiseCreateResolved(x) { |
| - return %_Call(PromiseResolve, GlobalPromise, x); |
| +function PromiseCreateResolved(value) { |
| + if (IsPromise(value)) { |
| + 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
|
| + } else { |
| + var promise = PromiseInit(new GlobalPromise(promiseRawSymbol)); |
| + var resolveResult = ResolvePromise(promise, value); |
| + return promise; |
| + } |
| } |
| function PerformPromiseThen(promise, onResolve, onReject, resultCapability) { |
| @@ -629,8 +635,6 @@ utils.InstallFunctions(extrasUtils, 0, [ |
| fn => %FunctionRemovePrototype(fn)); |
| utils.Export(function(to) { |
| - to.IsPromise = IsPromise; |
| - |
| to.PromiseChain = PromiseChain; |
| to.PromiseDefer = PromiseDefer; |
| to.PromiseAccept = PromiseAccept; |