Index: src/js/promise.js |
diff --git a/src/js/promise.js b/src/js/promise.js |
index 75ec6e1c57683f56c9107e5f8754590b532c46d3..eea90f44f1fc62322e5e740bb55cac545e86af1c 100644 |
--- a/src/js/promise.js |
+++ b/src/js/promise.js |
@@ -49,36 +49,6 @@ const kPending = 0; |
const kFulfilled = +1; |
const kRejected = +2; |
-// ES#sec-createresolvingfunctions |
-// CreateResolvingFunctions ( promise ) |
-function CreateResolvingFunctions(promise, debugEvent) { |
- var alreadyResolved = false; |
- |
- // ES#sec-promise-resolve-functions |
- // Promise Resolve Functions |
- var resolve = value => { |
- if (alreadyResolved === true) return; |
- alreadyResolved = true; |
- ResolvePromise(promise, value); |
- }; |
- |
- // ES#sec-promise-reject-functions |
- // Promise Reject Functions |
- var reject = reason => { |
- if (alreadyResolved === true) return; |
- alreadyResolved = true; |
- %PromiseReject(promise, reason, debugEvent); |
- PromiseSet(promise, kRejected, reason); |
- }; |
- |
- return { |
- __proto__: null, |
- resolve: resolve, |
- reject: reject |
- }; |
-} |
- |
- |
// ES#sec-promise-executor |
// Promise ( executor ) |
var GlobalPromise = function Promise(executor) { |
@@ -92,13 +62,13 @@ var GlobalPromise = function Promise(executor) { |
var promise = PromiseInit(%_NewObject(GlobalPromise, new.target)); |
// Calling the reject function would be a new exception, so debugEvent = true |
- var callbacks = CreateResolvingFunctions(promise, true); |
+ var callbacks = %create_resolving_functions(promise, true); |
var debug_is_active = DEBUG_IS_ACTIVE; |
try { |
if (debug_is_active) %DebugPushPromise(promise); |
- executor(callbacks.resolve, callbacks.reject); |
+ executor(callbacks[0], callbacks[1]); |
adamk
2016/11/09 00:06:23
Define constants for these 0 and 1?
gsathya
2016/11/09 00:57:33
Done.
|
} %catch (e) { // Natives syntax to mark this catch block. |
- %_Call(callbacks.reject, UNDEFINED, e); |
+ %_Call(callbacks[1], UNDEFINED, e); |
} finally { |
if (debug_is_active) %DebugPopPromise(); |
} |
@@ -291,13 +261,13 @@ function ResolvePromise(promise, resolution) { |
} |
if (IS_CALLABLE(then)) { |
- var callbacks = CreateResolvingFunctions(promise, false); |
+ var callbacks = %create_resolving_functions(promise, false); |
if (DEBUG_IS_ACTIVE && IsPromise(resolution)) { |
// Mark the dependency of the new promise on the resolution |
SET_PRIVATE(resolution, promiseHandledBySymbol, promise); |
} |
%EnqueuePromiseResolveThenableJob( |
- resolution, then, callbacks.resolve, callbacks.reject); |
+ resolution, then, callbacks[0], callbacks[1]); |
return; |
} |
} |
@@ -307,8 +277,8 @@ function ResolvePromise(promise, resolution) { |
} |
// Only used by async-await.js |
-function RejectPromise(promise, reason) { |
- %PromiseReject(promise, reason, false); |
+function RejectPromise(promise, reason, debugEvent) { |
+ %PromiseReject(promise, reason, debugEvent); |
PromiseSet(promise, kRejected, reason); |
} |
@@ -324,11 +294,11 @@ function NewPromiseCapability(C, debugEvent) { |
if (C === GlobalPromise) { |
// Optimized case, avoid extra closure. |
var promise = PromiseCreate(); |
- var callbacks = CreateResolvingFunctions(promise, debugEvent); |
+ var callbacks = %create_resolving_functions(promise, debugEvent); |
return { |
promise: promise, |
- resolve: callbacks.resolve, |
- reject: callbacks.reject |
+ resolve: callbacks[0], |
+ reject: callbacks[1] |
}; |
} |
@@ -643,6 +613,8 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ |
"promise_create", PromiseCreate, |
"promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, |
"promise_reject", DoRejectPromise, |
+ //TODO(gsathya): Remove this once we update the promise builtin. |
adamk
2016/11/09 00:06:23
Super nit: space between "//" and "TODO" please.
gsathya
2016/11/09 00:57:33
Done.
|
+ "promise_internal_reject", RejectPromise, |
"promise_resolve", ResolvePromise, |
"promise_then", PromiseThen, |
"promise_handle", PromiseHandle, |