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

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js

Issue 1748993002: DevTools: Initial implementation of line-level CPU profile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove JSSF to sdk dependency Created 4 years, 10 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
Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js
index ea1e23a3123759c3492dfe581a30c41828784ed1..fa1c1a3063afb9b567a3a8cda7f76eedf81609b6 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js
@@ -6,15 +6,12 @@
WebInspector.TimelineJSProfileProcessor = { };
/**
- * @param {!ProfilerAgent.CPUProfile} jsProfile
+ * @param {!WebInspector.CPUProfileDataModel} jsProfileModel
* @param {!WebInspector.TracingModel.Thread} thread
* @return {!Array<!WebInspector.TracingModel.Event>}
*/
-WebInspector.TimelineJSProfileProcessor.generateTracingEventsFromCpuProfile = function(jsProfile, thread)
+WebInspector.TimelineJSProfileProcessor.generateTracingEventsFromCpuProfile = function(jsProfileModel, thread)
{
- if (!jsProfile.samples)
- return [];
- var jsProfileModel = new WebInspector.CPUProfileDataModel(jsProfile);
var idleNode = jsProfileModel.idleNode;
var programNode = jsProfileModel.programNode;
var gcNode = jsProfileModel.gcNode;
@@ -494,3 +491,48 @@ WebInspector.TimelineJSProfileProcessor.processRawV8Samples = function(events)
return samples;
}
+
+/**
+ * @param {!WebInspector.CPUProfileDataModel} profile
+ */
+WebInspector.TimelineJSProfileProcessor.buildLineLevelProfiles = function(profile)
+{
+ if (!Runtime.experiments.isEnabled("lineLevelProfile"))
+ return;
+ var nodesToGo = [profile.profileHead];
+ var sampleDuration = (profile.profileEndTime - profile.profileStartTime) / profile.totalHitCount;
+ /** @type {!Map<string, !Map<number,number>>} */
+ var files = new Map();
+ while (nodesToGo.length) {
+ var nodes = nodesToGo.pop().children;
+ for (var i = 0; i < nodes.length; ++i) {
+ var node = nodes[i];
+ if (!node.url) continue;
lushnikov 2016/03/02 03:19:13 new line
alph 2016/03/02 18:34:34 Done.
+ var fileInfo = files.get(node.url);
+ if (!fileInfo) {
+ fileInfo = new Map();
+ files.set(node.url, fileInfo);
+ }
+ for (var j = 0; j < node.positionTicks.length; ++j) {
+ var lineInfo = node.positionTicks[j];
+ var line = lineInfo.line;
+ var time = lineInfo.ticks * sampleDuration;
+ fileInfo.set(line, (fileInfo.get(line) || 0) + time);
+ }
+ nodesToGo.push(node);
+ }
+ }
+ for (var fileInfo of files) {
+ var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(fileInfo[0]);
+ if (!uiSourceCode)
+ continue;
+ uiSourceCode.setProfileInfo(fileInfo[1]);
+ }
+}
+
+WebInspector.TimelineJSProfileProcessor.resetLineLevelProfiles = function()
+{
+ if (!Runtime.experiments.isEnabled("lineLevelProfile"))
+ return;
+ WebInspector.workspace.uiSourceCodes().forEach(uiSourceCode => uiSourceCode.setProfileInfo(null));
+}

Powered by Google App Engine
This is Rietveld 408576698