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

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

Issue 1624783002: DevTools: Switch to using fast stack iterator to collect stacks during timeline recording. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressing caseq@ comments Created 4 years, 11 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 cf1907a68f7db801e798a5170f9a587e485d6cda..2936d87fb91d27e69d7bfac5471ccaa41eafe542 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineJSProfile.js
@@ -154,6 +154,8 @@ WebInspector.TimelineJSProfileProcessor.generateJSFrameEvents = function(events)
depth = jsFramesStack.length;
}
var minFrameDurationMs = currentSamplingIntervalMs / 2;
+ for (var k = 0; k < depth; ++k)
+ jsFramesStack[k].setEndTime(time);
for (var k = depth; k < jsFramesStack.length; ++k)
jsFramesStack[k].setEndTime(Math.min(eventEndTime(jsFramesStack[k]) + minFrameDurationMs, time));
jsFramesStack.length = depth;
@@ -178,14 +180,14 @@ WebInspector.TimelineJSProfileProcessor.generateJSFrameEvents = function(events)
*/
function extractStackTrace(e)
{
- var eventData = e.args["data"] || e.args["beginData"];
- var stackTrace = eventData && eventData["stackTrace"];
var recordTypes = WebInspector.TimelineModel.RecordType;
- // GC events do not hold call stack, so make a copy of the current stack.
- if (e.name === recordTypes.GCEvent || e.name === recordTypes.MajorGC || e.name === recordTypes.MinorGC)
- stackTrace = jsFramesStack.map(function(frameEvent) { return frameEvent.args["data"]; }).reverse();
- if (!stackTrace)
- return;
+ var stackTrace;
pfeldman 2016/01/27 23:42:27 Annotate the type please.
alph 2016/01/27 23:51:20 Done.
+ if (e.name === recordTypes.JSSample) {
+ var eventData = e.args["data"] || e.args["beginData"];
+ stackTrace = eventData && eventData["stackTrace"];
+ } else {
+ stackTrace = jsFramesStack.map(frameEvent => frameEvent.args["data"]).reverse();
+ }
if (filterNativeFunctions)
filterStackFrames(stackTrace);
var endTime = eventEndTime(e);
@@ -202,7 +204,7 @@ WebInspector.TimelineJSProfileProcessor.generateJSFrameEvents = function(events)
truncateJSStack(i, e.startTime);
for (; i < numFrames; ++i) {
var frame = stackTrace[numFrames - 1 - i];
- var jsFrameEvent = new WebInspector.TracingModel.Event(WebInspector.TracingModel.DevToolsTimelineEventCategory, WebInspector.TimelineModel.RecordType.JSFrame,
+ var jsFrameEvent = new WebInspector.TracingModel.Event(WebInspector.TracingModel.DevToolsTimelineEventCategory, recordTypes.JSFrame,
WebInspector.TracingModel.Phase.Complete, e.startTime, e.thread);
jsFrameEvent.ordinal = e.ordinal;
jsFrameEvent.addArgs({ data: frame });

Powered by Google App Engine
This is Rietveld 408576698