Chromium Code Reviews| Index: src/js/promise.js |
| diff --git a/src/js/promise.js b/src/js/promise.js |
| index b78f68c4f71c367365a8a149803c3091a9e55f75..2f129d8ed19beaf1f7ca5ad4a7e12cc72cb40464 100644 |
| --- a/src/js/promise.js |
| +++ b/src/js/promise.js |
| @@ -18,8 +18,6 @@ var promiseHandledBySymbol = |
| utils.ImportNow("promise_handled_by_symbol"); |
| var promiseForwardingHandlerSymbol = |
| utils.ImportNow("promise_forwarding_handler_symbol"); |
| -var promiseHasHandlerSymbol = |
| - utils.ImportNow("promise_has_handler_symbol"); |
| var promiseHandledHintSymbol = |
| utils.ImportNow("promise_handled_hint_symbol"); |
| var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); |
| @@ -47,7 +45,7 @@ function PromiseHandle(value, handler, deferred) { |
| if (debug_is_active) %DebugPushPromise(deferred.promise); |
| var result = handler(value); |
| if (IS_UNDEFINED(deferred.resolve)) { |
| - ResolvePromise(deferred.promise, result); |
| + %promise_resolve(deferred.promise, result); |
| } else { |
| %_Call(deferred.resolve, UNDEFINED, result); |
| } |
| @@ -106,61 +104,6 @@ function PromiseCreate() { |
| return %promise_internal_constructor(); |
| } |
| -// ES#sec-promise-resolve-functions |
| -// Promise Resolve Functions, steps 6-13 |
| -function ResolvePromise(promise, resolution) { |
| - if (resolution === promise) { |
| - var exception = %make_type_error(kPromiseCyclic, resolution); |
| - %PromiseReject(promise, exception, true); |
| - return; |
| - } |
| - if (IS_RECEIVER(resolution)) { |
| - // 25.4.1.3.2 steps 8-12 |
| - try { |
| - var then = resolution.then; |
| - } catch (e) { |
| - %PromiseReject(promise, e, true); |
| - return; |
| - } |
| - |
| - // Resolution is a native promise and if it's already resolved or |
| - // rejected, shortcircuit the resolution procedure by directly |
| - // reusing the value from the promise. |
| - if (%is_promise(resolution) && then === PromiseThen) { |
| - var thenableState = %PromiseStatus(resolution); |
| - if (thenableState === kFulfilled) { |
| - // This goes inside the if-else to save one symbol lookup in |
| - // the slow path. |
| - var thenableValue = %PromiseResult(resolution); |
| - %PromiseFulfill(promise, kFulfilled, thenableValue); |
| - SET_PRIVATE(promise, promiseHasHandlerSymbol, true); |
| - return; |
| - } else if (thenableState === kRejected) { |
| - var thenableValue = %PromiseResult(resolution); |
| - if (!HAS_DEFINED_PRIVATE(resolution, promiseHasHandlerSymbol)) { |
| - // Promise has already been rejected, but had no handler. |
| - // Revoke previously triggered reject event. |
| - %PromiseRevokeReject(resolution); |
| - } |
| - // Don't cause a debug event as this case is forwarding a rejection |
| - %PromiseReject(promise, thenableValue, false); |
| - SET_PRIVATE(resolution, promiseHasHandlerSymbol, true); |
| - return; |
| - } |
| - } |
| - |
| - if (IS_CALLABLE(then)) { |
| - if (DEBUG_IS_ACTIVE && %is_promise(resolution)) { |
| - // Mark the dependency of the new promise on the resolution |
| - SET_PRIVATE(resolution, promiseHandledBySymbol, promise); |
| - } |
| - %EnqueuePromiseResolveThenableJob(promise, resolution, then); |
| - return; |
| - } |
| - } |
| - %PromiseFulfill(promise, kFulfilled, resolution); |
| -} |
| - |
| // Only used by async-await.js |
| function RejectPromise(promise, reason, debugEvent) { |
| %PromiseReject(promise, reason, debugEvent); |
| @@ -251,7 +194,7 @@ function PromiseResolve(x) { |
| // Avoid creating resolving functions. |
| if (this === GlobalPromise) { |
| var promise = %promise_internal_constructor(); |
| - ResolvePromise(promise, x); |
| + %promise_resolve(promise, x); |
| return promise; |
| } |
| @@ -422,7 +365,7 @@ function PromiseHasUserDefinedRejectHandler() { |
| }; |
| function MarkPromiseAsHandled(promise) { |
| - SET_PRIVATE(promise, promiseHasHandlerSymbol, true); |
| + %PromiseMarkAsHandled(promise); |
| } |
| @@ -442,9 +385,7 @@ utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ |
| utils.InstallGetter(GlobalPromise, speciesSymbol, PromiseSpecies); |
| -utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ |
| - "catch", PromiseCatch |
| -]); |
| +%SetCode(GlobalPromise.prototype.catch, PromiseCatch); |
| %InstallToContext([ |
| "promise_catch", PromiseCatch, |
|
jochen (gone - plz use gerrit)
2016/12/08 15:56:08
fyi, after the %SetCode above, we shouldn't use th
|
| @@ -453,8 +394,6 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ |
| "promise_reject", DoRejectPromise, |
| // TODO(gsathya): Remove this once we update the promise builtin. |
| "promise_internal_reject", RejectPromise, |
| - "promise_resolve", ResolvePromise, |
| - "promise_then", PromiseThen, |
| "promise_handle", PromiseHandle, |
| "promise_debug_get_info", PromiseDebugGetInfo, |
| "new_promise_capability", NewPromiseCapability, |
| @@ -468,7 +407,6 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ |
| // promise without having to hold on to those closures forever. |
| utils.InstallFunctions(extrasUtils, 0, [ |
| "createPromise", PromiseCreate, |
| - "resolvePromise", ResolvePromise, |
| "rejectPromise", DoRejectPromise, |
| "markPromiseAsHandled", MarkPromiseAsHandled |
| ]); |
| @@ -478,7 +416,6 @@ utils.Export(function(to) { |
| to.PromiseThen = PromiseThen; |
| to.CreateInternalPromiseCapability = CreateInternalPromiseCapability; |
| - to.ResolvePromise = ResolvePromise; |
| to.RejectPromise = RejectPromise; |
| }); |