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

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

Issue 1558113002: Add UseCounters for various standards-related code paths (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Don't expose patternSymbol Created 4 years, 11 months 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
11 // ------------------------------------------------------------------- 11 // -------------------------------------------------------------------
12 // Imports 12 // Imports
13 13
14 var InternalArray = utils.InternalArray; 14 var InternalArray = utils.InternalArray;
15 var MakeTypeError; 15 var MakeTypeError;
16 var promiseCombinedDeferredSymbol = 16 var promiseCombinedDeferredSymbol =
17 utils.ImportNow("promise_combined_deferred_symbol"); 17 utils.ImportNow("promise_combined_deferred_symbol");
18 var promiseHasHandlerSymbol = 18 var promiseHasHandlerSymbol =
19 utils.ImportNow("promise_has_handler_symbol"); 19 utils.ImportNow("promise_has_handler_symbol");
20 var promiseOnRejectSymbol = utils.ImportNow("promise_on_reject_symbol"); 20 var promiseOnRejectSymbol = utils.ImportNow("promise_on_reject_symbol");
21 var promiseOnResolveSymbol = 21 var promiseOnResolveSymbol =
22 utils.ImportNow("promise_on_resolve_symbol"); 22 utils.ImportNow("promise_on_resolve_symbol");
23 var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); 23 var promiseRawSymbol = utils.ImportNow("promise_raw_symbol");
24 var promiseStatusSymbol = utils.ImportNow("promise_status_symbol"); 24 var promiseStatusSymbol = utils.ImportNow("promise_status_symbol");
25 var promiseValueSymbol = utils.ImportNow("promise_value_symbol"); 25 var promiseValueSymbol = utils.ImportNow("promise_value_symbol");
26 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); 26 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol");
27 const kPromiseChain = 17;
28 const kPromiseAccept = 18;
29 const kPromiseDefer = 19;
adamk 2016/01/05 19:10:09 Same for theses consts. I can imagine doing a clea
Dan Ehrenberg 2016/01/06 03:20:55 I don't like macros! But this patch isn't the foru
27 30
28 utils.Import(function(from) { 31 utils.Import(function(from) {
29 MakeTypeError = from.MakeTypeError; 32 MakeTypeError = from.MakeTypeError;
30 }); 33 });
31 34
32 // ------------------------------------------------------------------- 35 // -------------------------------------------------------------------
33 36
34 // Status values: 0 = pending, +1 = resolved, -1 = rejected 37 // Status values: 0 = pending, +1 = resolved, -1 = rejected
35 var lastMicrotaskId = 0; 38 var lastMicrotaskId = 0;
36 39
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 var result = {promise: UNDEFINED, resolve: UNDEFINED, reject: UNDEFINED }; 234 var result = {promise: UNDEFINED, resolve: UNDEFINED, reject: UNDEFINED };
232 result.promise = new C(function(resolve, reject) { 235 result.promise = new C(function(resolve, reject) {
233 // TODO(littledan): Check for resolve and reject being not undefined 236 // TODO(littledan): Check for resolve and reject being not undefined
234 result.resolve = resolve; 237 result.resolve = resolve;
235 result.reject = reject; 238 result.reject = reject;
236 }); 239 });
237 return result; 240 return result;
238 } 241 }
239 } 242 }
240 243
241 function PromiseDeferred() { 244 function PromiseDeferred() {
adamk 2016/01/05 19:10:09 Could this be renamed "PromiseDefer" for clarity?
Dan Ehrenberg 2016/01/06 03:20:55 Agreed that this is confusing. I plan to do this a
245 %IncrementUseCounter(kPromiseDefer);
242 return NewPromiseCapability(this); 246 return NewPromiseCapability(this);
243 } 247 }
244 248
245 function PromiseResolved(x) { 249 function PromiseResolved(x) {
adamk 2016/01/05 19:10:09 Same here, clarity. The two lines where this funct
Dan Ehrenberg 2016/01/06 03:20:55 Ditto.
250 %IncrementUseCounter(kPromiseAccept);
246 return %_Call(PromiseCast, this, x); 251 return %_Call(PromiseCast, this, x);
247 } 252 }
248 253
249 function PromiseRejected(r) { 254 function PromiseRejected(r) {
250 if (!IS_RECEIVER(this)) { 255 if (!IS_RECEIVER(this)) {
251 throw MakeTypeError(kCalledOnNonObject, PromiseRejected); 256 throw MakeTypeError(kCalledOnNonObject, PromiseRejected);
252 } 257 }
253 var promise; 258 var promise;
254 if (this === GlobalPromise) { 259 if (this === GlobalPromise) {
255 // Optimized case, avoid extra closure. 260 // Optimized case, avoid extra closure.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 // Mark this promise as having handler. 304 // Mark this promise as having handler.
300 SET_PRIVATE(this, promiseHasHandlerSymbol, true); 305 SET_PRIVATE(this, promiseHasHandlerSymbol, true);
301 if (DEBUG_IS_ACTIVE) { 306 if (DEBUG_IS_ACTIVE) {
302 %DebugPromiseEvent({ promise: deferred.promise, parentPromise: this }); 307 %DebugPromiseEvent({ promise: deferred.promise, parentPromise: this });
303 } 308 }
304 return deferred.promise; 309 return deferred.promise;
305 } 310 }
306 311
307 // Chain is left around for now as an alias for then 312 // Chain is left around for now as an alias for then
308 function PromiseChain(onResolve, onReject) { 313 function PromiseChain(onResolve, onReject) {
314 %IncrementUseCounter(kPromiseChain);
309 return %_Call(PromiseThen, this, onResolve, onReject); 315 return %_Call(PromiseThen, this, onResolve, onReject);
310 } 316 }
311 317
312 function PromiseCatch(onReject) { 318 function PromiseCatch(onReject) {
313 return this.then(UNDEFINED, onReject); 319 return this.then(UNDEFINED, onReject);
314 } 320 }
315 321
316 // Combinators. 322 // Combinators.
317 323
318 function PromiseCast(x) { 324 function PromiseCast(x) {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 [PromiseChain, PromiseDeferred, PromiseResolved].forEach( 449 [PromiseChain, PromiseDeferred, PromiseResolved].forEach(
444 fn => %FunctionRemovePrototype(fn)); 450 fn => %FunctionRemovePrototype(fn));
445 451
446 utils.Export(function(to) { 452 utils.Export(function(to) {
447 to.PromiseChain = PromiseChain; 453 to.PromiseChain = PromiseChain;
448 to.PromiseDeferred = PromiseDeferred; 454 to.PromiseDeferred = PromiseDeferred;
449 to.PromiseResolved = PromiseResolved; 455 to.PromiseResolved = PromiseResolved;
450 }); 456 });
451 457
452 }) 458 })
OLDNEW
« src/js/i18n.js ('K') | « src/js/i18n.js ('k') | src/runtime/runtime-i18n.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698