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..c864394d3d486b5a717f7f2bf83bd3766f6be580 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,15 @@ 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; |
+ } |
+ if (!stackTrace.length) |
return; |
if (filterNativeFunctions) |
filterStackFrames(stackTrace); |