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 |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 // equivalent to throwing an exception directly. | 143 // equivalent to throwing an exception directly. |
144 %PromiseRejectEventFromStack(promise, r); | 144 %PromiseRejectEventFromStack(promise, r); |
145 return promise; | 145 return promise; |
146 } else { | 146 } else { |
147 var promiseCapability = NewPromiseCapability(this, true); | 147 var promiseCapability = NewPromiseCapability(this, true); |
148 %_Call(promiseCapability.reject, UNDEFINED, r); | 148 %_Call(promiseCapability.reject, UNDEFINED, r); |
149 return promiseCapability.promise; | 149 return promiseCapability.promise; |
150 } | 150 } |
151 } | 151 } |
152 | 152 |
153 // ES#sec-promise.prototype.catch | |
154 // Promise.prototype.catch ( onRejected ) | |
155 function PromiseCatch(onReject) { | |
156 return this.then(UNDEFINED, onReject); | |
157 } | |
158 | |
159 // Combinators. | 153 // Combinators. |
160 | 154 |
161 // ES#sec-promise.resolve | 155 // ES#sec-promise.resolve |
162 // Promise.resolve ( x ) | 156 // Promise.resolve ( x ) |
163 function PromiseResolve(x) { | 157 function PromiseResolve(x) { |
164 if (!IS_RECEIVER(this)) { | 158 if (!IS_RECEIVER(this)) { |
165 throw %make_type_error(kCalledOnNonObject, PromiseResolve); | 159 throw %make_type_error(kCalledOnNonObject, PromiseResolve); |
166 } | 160 } |
167 if (%is_promise(x) && x.constructor === this) return x; | 161 if (%is_promise(x) && x.constructor === this) return x; |
168 | 162 |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 | 347 |
354 utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ | 348 utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ |
355 "reject", PromiseReject, | 349 "reject", PromiseReject, |
356 "all", PromiseAll, | 350 "all", PromiseAll, |
357 "race", PromiseRace, | 351 "race", PromiseRace, |
358 "resolve", PromiseResolve | 352 "resolve", PromiseResolve |
359 ]); | 353 ]); |
360 | 354 |
361 utils.InstallGetter(GlobalPromise, speciesSymbol, PromiseSpecies); | 355 utils.InstallGetter(GlobalPromise, speciesSymbol, PromiseSpecies); |
362 | 356 |
363 %SetCode(GlobalPromise.prototype.catch, PromiseCatch); | |
364 | |
365 %InstallToContext([ | 357 %InstallToContext([ |
366 "promise_catch", GlobalPromise.prototype.catch, | |
367 "promise_create", PromiseCreate, | 358 "promise_create", PromiseCreate, |
368 "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, | 359 "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, |
369 "promise_reject", DoRejectPromise, | 360 "promise_reject", DoRejectPromise, |
370 // TODO(gsathya): Remove this once we update the promise builtin. | 361 // TODO(gsathya): Remove this once we update the promise builtin. |
371 "promise_internal_reject", RejectPromise, | 362 "promise_internal_reject", RejectPromise, |
372 "promise_debug_get_info", PromiseDebugGetInfo, | 363 "promise_debug_get_info", PromiseDebugGetInfo, |
373 "new_promise_capability", NewPromiseCapability, | 364 "new_promise_capability", NewPromiseCapability, |
374 "internal_promise_capability", CreateInternalPromiseCapability, | 365 "internal_promise_capability", CreateInternalPromiseCapability, |
375 "promise_id_resolve_handler", PromiseIdResolveHandler, | 366 "promise_id_resolve_handler", PromiseIdResolveHandler, |
376 "promise_id_reject_handler", PromiseIdRejectHandler | 367 "promise_id_reject_handler", PromiseIdRejectHandler |
(...skipping 10 matching lines...) Expand all Loading... |
387 | 378 |
388 utils.Export(function(to) { | 379 utils.Export(function(to) { |
389 to.PromiseCreate = PromiseCreate; | 380 to.PromiseCreate = PromiseCreate; |
390 to.PromiseThen = PromiseThen; | 381 to.PromiseThen = PromiseThen; |
391 | 382 |
392 to.CreateInternalPromiseCapability = CreateInternalPromiseCapability; | 383 to.CreateInternalPromiseCapability = CreateInternalPromiseCapability; |
393 to.RejectPromise = RejectPromise; | 384 to.RejectPromise = RejectPromise; |
394 }); | 385 }); |
395 | 386 |
396 }) | 387 }) |
OLD | NEW |