Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Side by Side Diff: src/js/promise.js

Issue 2498143002: Add markPromiseAsHandled V8 extra util (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add tests Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/cctest/test-api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 580
581 // Return whether the promise will be handled by a user-defined reject 581 // Return whether the promise will be handled by a user-defined reject
582 // handler somewhere down the promise chain. For this, we do a depth-first 582 // handler somewhere down the promise chain. For this, we do a depth-first
583 // search for a reject handler that's not the default PromiseIdRejectHandler. 583 // search for a reject handler that's not the default PromiseIdRejectHandler.
584 // This function also traverses dependencies of one Promise on another, 584 // This function also traverses dependencies of one Promise on another,
585 // set up through async/await and Promises resolved with Promises. 585 // set up through async/await and Promises resolved with Promises.
586 function PromiseHasUserDefinedRejectHandler() { 586 function PromiseHasUserDefinedRejectHandler() {
587 return PromiseHasUserDefinedRejectHandlerRecursive(this); 587 return PromiseHasUserDefinedRejectHandlerRecursive(this);
588 }; 588 };
589 589
590 function MarkPromiseAsHandled(promise) {
591 SET_PRIVATE(promise, promiseHasHandlerSymbol, true);
592 }
593
590 594
591 function PromiseSpecies() { 595 function PromiseSpecies() {
592 return this; 596 return this;
593 } 597 }
594 598
595 // ------------------------------------------------------------------- 599 // -------------------------------------------------------------------
596 // Install exported functions. 600 // Install exported functions.
597 601
598 %AddNamedProperty(global, 'Promise', GlobalPromise, DONT_ENUM); 602 %AddNamedProperty(global, 'Promise', GlobalPromise, DONT_ENUM);
599 %AddNamedProperty(GlobalPromise.prototype, toStringTagSymbol, "Promise", 603 %AddNamedProperty(GlobalPromise.prototype, toStringTagSymbol, "Promise",
(...skipping 25 matching lines...) Expand all
625 "promise_handle", PromiseHandle, 629 "promise_handle", PromiseHandle,
626 "promise_debug_get_info", PromiseDebugGetInfo 630 "promise_debug_get_info", PromiseDebugGetInfo
627 ]); 631 ]);
628 632
629 // This allows extras to create promises quickly without building extra 633 // This allows extras to create promises quickly without building extra
630 // resolve/reject closures, and allows them to later resolve and reject any 634 // resolve/reject closures, and allows them to later resolve and reject any
631 // promise without having to hold on to those closures forever. 635 // promise without having to hold on to those closures forever.
632 utils.InstallFunctions(extrasUtils, 0, [ 636 utils.InstallFunctions(extrasUtils, 0, [
633 "createPromise", PromiseCreate, 637 "createPromise", PromiseCreate,
634 "resolvePromise", ResolvePromise, 638 "resolvePromise", ResolvePromise,
635 "rejectPromise", DoRejectPromise 639 "rejectPromise", DoRejectPromise,
640 "markPromiseAsHandled", MarkPromiseAsHandled
636 ]); 641 ]);
637 642
638 utils.Export(function(to) { 643 utils.Export(function(to) {
639 to.IsPromise = IsPromise; 644 to.IsPromise = IsPromise;
640 to.PromiseCreate = PromiseCreate; 645 to.PromiseCreate = PromiseCreate;
641 to.PromiseThen = PromiseThen; 646 to.PromiseThen = PromiseThen;
642 647
643 to.GlobalPromise = GlobalPromise; 648 to.GlobalPromise = GlobalPromise;
644 to.NewPromiseCapability = NewPromiseCapability; 649 to.NewPromiseCapability = NewPromiseCapability;
645 to.PerformPromiseThen = PerformPromiseThen; 650 to.PerformPromiseThen = PerformPromiseThen;
646 to.ResolvePromise = ResolvePromise; 651 to.ResolvePromise = ResolvePromise;
647 to.RejectPromise = RejectPromise; 652 to.RejectPromise = RejectPromise;
648 }); 653 });
649 654
650 }) 655 })
OLDNEW
« no previous file with comments | « no previous file | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698