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; |
}); |