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

Side by Side Diff: Source/devtools/front_end/timeline/TimelineFlameChart.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 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 _generateJSFrameEvents: function(events) 230 _generateJSFrameEvents: function(events)
231 { 231 {
232 function equalFrames(frame1, frame2) 232 function equalFrames(frame1, frame2)
233 { 233 {
234 return frame1.scriptId === frame2.scriptId && frame1.functionName == = frame2.functionName; 234 return frame1.scriptId === frame2.scriptId && frame1.functionName == = frame2.functionName;
235 } 235 }
236 function eventEndTime(e) 236 function eventEndTime(e)
237 { 237 {
238 return e.endTime || e.startTime + WebInspector.TimelineFlameChartDat aProvider.InstantEventVisibleDurationMs; 238 return e.endTime || e.startTime + WebInspector.TimelineFlameChartDat aProvider.InstantEventVisibleDurationMs;
239 } 239 }
240 function isJSInvocationEvent(e)
241 {
242 switch (e.name) {
243 case WebInspector.TracingTimelineModel.RecordType.FunctionCall:
244 case WebInspector.TracingTimelineModel.RecordType.EvaluateScript:
245 return true;
246 }
247 return false;
248 }
240 var jsFrameEvents = []; 249 var jsFrameEvents = [];
241 var stackTraceOpenEvents = []; 250 var stackTraceOpenEvents = [];
251 var currentJSInvocationEndTime = 0;
242 var coalesceThresholdMs = WebInspector.TimelineFlameChartDataProvider.JS FrameCoalsceThresholdMs; 252 var coalesceThresholdMs = WebInspector.TimelineFlameChartDataProvider.JS FrameCoalsceThresholdMs;
243 for (var i = 0; i < events.length; ++i) { 253 for (var i = 0; i < events.length; ++i) {
244 var e = events[i]; 254 var e = events[i];
245 if (!e.stackTrace || !this._isVisible(e)) 255 if (e.startTime >= currentJSInvocationEndTime) {
256 stackTraceOpenEvents.length = 0;
257 currentJSInvocationEndTime = 0;
258 }
259 if (isJSInvocationEvent(e))
260 currentJSInvocationEndTime = e.endTime;
261 if (!currentJSInvocationEndTime)
262 continue;
263 if (!e.stackTrace)
246 continue; 264 continue;
247 while (stackTraceOpenEvents.length && eventEndTime(stackTraceOpenEve nts.peekLast()) + coalesceThresholdMs <= e.startTime) 265 while (stackTraceOpenEvents.length && eventEndTime(stackTraceOpenEve nts.peekLast()) + coalesceThresholdMs <= e.startTime)
248 stackTraceOpenEvents.pop(); 266 stackTraceOpenEvents.pop();
249 var numFrames = e.stackTrace.length; 267 var numFrames = e.stackTrace.length;
250 for (var j = 0; j < numFrames && j < stackTraceOpenEvents.length; ++ j) { 268 for (var j = 0; j < numFrames && j < stackTraceOpenEvents.length; ++ j) {
251 var frame = e.stackTrace[numFrames - 1 - j]; 269 var frame = e.stackTrace[numFrames - 1 - j];
252 if (!equalFrames(frame, stackTraceOpenEvents[j].args.data)) 270 if (!equalFrames(frame, stackTraceOpenEvents[j].args.data))
253 break; 271 break;
254 stackTraceOpenEvents[j].endTime = Math.max(stackTraceOpenEvents[ j].endTime, eventEndTime(e)); 272 stackTraceOpenEvents[j].endTime = Math.max(stackTraceOpenEvents[ j].endTime, eventEndTime(e));
255 stackTraceOpenEvents[j].duration = stackTraceOpenEvents[j].endTi me - stackTraceOpenEvents[j].startTime; 273 stackTraceOpenEvents[j].duration = stackTraceOpenEvents[j].endTi me - stackTraceOpenEvents[j].startTime;
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 /** 774 /**
757 * @constructor 775 * @constructor
758 * @param {!WebInspector.TimelineSelection} selection 776 * @param {!WebInspector.TimelineSelection} selection
759 * @param {number} entryIndex 777 * @param {number} entryIndex
760 */ 778 */
761 WebInspector.TimelineFlameChart.Selection = function(selection, entryIndex) 779 WebInspector.TimelineFlameChart.Selection = function(selection, entryIndex)
762 { 780 {
763 this.timelineSelection = selection; 781 this.timelineSelection = selection;
764 this.entryIndex = entryIndex; 782 this.entryIndex = entryIndex;
765 } 783 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/sdk/CPUProfileDataModel.js ('k') | Source/devtools/front_end/timeline/TimelineJSProfile.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698