OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 * @extends {WebInspector.ProfileFlameChartDataProvider} | 359 * @extends {WebInspector.ProfileFlameChartDataProvider} |
360 * @param {!WebInspector.CPUProfileDataModel} cpuProfile | 360 * @param {!WebInspector.CPUProfileDataModel} cpuProfile |
361 * @param {?WebInspector.Target} target | 361 * @param {?WebInspector.Target} target |
362 */ | 362 */ |
363 WebInspector.CPUFlameChartDataProvider = function(cpuProfile, target) | 363 WebInspector.CPUFlameChartDataProvider = function(cpuProfile, target) |
364 { | 364 { |
365 WebInspector.ProfileFlameChartDataProvider.call(this, target); | 365 WebInspector.ProfileFlameChartDataProvider.call(this, target); |
366 this._cpuProfile = cpuProfile; | 366 this._cpuProfile = cpuProfile; |
367 }; | 367 }; |
368 | 368 |
| 369 /** |
| 370 * @constructor |
| 371 * @param {number} depth |
| 372 * @param {number} duration |
| 373 * @param {number} startTime |
| 374 * @param {number} selfTime |
| 375 * @param {!WebInspector.CPUProfileNode} node |
| 376 */ |
| 377 WebInspector.CPUFlameChartDataProvider.ChartEntry = function(depth, duration, st
artTime, selfTime, node) |
| 378 { |
| 379 this.depth = depth; |
| 380 this.duration = duration; |
| 381 this.startTime = startTime; |
| 382 this.selfTime = selfTime; |
| 383 this.node = node; |
| 384 }; |
| 385 |
369 WebInspector.CPUFlameChartDataProvider.prototype = { | 386 WebInspector.CPUFlameChartDataProvider.prototype = { |
370 /** | 387 /** |
371 * @override | 388 * @override |
372 * @return {!WebInspector.FlameChart.TimelineData} | 389 * @return {!WebInspector.FlameChart.TimelineData} |
373 */ | 390 */ |
374 _calculateTimelineData: function() | 391 _calculateTimelineData: function() |
375 { | 392 { |
376 /** | 393 /** @type {!Array.<?WebInspector.CPUFlameChartDataProvider.ChartEntry>}
*/ |
377 * @constructor | |
378 * @param {number} depth | |
379 * @param {number} duration | |
380 * @param {number} startTime | |
381 * @param {number} selfTime | |
382 * @param {!WebInspector.CPUProfileNode} node | |
383 */ | |
384 function ChartEntry(depth, duration, startTime, selfTime, node) | |
385 { | |
386 this.depth = depth; | |
387 this.duration = duration; | |
388 this.startTime = startTime; | |
389 this.selfTime = selfTime; | |
390 this.node = node; | |
391 } | |
392 | |
393 /** @type {!Array.<?ChartEntry>} */ | |
394 var entries = []; | 394 var entries = []; |
395 /** @type {!Array.<number>} */ | 395 /** @type {!Array.<number>} */ |
396 var stack = []; | 396 var stack = []; |
397 var maxDepth = 5; | 397 var maxDepth = 5; |
398 | 398 |
399 function onOpenFrame() | 399 function onOpenFrame() |
400 { | 400 { |
401 stack.push(entries.length); | 401 stack.push(entries.length); |
402 // Reserve space for the entry, as they have to be ordered by startT
ime. | 402 // Reserve space for the entry, as they have to be ordered by startT
ime. |
403 // The entry itself will be put there in onCloseFrame. | 403 // The entry itself will be put there in onCloseFrame. |
404 entries.push(null); | 404 entries.push(null); |
405 } | 405 } |
406 /** | 406 /** |
407 * @param {number} depth | 407 * @param {number} depth |
408 * @param {!WebInspector.CPUProfileNode} node | 408 * @param {!WebInspector.CPUProfileNode} node |
409 * @param {number} startTime | 409 * @param {number} startTime |
410 * @param {number} totalTime | 410 * @param {number} totalTime |
411 * @param {number} selfTime | 411 * @param {number} selfTime |
412 */ | 412 */ |
413 function onCloseFrame(depth, node, startTime, totalTime, selfTime) | 413 function onCloseFrame(depth, node, startTime, totalTime, selfTime) |
414 { | 414 { |
415 var index = stack.pop(); | 415 var index = stack.pop(); |
416 entries[index] = new ChartEntry(depth, totalTime, startTime, selfTim
e, node); | 416 entries[index] = new WebInspector.CPUFlameChartDataProvider.ChartEnt
ry(depth, totalTime, startTime, selfTime, node); |
417 maxDepth = Math.max(maxDepth, depth); | 417 maxDepth = Math.max(maxDepth, depth); |
418 } | 418 } |
419 this._cpuProfile.forEachFrame(onOpenFrame, onCloseFrame); | 419 this._cpuProfile.forEachFrame(onOpenFrame, onCloseFrame); |
420 | 420 |
421 /** @type {!Array<!WebInspector.CPUProfileNode>} */ | 421 /** @type {!Array<!WebInspector.CPUProfileNode>} */ |
422 var entryNodes = new Array(entries.length); | 422 var entryNodes = new Array(entries.length); |
423 var entryLevels = new Uint16Array(entries.length); | 423 var entryLevels = new Uint16Array(entries.length); |
424 var entryTotalTimes = new Float32Array(entries.length); | 424 var entryTotalTimes = new Float32Array(entries.length); |
425 var entrySelfTimes = new Float32Array(entries.length); | 425 var entrySelfTimes = new Float32Array(entries.length); |
426 var entryStartTimes = new Float64Array(entries.length); | 426 var entryStartTimes = new Float64Array(entries.length); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 pushEntryInfoRow(WebInspector.UIString("Aggregated self time"), Number.s
econdsToString(node.self / 1000, true)); | 493 pushEntryInfoRow(WebInspector.UIString("Aggregated self time"), Number.s
econdsToString(node.self / 1000, true)); |
494 pushEntryInfoRow(WebInspector.UIString("Aggregated total time"), Number.
secondsToString(node.total / 1000, true)); | 494 pushEntryInfoRow(WebInspector.UIString("Aggregated total time"), Number.
secondsToString(node.total / 1000, true)); |
495 if (node.deoptReason) | 495 if (node.deoptReason) |
496 pushEntryInfoRow(WebInspector.UIString("Not optimized"), node.deoptR
eason); | 496 pushEntryInfoRow(WebInspector.UIString("Not optimized"), node.deoptR
eason); |
497 | 497 |
498 return WebInspector.ProfileView.buildPopoverTable(entryInfo); | 498 return WebInspector.ProfileView.buildPopoverTable(entryInfo); |
499 }, | 499 }, |
500 | 500 |
501 __proto__: WebInspector.ProfileFlameChartDataProvider.prototype | 501 __proto__: WebInspector.ProfileFlameChartDataProvider.prototype |
502 }; | 502 }; |
OLD | NEW |