From 4fb5501a3d5de06fb06e7866a7674713bf845113 Mon Sep 17 00:00:00 2001 From: Khairul Azhar Kasmiran Date: Fri, 6 Jan 2023 20:33:58 +0800 Subject: [PATCH 1/2] Chrome importer: Add 1 to line numbers of cpu profile --- src/profile-logic/import/chrome.js | 5 + .../profile-conversion.test.js.snap | 208 +++++++++--------- 2 files changed, 109 insertions(+), 104 deletions(-) diff --git a/src/profile-logic/import/chrome.js b/src/profile-logic/import/chrome.js index f9bcc6e735..2aebec6e77 100644 --- a/src/profile-logic/import/chrome.js +++ b/src/profile-logic/import/chrome.js @@ -517,6 +517,7 @@ async function processTracingEvents( threadInfo; let profileChunks = []; + let lineNumberAdjustment = 0; if (profileEvent.name === 'Profile') { threadInfo.lastSeenTime = (profileEvent.args.data.startTime: any) / 1000; const { id, pid } = profileEvent; @@ -529,6 +530,7 @@ async function processTracingEvents( threadInfo.lastSeenTime = (profileEvent.args.data.cpuProfile.startTime: any) / 1000; profileChunks = [profileEvent]; + lineNumberAdjustment = +1; } for (const profileChunk of profileChunks) { @@ -571,6 +573,9 @@ async function processTracingEvents( if (lineNumber === -1) { lineNumber = undefined; } + if (lineNumber !== undefined) { + lineNumber += lineNumberAdjustment; + } if (columnNumber === -1) { columnNumber = undefined; } diff --git a/src/test/unit/__snapshots__/profile-conversion.test.js.snap b/src/test/unit/__snapshots__/profile-conversion.test.js.snap index 942d87f59a..be24115ae1 100644 --- a/src/test/unit/__snapshots__/profile-conversion.test.js.snap +++ b/src/test/unit/__snapshots__/profile-conversion.test.js.snap @@ -444467,50 +444467,50 @@ Object { "line": Array [ null, null, - 3338, + 3339, null, null, null, null, null, - 75674, - 75624, - 65, + 75675, + 75625, + 66, null, - 70, - 73232, - 73084, - 72908, - 74574, - 74061, - 74281, + 71, + 73233, + 73085, + 72909, + 74575, + 74062, + 74282, null, null, null, - 27197, - 27498, + 27198, + 27499, null, - 26821, - 27773, - 28117, + 26822, + 27774, + 28118, null, null, null, - 137, + 138, null, null, - 32, - 73232, - 73084, - 74281, - 74613, - 13073, - 79762, - 74085, - 73822, + 33, + 73233, + 73085, + 74282, + 74614, + 13074, + 79763, + 74086, + 73823, null, - 13073, - 13382, + 13074, + 13383, null, ], "nativeSymbol": Array [ @@ -444795,45 +444795,45 @@ Object { "lineNumber": Array [ null, null, - 3338, + 3339, null, null, null, null, - 75674, - 75624, - 65, + 75675, + 75625, + 66, null, - 70, - 73232, - 73084, - 72908, - 74574, - 74061, - 74281, + 71, + 73233, + 73085, + 72909, + 74575, + 74062, + 74282, null, null, null, null, - 27197, - 27498, + 27198, + 27499, null, - 26821, - 27773, - 28117, + 26822, + 27774, + 28118, null, null, null, - 137, + 138, null, null, - 32, - 74613, - 13073, - 79762, - 74085, - 73822, - 13382, + 33, + 74614, + 13074, + 79763, + 74086, + 73823, + 13383, ], "name": Array [ 0, @@ -447500,50 +447500,50 @@ Object { "line": Array [ null, null, - 3338, + 3339, null, null, null, null, null, - 75674, - 75624, - 65, + 75675, + 75625, + 66, null, - 70, - 73232, - 73084, - 72908, - 74574, - 74061, - 74281, + 71, + 73233, + 73085, + 72909, + 74575, + 74062, + 74282, null, null, null, - 27197, - 27498, + 27198, + 27499, null, - 26821, - 27773, - 28117, + 26822, + 27774, + 28118, null, null, null, - 137, + 138, null, null, - 32, - 73232, - 73084, - 74281, - 74613, - 13073, - 79762, - 74085, - 73822, + 33, + 73233, + 73085, + 74282, + 74614, + 13074, + 79763, + 74086, + 73823, null, - 13073, - 13382, + 13074, + 13383, null, ], "nativeSymbol": Array [ @@ -447828,45 +447828,45 @@ Object { "lineNumber": Array [ null, null, - 3338, + 3339, null, null, null, null, - 75674, - 75624, - 65, + 75675, + 75625, + 66, null, - 70, - 73232, - 73084, - 72908, - 74574, - 74061, - 74281, + 71, + 73233, + 73085, + 72909, + 74575, + 74062, + 74282, null, null, null, null, - 27197, - 27498, + 27198, + 27499, null, - 26821, - 27773, - 28117, + 26822, + 27774, + 28118, null, null, null, - 137, + 138, null, null, - 32, - 74613, - 13073, - 79762, - 74085, - 73822, - 13382, + 33, + 74614, + 13074, + 79763, + 74086, + 73823, + 13383, ], "name": Array [ 0, From 98785ff43d48e7c4e6ff1ae694ef071c50983470 Mon Sep 17 00:00:00 2001 From: Julien Wajsberg Date: Mon, 9 Jan 2023 13:55:27 +0100 Subject: [PATCH 2/2] Add 1 to line and column numbers for all v8-based profiles --- src/profile-logic/import/chrome.js | 16 +- .../profile-conversion.test.js.snap | 288 +++++++++--------- 2 files changed, 155 insertions(+), 149 deletions(-) diff --git a/src/profile-logic/import/chrome.js b/src/profile-logic/import/chrome.js index 2aebec6e77..92b874ae31 100644 --- a/src/profile-logic/import/chrome.js +++ b/src/profile-logic/import/chrome.js @@ -517,7 +517,6 @@ async function processTracingEvents( threadInfo; let profileChunks = []; - let lineNumberAdjustment = 0; if (profileEvent.name === 'Profile') { threadInfo.lastSeenTime = (profileEvent.args.data.startTime: any) / 1000; const { id, pid } = profileEvent; @@ -530,7 +529,6 @@ async function processTracingEvents( threadInfo.lastSeenTime = (profileEvent.args.data.cpuProfile.startTime: any) / 1000; profileChunks = [profileEvent]; - lineNumberAdjustment = +1; } for (const profileChunk of profileChunks) { @@ -573,12 +571,20 @@ async function processTracingEvents( if (lineNumber === -1) { lineNumber = undefined; } - if (lineNumber !== undefined) { - lineNumber += lineNumberAdjustment; - } + if (columnNumber === -1) { columnNumber = undefined; } + + // Line and column number are zero-based in chrome profiles, but + // 1-based in the firefox profiler. + if (lineNumber !== undefined) { + lineNumber++; + } + if (columnNumber !== undefined) { + columnNumber++; + } + if (url === '') { url = undefined; } diff --git a/src/test/unit/__snapshots__/profile-conversion.test.js.snap b/src/test/unit/__snapshots__/profile-conversion.test.js.snap index be24115ae1..9b27ebba3a 100644 --- a/src/test/unit/__snapshots__/profile-conversion.test.js.snap +++ b/src/test/unit/__snapshots__/profile-conversion.test.js.snap @@ -402777,14 +402777,14 @@ Object { ], "column": Array [ null, - 1757, + 1758, null, null, - 1363, - 1783, - 3420, - 463, - 1783, + 1364, + 1784, + 3421, + 464, + 1784, null, null, null, @@ -402793,14 +402793,14 @@ Object { null, null, null, - 4543, - 1326, + 4544, + 1327, null, - 29, + 30, null, - 5197, - 5375, - 296, + 5198, + 5376, + 297, null, ], "func": Array [ @@ -402891,14 +402891,14 @@ Object { "length": 26, "line": Array [ null, - 1, + 2, null, null, - 1, - 25, - 25, - 1, - 25, + 2, + 26, + 26, + 2, + 26, null, null, null, @@ -402907,14 +402907,14 @@ Object { null, null, null, - 25, - 28, + 26, + 29, null, - 1, + 2, null, - 25, - 25, - 1, + 26, + 26, + 2, null, ], "nativeSymbol": Array [ @@ -403005,13 +403005,13 @@ Object { "funcTable": Object { "columnNumber": Array [ null, - 1757, + 1758, null, null, - 1363, - 1783, - 3420, - 463, + 1364, + 1784, + 3421, + 464, null, null, null, @@ -403020,14 +403020,14 @@ Object { null, null, null, - 4543, - 1326, + 4544, + 1327, null, - 29, + 30, null, - 5197, - 5375, - 296, + 5198, + 5376, + 297, null, ], "fileName": Array [ @@ -403087,13 +403087,13 @@ Object { "length": 25, "lineNumber": Array [ null, - 1, + 2, null, null, - 1, - 25, - 25, - 1, + 2, + 26, + 26, + 2, null, null, null, @@ -403102,14 +403102,14 @@ Object { null, null, null, - 25, - 28, + 26, + 29, null, - 1, + 2, null, - 25, - 25, - 1, + 26, + 26, + 2, null, ], "name": Array [ @@ -444269,50 +444269,50 @@ Object { "column": Array [ null, null, - 32, + 33, null, null, null, null, null, - 22, - 22, - 16, + 23, + 23, + 17, null, - 34, - 22, - 20, - 20, - 26, - 52, - 29, + 35, + 23, + 21, + 21, + 27, + 53, + 30, null, null, null, + 26, 25, - 24, null, - 37, - 21, - 32, + 38, + 22, + 33, null, null, null, - 16, + 17, null, null, - 16, - 22, - 20, - 29, - 18, + 17, + 23, + 21, 30, - 18, - 74, - 24, + 19, + 31, + 19, + 75, + 25, null, - 30, - 30, + 31, + 31, null, ], "func": Array [ @@ -444665,45 +444665,45 @@ Object { "columnNumber": Array [ null, null, - 32, + 33, null, null, null, null, - 22, - 22, - 16, + 23, + 23, + 17, null, - 34, - 22, - 20, - 20, - 26, - 52, - 29, + 35, + 23, + 21, + 21, + 27, + 53, + 30, null, null, null, null, + 26, 25, - 24, null, - 37, - 21, - 32, + 38, + 22, + 33, null, null, null, - 16, + 17, null, null, - 16, - 18, - 30, - 18, - 74, - 24, - 30, + 17, + 19, + 31, + 19, + 75, + 25, + 31, ], "fileName": Array [ null, @@ -447302,50 +447302,50 @@ Object { "column": Array [ null, null, - 32, + 33, null, null, null, null, null, - 22, - 22, - 16, + 23, + 23, + 17, null, - 34, - 22, - 20, - 20, - 26, - 52, - 29, + 35, + 23, + 21, + 21, + 27, + 53, + 30, null, null, null, + 26, 25, - 24, null, - 37, - 21, - 32, + 38, + 22, + 33, null, null, null, - 16, + 17, null, null, - 16, - 22, - 20, - 29, - 18, + 17, + 23, + 21, 30, - 18, - 74, - 24, + 19, + 31, + 19, + 75, + 25, null, - 30, - 30, + 31, + 31, null, ], "func": Array [ @@ -447698,45 +447698,45 @@ Object { "columnNumber": Array [ null, null, - 32, + 33, null, null, null, null, - 22, - 22, - 16, + 23, + 23, + 17, null, - 34, - 22, - 20, - 20, - 26, - 52, - 29, + 35, + 23, + 21, + 21, + 27, + 53, + 30, null, null, null, null, + 26, 25, - 24, null, - 37, - 21, - 32, + 38, + 22, + 33, null, null, null, - 16, + 17, null, null, - 16, - 18, - 30, - 18, - 74, - 24, - 30, + 17, + 19, + 31, + 19, + 75, + 25, + 31, ], "fileName": Array [ null,