| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 18 matching lines...) Expand all Loading... |
| 29 NewPromiseCapability = from.NewPromiseCapability; | 29 NewPromiseCapability = from.NewPromiseCapability; |
| 30 PromiseCreate = from.PromiseCreate; | 30 PromiseCreate = from.PromiseCreate; |
| 31 PerformPromiseThen = from.PerformPromiseThen; | 31 PerformPromiseThen = from.PerformPromiseThen; |
| 32 RejectPromise = from.RejectPromise; | 32 RejectPromise = from.RejectPromise; |
| 33 ResolvePromise = from.ResolvePromise; | 33 ResolvePromise = from.ResolvePromise; |
| 34 }); | 34 }); |
| 35 | 35 |
| 36 var promiseAwaitHandlerSymbol = utils.ImportNow("promise_await_handler_symbol"); | 36 var promiseAwaitHandlerSymbol = utils.ImportNow("promise_await_handler_symbol"); |
| 37 var promiseHandledHintSymbol = | 37 var promiseHandledHintSymbol = |
| 38 utils.ImportNow("promise_handled_hint_symbol"); | 38 utils.ImportNow("promise_handled_hint_symbol"); |
| 39 var promiseHasHandlerSymbol = |
| 40 utils.ImportNow("promise_has_handler_symbol"); |
| 39 | 41 |
| 40 // ------------------------------------------------------------------- | 42 // ------------------------------------------------------------------- |
| 41 | 43 |
| 42 function PromiseCastResolved(value) { | 44 function PromiseCastResolved(value) { |
| 43 if (IsPromise(value)) { | 45 if (IsPromise(value)) { |
| 44 return value; | 46 return value; |
| 45 } else { | 47 } else { |
| 46 var promise = PromiseCreate(); | 48 var promise = PromiseCreate(); |
| 47 ResolvePromise(promise, value); | 49 ResolvePromise(promise, value); |
| 48 return promise; | 50 return promise; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 70 (sentError) => %_Call(AsyncFunctionThrow, generator, sentError); | 72 (sentError) => %_Call(AsyncFunctionThrow, generator, sentError); |
| 71 | 73 |
| 72 if (mark && DEBUG_IS_ACTIVE && IsPromise(awaited)) { | 74 if (mark && DEBUG_IS_ACTIVE && IsPromise(awaited)) { |
| 73 // Mark the reject handler callback such that it does not influence | 75 // Mark the reject handler callback such that it does not influence |
| 74 // catch prediction. | 76 // catch prediction. |
| 75 SET_PRIVATE(onRejected, promiseAwaitHandlerSymbol, true); | 77 SET_PRIVATE(onRejected, promiseAwaitHandlerSymbol, true); |
| 76 } | 78 } |
| 77 | 79 |
| 78 // Just forwarding the exception, so no debugEvent for throwawayCapability | 80 // Just forwarding the exception, so no debugEvent for throwawayCapability |
| 79 var throwawayCapability = NewPromiseCapability(GlobalPromise, false); | 81 var throwawayCapability = NewPromiseCapability(GlobalPromise, false); |
| 82 |
| 83 // The Promise will be thrown away and not handled, but it shouldn't trigger |
| 84 // unhandled reject events as its work is done |
| 85 SET_PRIVATE(throwawayCapability.promise, promiseHasHandlerSymbol, true); |
| 86 |
| 80 return PerformPromiseThen(promise, onFulfilled, onRejected, | 87 return PerformPromiseThen(promise, onFulfilled, onRejected, |
| 81 throwawayCapability); | 88 throwawayCapability); |
| 82 } | 89 } |
| 83 | 90 |
| 84 // Called by the parser from the desugaring of 'await' when catch | 91 // Called by the parser from the desugaring of 'await' when catch |
| 85 // prediction indicates no locally surrounding catch block | 92 // prediction indicates no locally surrounding catch block |
| 86 function AsyncFunctionAwaitUncaught(generator, awaited) { | 93 function AsyncFunctionAwaitUncaught(generator, awaited) { |
| 87 // TODO(littledan): Install a dependency edge from awaited to outerPromise | 94 // TODO(littledan): Install a dependency edge from awaited to outerPromise |
| 88 return AsyncFunctionAwait(generator, awaited, true); | 95 return AsyncFunctionAwait(generator, awaited, true); |
| 89 } | 96 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 102 return RejectPromise(promise, reason, false); | 109 return RejectPromise(promise, reason, false); |
| 103 } | 110 } |
| 104 | 111 |
| 105 %InstallToContext([ | 112 %InstallToContext([ |
| 106 "async_function_await_caught", AsyncFunctionAwaitCaught, | 113 "async_function_await_caught", AsyncFunctionAwaitCaught, |
| 107 "async_function_await_uncaught", AsyncFunctionAwaitUncaught, | 114 "async_function_await_uncaught", AsyncFunctionAwaitUncaught, |
| 108 "reject_promise_no_debug_event", RejectPromiseNoDebugEvent, | 115 "reject_promise_no_debug_event", RejectPromiseNoDebugEvent, |
| 109 ]); | 116 ]); |
| 110 | 117 |
| 111 }) | 118 }) |
| OLD | NEW |