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

Side by Side Diff: src/promise.js

Issue 792383003: Add a missing DebugPromiseEvent in promise.js (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 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
« no previous file with comments | « no previous file | no next file » | 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 "use strict"; 5 "use strict";
6 6
7 // This file relies on the fact that the following declaration has been made 7 // This file relies on the fact that the following declaration has been made
8 // in runtime.js: 8 // in runtime.js:
9 // var $Object = global.Object 9 // var $Object = global.Object
10 // var $WeakMap = global.WeakMap 10 // var $WeakMap = global.WeakMap
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 SET_PRIVATE(promise, promiseStatus, status); 60 SET_PRIVATE(promise, promiseStatus, status);
61 SET_PRIVATE(promise, promiseValue, value); 61 SET_PRIVATE(promise, promiseValue, value);
62 SET_PRIVATE(promise, promiseOnResolve, onResolve); 62 SET_PRIVATE(promise, promiseOnResolve, onResolve);
63 SET_PRIVATE(promise, promiseOnReject, onReject); 63 SET_PRIVATE(promise, promiseOnReject, onReject);
64 if (DEBUG_IS_ACTIVE) { 64 if (DEBUG_IS_ACTIVE) {
65 %DebugPromiseEvent({ promise: promise, status: status, value: value }); 65 %DebugPromiseEvent({ promise: promise, status: status, value: value });
66 } 66 }
67 return promise; 67 return promise;
68 } 68 }
69 69
70 function PromiseCreateAndSet(status, value) {
71 var promise = new $Promise(promiseRaw);
72 // If debug is active, notify about the newly created promise first.
73 if (DEBUG_IS_ACTIVE) PromiseSet(promise, 0, UNDEFINED);
74 return PromiseSet(promise, status, value);
75 }
76
70 function PromiseInit(promise) { 77 function PromiseInit(promise) {
71 return PromiseSet( 78 return PromiseSet(
72 promise, 0, UNDEFINED, new InternalArray, new InternalArray) 79 promise, 0, UNDEFINED, new InternalArray, new InternalArray)
73 } 80 }
74 81
75 function PromiseDone(promise, status, value, promiseQueue) { 82 function PromiseDone(promise, status, value, promiseQueue) {
76 if (GET_PRIVATE(promise, promiseStatus) === 0) { 83 if (GET_PRIVATE(promise, promiseStatus) === 0) {
77 var tasks = GET_PRIVATE(promise, promiseQueue); 84 var tasks = GET_PRIVATE(promise, promiseQueue);
78 if (tasks.length) PromiseEnqueue(value, tasks, status); 85 if (tasks.length) PromiseEnqueue(value, tasks, status);
79 PromiseSet(promise, status, value); 86 PromiseSet(promise, status, value);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 result.resolve = resolve; 197 result.resolve = resolve;
191 result.reject = reject; 198 result.reject = reject;
192 }) 199 })
193 return result; 200 return result;
194 } 201 }
195 } 202 }
196 203
197 function PromiseResolved(x) { 204 function PromiseResolved(x) {
198 if (this === $Promise) { 205 if (this === $Promise) {
199 // Optimized case, avoid extra closure. 206 // Optimized case, avoid extra closure.
200 return PromiseSet(new $Promise(promiseRaw), +1, x); 207 return PromiseCreateAndSet(+1, x);
201 } else { 208 } else {
202 return new this(function(resolve, reject) { resolve(x) }); 209 return new this(function(resolve, reject) { resolve(x) });
203 } 210 }
204 } 211 }
205 212
206 function PromiseRejected(r) { 213 function PromiseRejected(r) {
207 var promise; 214 var promise;
208 if (this === $Promise) { 215 if (this === $Promise) {
209 // Optimized case, avoid extra closure. 216 // Optimized case, avoid extra closure.
210 promise = PromiseSet(new $Promise(promiseRaw), -1, r); 217 promise = PromiseCreateAndSet(-1, r);
211 // The debug event for this would always be an uncaught promise reject, 218 // The debug event for this would always be an uncaught promise reject,
212 // which is usually simply noise. Do not trigger that debug event. 219 // which is usually simply noise. Do not trigger that debug event.
213 %PromiseRejectEvent(promise, r, false); 220 %PromiseRejectEvent(promise, r, false);
214 } else { 221 } else {
215 promise = new this(function(resolve, reject) { reject(r) }); 222 promise = new this(function(resolve, reject) { reject(r) });
216 } 223 }
217 return promise; 224 return promise;
218 } 225 }
219 226
220 // Simple chaining. 227 // Simple chaining.
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 "race", PromiseOne, 391 "race", PromiseOne,
385 "resolve", PromiseCast 392 "resolve", PromiseCast
386 ]); 393 ]);
387 InstallFunctions($Promise.prototype, DONT_ENUM, [ 394 InstallFunctions($Promise.prototype, DONT_ENUM, [
388 "chain", PromiseChain, 395 "chain", PromiseChain,
389 "then", PromiseThen, 396 "then", PromiseThen,
390 "catch", PromiseCatch 397 "catch", PromiseCatch
391 ]); 398 ]);
392 399
393 })(); 400 })();
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698