diff --git a/browser/devtools/performance/modules/logic/tree-model.js b/browser/devtools/performance/modules/logic/tree-model.js index e3f6f9995865..1c3e2e326dc5 100644 --- a/browser/devtools/performance/modules/logic/tree-model.js +++ b/browser/devtools/performance/modules/logic/tree-model.js @@ -219,7 +219,8 @@ ThreadNode.prototype = { // If we shouldn't flatten the current frame into the previous one, advance a // level in the call tree. - if (!flattenRecursion || frameKey !== prevFrameKey) { + let shouldFlatten = flattenRecursion && frameKey === prevFrameKey; + if (!shouldFlatten) { calls = prevCalls; } @@ -233,7 +234,11 @@ ThreadNode.prototype = { sampleTime, stringTable); } } - frameNode.samples++; + + // Don't overcount flattened recursive frames. + if (!shouldFlatten) { + frameNode.samples++; + } prevFrameKey = frameKey; prevCalls = frameNode.calls;