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

Unified Diff: Source/devtools/front_end/timeline/TimelineFlameChart.js

Issue 405563003: DevTools: Do not add stack traces twice on nested events in timeline (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addressing comment, Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/timeline/TimelineFlameChart.js
diff --git a/Source/devtools/front_end/timeline/TimelineFlameChart.js b/Source/devtools/front_end/timeline/TimelineFlameChart.js
index 3f03e83a35a66ed0c370adf13d4f88f0b7606492..6b2a31a52c32be9e203bd778cab35f071dbda1bc 100644
--- a/Source/devtools/front_end/timeline/TimelineFlameChart.js
+++ b/Source/devtools/front_end/timeline/TimelineFlameChart.js
@@ -163,9 +163,11 @@ WebInspector.TracingBasedTimelineFlameChartDataProvider.prototype = {
{
var maxStackDepth = 0;
var openEvents = [];
- var heights = [];
+ var levels = [];
+ var jsHeights = [];
var headerAppended = false;
var level = 0;
+ var jsStackHeight = 0;
for (var i = 0; i < events.length; ++i) {
var e = events[i];
if (!e.endTime && e.phase !== WebInspector.TracingModel.Phase.Instant)
@@ -174,19 +176,22 @@ WebInspector.TracingBasedTimelineFlameChartDataProvider.prototype = {
continue;
while (openEvents.length && openEvents.peekLast().endTime <= e.startTime) {
openEvents.pop();
- level = heights.pop();
+ level = levels.pop();
+ jsStackHeight = jsHeights.pop();
}
if (!headerAppended) {
this._appendHeaderRecord(headerName, this._currentLevel);
++level;
headerAppended = true;
}
- var height = this._processEvent(e, this._currentLevel + level);
+ var jsHeightDelta = this._processEvent(e, this._currentLevel + level, jsStackHeight);
if (e.endTime) {
openEvents.push(e);
- heights.push(level)
+ jsHeights.push(jsStackHeight);
+ levels.push(level);
}
- level += height;
+ level += 1 + jsHeightDelta;
+ jsStackHeight += jsHeightDelta;
maxStackDepth = Math.max(maxStackDepth, level);
}
this._currentLevel += maxStackDepth;
@@ -194,14 +199,15 @@ WebInspector.TracingBasedTimelineFlameChartDataProvider.prototype = {
/**
* @param {!WebInspector.TracingModel.Event} event
- * @param {number} baseLevel
+ * @param {number} level
+ * @param {number} jsStackHeight
* @return {number}
*/
- _processEvent: function(event, baseLevel)
+ _processEvent: function(event, level, jsStackHeight)
{
- var level = baseLevel;
+ var jsHeightDelta = 0;
if (event.stackTrace && WebInspector.experimentsSettings.timelineJSCPUProfile.isEnabled()) {
- for (var i = event.stackTrace.length - 1; i >= 0; --i) {
+ for (var i = event.stackTrace.length - 1; i >= jsStackHeight; --i) {
var payload = /** @type {!WebInspector.TracingModel.EventPayload} */ ({
ph: WebInspector.TracingModel.Phase.Complete,
cat: WebInspector.TracingModel.DevToolsMetadataEventCategory,
@@ -215,9 +221,10 @@ WebInspector.TracingBasedTimelineFlameChartDataProvider.prototype = {
var jsFrameEvent = new WebInspector.TracingModel.Event(payload, 0, event.thread);
this._appendEvent(jsFrameEvent, level++);
}
+ jsHeightDelta = event.stackTrace.length - jsStackHeight;
}
- this._appendEvent(event, level++)
- return level - baseLevel;
+ this._appendEvent(event, level)
+ return jsHeightDelta;
},
/**
« 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