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

Side by Side Diff: Source/devtools/front_end/timeline/TimelineJSProfile.js

Issue 431273005: DevTools: Collect JS samples when recording timeline (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebaseline Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium 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 5
6 WebInspector.TimelineJSProfileProcessor = { }; 6 WebInspector.TimelineJSProfileProcessor = { };
7 7
8 /** 8 /**
9 * @param {!WebInspector.TimelineModelImpl} timelineModel 9 * @param {!WebInspector.TimelineModelImpl} timelineModel
10 * @param {!ProfilerAgent.CPUProfile} jsProfile 10 * @param {!ProfilerAgent.CPUProfile} jsProfile
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 record.children().push(child); 83 record.children().push(child);
84 } 84 }
85 } 85 }
86 86
87 jsProfileModel.forEachFrame(onOpenFrame, onCloseFrame, recordStartTime, recordEndTime); 87 jsProfileModel.forEachFrame(onOpenFrame, onCloseFrame, recordStartTime, recordEndTime);
88 putOriginalChildrenUpToTime(recordEndTime); 88 putOriginalChildrenUpToTime(recordEndTime);
89 } 89 }
90 90
91 timelineModel.forAllRecords(processRecord); 91 timelineModel.forAllRecords(processRecord);
92 } 92 }
93
94 /**
95 * @param {!WebInspector.TracingTimelineModel} timelineModel
96 * @param {!ProfilerAgent.CPUProfile} jsProfile
97 * @return {!Array.<!WebInspector.TracingModel.Event>}
98 */
99 WebInspector.TimelineJSProfileProcessor.generateTracingEventsFromCpuProfile = fu nction(timelineModel, jsProfile)
100 {
101 if (!jsProfile.samples)
102 return [];
103 var jsProfileModel = new WebInspector.CPUProfileDataModel(jsProfile);
104 var idleNode = jsProfileModel.idleNode;
105 var programNode = jsProfileModel.programNode;
106 var gcNode = jsProfileModel.gcNode;
107 var samples = jsProfileModel.samples;
108 var timestamps = jsProfileModel.timestamps;
109 var jsEvents = [];
110 var mainThread = timelineModel.mainThreadEvents()[0].thread;
111 for (var i = 0; i < samples.length; ++i) {
112 var node = jsProfileModel.nodeByIndex(i);
113 if (node === programNode || node === gcNode || node === idleNode)
114 continue;
115 var stackTrace = node._stackTraceArray;
116 if (!stackTrace) {
117 stackTrace = /** @type {!ConsoleAgent.StackTrace} */ (new Array(node .depth + 1));
118 node._stackTraceArray = stackTrace;
119 for (var j = 0; node.parent; node = node.parent)
120 stackTrace[j++] = /** @type {!ConsoleAgent.CallFrame} */ (node);
121 }
122 var payload = /** @type {!WebInspector.TracingModel.EventPayload} */ ({
123 ph: WebInspector.TracingModel.Phase.Instant,
124 cat: WebInspector.TracingModel.DevToolsMetadataEventCategory,
125 name: WebInspector.TracingTimelineModel.RecordType.JSSample,
126 ts: timestamps[i] * 1000,
127 args: { }
128 });
129 var jsEvent = new WebInspector.TracingModel.Event(payload, 0, mainThread );
130 jsEvent.stackTrace = stackTrace;
131 jsEvents.push(jsEvent);
132 }
133 return jsEvents;
134 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelineFlameChart.js ('k') | Source/devtools/front_end/timeline/TracingTimelineModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698