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

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

Issue 2578923002: [inspector] async stacks for Promise.then calls... (Closed)
Patch Set: added missing handle scope Created 4 years 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
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 21 matching lines...) Expand all
32 32
33 utils.Import(function(from) { 33 utils.Import(function(from) {
34 ObjectHasOwnProperty = from.ObjectHasOwnProperty; 34 ObjectHasOwnProperty = from.ObjectHasOwnProperty;
35 SpeciesConstructor = from.SpeciesConstructor; 35 SpeciesConstructor = from.SpeciesConstructor;
36 }); 36 });
37 37
38 // ------------------------------------------------------------------- 38 // -------------------------------------------------------------------
39 39
40 // Core functionality. 40 // Core functionality.
41 41
42 function PromiseDebugGetInfo(deferreds, status) { 42 function PromiseDebugGetInfo(deferreds, status, id) {
43 var id, name, instrumenting = DEBUG_IS_ACTIVE; 43 var name, instrumenting = DEBUG_IS_ACTIVE;
44
45 if (instrumenting) { 44 if (instrumenting) {
46 // In an async function, reuse the existing stack related to the outer 45 // In an async function, reuse the existing stack related to the outer
47 // Promise. Otherwise, e.g. in a direct call to then, save a new stack. 46 // Promise. Otherwise, e.g. in a direct call to then, save a new stack.
48 // Promises with multiple reactions with one or more of them being async 47 // Promises with multiple reactions with one or more of them being async
49 // functions will not get a good stack trace, as async functions require 48 // functions will not get a good stack trace, as async functions require
50 // different stacks from direct Promise use, but we save and restore a 49 // different stacks from direct Promise use, but we save and restore a
51 // stack once for all reactions. TODO(littledan): Improve this case. 50 // stack once for all reactions. TODO(littledan): Improve this case.
52 if (!IS_UNDEFINED(deferreds) && 51 if (!IS_UNDEFINED(deferreds) &&
53 HAS_PRIVATE(deferreds.promise, promiseHandledBySymbol) && 52 HAS_PRIVATE(deferreds.promise, promiseHandledBySymbol) &&
54 HAS_PRIVATE(GET_PRIVATE(deferreds.promise, promiseHandledBySymbol), 53 HAS_PRIVATE(GET_PRIVATE(deferreds.promise, promiseHandledBySymbol),
55 promiseAsyncStackIDSymbol)) { 54 promiseAsyncStackIDSymbol)) {
56 id = GET_PRIVATE(GET_PRIVATE(deferreds.promise, promiseHandledBySymbol), 55 id = GET_PRIVATE(GET_PRIVATE(deferreds.promise, promiseHandledBySymbol),
57 promiseAsyncStackIDSymbol); 56 promiseAsyncStackIDSymbol);
58 name = "async function"; 57 name = "async function";
59 } else { 58 } else {
60 id = %DebugNextMicrotaskId();
61 name = status === kFulfilled ? "Promise.resolve" : "Promise.reject"; 59 name = status === kFulfilled ? "Promise.resolve" : "Promise.reject";
62 %DebugAsyncTaskEvent("enqueue", id, name);
63 } 60 }
64 } 61 }
65 return [id, name]; 62 return [id, name];
66 } 63 }
67 64
68 function PromiseIdResolveHandler(x) { return x; } 65 function PromiseIdResolveHandler(x) { return x; }
69 function PromiseIdRejectHandler(r) { %_ReThrow(r); } 66 function PromiseIdRejectHandler(r) { %_ReThrow(r); }
70 SET_PRIVATE(PromiseIdRejectHandler, promiseForwardingHandlerSymbol, true); 67 SET_PRIVATE(PromiseIdRejectHandler, promiseForwardingHandlerSymbol, true);
71 68
72 // ------------------------------------------------------------------- 69 // -------------------------------------------------------------------
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 384
388 utils.Export(function(to) { 385 utils.Export(function(to) {
389 to.PromiseCreate = PromiseCreate; 386 to.PromiseCreate = PromiseCreate;
390 to.PromiseThen = PromiseThen; 387 to.PromiseThen = PromiseThen;
391 388
392 to.CreateInternalPromiseCapability = CreateInternalPromiseCapability; 389 to.CreateInternalPromiseCapability = CreateInternalPromiseCapability;
393 to.RejectPromise = RejectPromise; 390 to.RejectPromise = RejectPromise;
394 }); 391 });
395 392
396 }) 393 })
OLDNEW
« src/debug/debug.cc ('K') | « src/js/async-await.js ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698