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 |
11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
12 // Imports | 12 // Imports |
13 | 13 |
14 var InternalArray = utils.InternalArray; | 14 var InternalArray = utils.InternalArray; |
15 var promiseAsyncStackIDSymbol = | 15 var promiseAsyncStackIDSymbol = |
16 utils.ImportNow("promise_async_stack_id_symbol"); | 16 utils.ImportNow("promise_async_stack_id_symbol"); |
17 var promiseHandledBySymbol = | 17 var promiseHandledBySymbol = |
18 utils.ImportNow("promise_handled_by_symbol"); | 18 utils.ImportNow("promise_handled_by_symbol"); |
19 var promiseForwardingHandlerSymbol = | 19 var promiseForwardingHandlerSymbol = |
20 utils.ImportNow("promise_forwarding_handler_symbol"); | 20 utils.ImportNow("promise_forwarding_handler_symbol"); |
21 var promiseHandledHintSymbol = | 21 var promiseHandledHintSymbol = |
22 utils.ImportNow("promise_handled_hint_symbol"); | 22 utils.ImportNow("promise_handled_hint_symbol"); |
23 var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); | 23 var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); |
24 var promiseStateSymbol = utils.ImportNow("promise_state_symbol"); | 24 var promiseStateSymbol = utils.ImportNow("promise_state_symbol"); |
25 var promiseResultSymbol = utils.ImportNow("promise_result_symbol"); | 25 var promiseResultSymbol = utils.ImportNow("promise_result_symbol"); |
26 var SpeciesConstructor; | |
27 var speciesSymbol = utils.ImportNow("species_symbol"); | |
28 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 26 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
29 var ObjectHasOwnProperty; | 27 var ObjectHasOwnProperty; |
30 var GlobalPromise = global.Promise; | 28 var GlobalPromise = global.Promise; |
31 var PromiseThen = GlobalPromise.prototype.then; | 29 var PromiseThen = GlobalPromise.prototype.then; |
32 | 30 |
33 utils.Import(function(from) { | 31 utils.Import(function(from) { |
34 ObjectHasOwnProperty = from.ObjectHasOwnProperty; | 32 ObjectHasOwnProperty = from.ObjectHasOwnProperty; |
35 SpeciesConstructor = from.SpeciesConstructor; | |
36 }); | 33 }); |
37 | 34 |
38 // ------------------------------------------------------------------- | 35 // ------------------------------------------------------------------- |
39 | 36 |
40 // Core functionality. | 37 // Core functionality. |
41 | 38 |
42 function PromiseDebugGetInfo(deferreds, status) { | 39 function PromiseDebugGetInfo(deferreds, status) { |
43 var id, name, instrumenting = DEBUG_IS_ACTIVE; | 40 var id, name, instrumenting = DEBUG_IS_ACTIVE; |
44 | 41 |
45 if (instrumenting) { | 42 if (instrumenting) { |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 // This function also traverses dependencies of one Promise on another, | 333 // This function also traverses dependencies of one Promise on another, |
337 // set up through async/await and Promises resolved with Promises. | 334 // set up through async/await and Promises resolved with Promises. |
338 function PromiseHasUserDefinedRejectHandler() { | 335 function PromiseHasUserDefinedRejectHandler() { |
339 return PromiseHasUserDefinedRejectHandlerRecursive(this); | 336 return PromiseHasUserDefinedRejectHandlerRecursive(this); |
340 }; | 337 }; |
341 | 338 |
342 function MarkPromiseAsHandled(promise) { | 339 function MarkPromiseAsHandled(promise) { |
343 %PromiseMarkAsHandled(promise); | 340 %PromiseMarkAsHandled(promise); |
344 } | 341 } |
345 | 342 |
346 | |
347 function PromiseSpecies() { | |
348 return this; | |
349 } | |
350 | |
351 // ------------------------------------------------------------------- | 343 // ------------------------------------------------------------------- |
352 // Install exported functions. | 344 // Install exported functions. |
353 | 345 |
354 utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ | 346 utils.InstallFunctions(GlobalPromise, DONT_ENUM, [ |
355 "reject", PromiseReject, | 347 "reject", PromiseReject, |
356 "all", PromiseAll, | 348 "all", PromiseAll, |
357 "race", PromiseRace, | 349 "race", PromiseRace, |
358 "resolve", PromiseResolve | 350 "resolve", PromiseResolve |
359 ]); | 351 ]); |
360 | 352 |
361 utils.InstallGetter(GlobalPromise, speciesSymbol, PromiseSpecies); | |
362 | |
363 %SetCode(GlobalPromise.prototype.catch, PromiseCatch); | 353 %SetCode(GlobalPromise.prototype.catch, PromiseCatch); |
364 | 354 |
365 %InstallToContext([ | 355 %InstallToContext([ |
366 "promise_catch", GlobalPromise.prototype.catch, | 356 "promise_catch", GlobalPromise.prototype.catch, |
367 "promise_create", PromiseCreate, | 357 "promise_create", PromiseCreate, |
368 "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, | 358 "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, |
369 "promise_reject", DoRejectPromise, | 359 "promise_reject", DoRejectPromise, |
370 // TODO(gsathya): Remove this once we update the promise builtin. | 360 // TODO(gsathya): Remove this once we update the promise builtin. |
371 "promise_internal_reject", RejectPromise, | 361 "promise_internal_reject", RejectPromise, |
372 "promise_debug_get_info", PromiseDebugGetInfo, | 362 "promise_debug_get_info", PromiseDebugGetInfo, |
(...skipping 14 matching lines...) Expand all Loading... |
387 | 377 |
388 utils.Export(function(to) { | 378 utils.Export(function(to) { |
389 to.PromiseCreate = PromiseCreate; | 379 to.PromiseCreate = PromiseCreate; |
390 to.PromiseThen = PromiseThen; | 380 to.PromiseThen = PromiseThen; |
391 | 381 |
392 to.CreateInternalPromiseCapability = CreateInternalPromiseCapability; | 382 to.CreateInternalPromiseCapability = CreateInternalPromiseCapability; |
393 to.RejectPromise = RejectPromise; | 383 to.RejectPromise = RejectPromise; |
394 }); | 384 }); |
395 | 385 |
396 }) | 386 }) |
OLD | NEW |