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

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: 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..130dc9fce6fdd1180549b00b172b332b77db7eba 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,13 +180,21 @@ WebInspector.TimelineJSProfileProcessor.generateJSFrameEvents = function(events)
*/
function extractStackTrace(e)
{
+ var recordTypes = WebInspector.TimelineModel.RecordType;
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)
+ if (!stackTrace) {
+ stackTrace = jsFramesStack.map(frameEvent => frameEvent.args["data"]).reverse();
+ if (eventData && stackTrace.length)
+ eventData["stackTrace"] = stackTrace;
+ }
+ // FIXME(alph): Sometimes there is an extra stack frame with anonymous function on top. Remove it.
+ if (stackTrace.length) {
+ var topFrame = stackTrace[0];
+ if (topFrame.functionName === "" && topFrame.url === "")
+ stackTrace.splice(0, 1);
caseq 2016/01/25 19:18:36 stackTrace.shift()? Also, consider moving into the
alph 2016/01/26 00:58:49 Acknowledged.
+ }
+ if (!stackTrace.length)
return;
if (filterNativeFunctions)
filterStackFrames(stackTrace);

Powered by Google App Engine
This is Rietveld 408576698