From e66c09e459ef969a3d309c894b00b366e8032e1a Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Wed, 21 Nov 2018 10:51:56 -0500 Subject: [PATCH] deps: cherry-pick 2987946 from upstream V8 Original commit message: Stop manual unescaping of script source data when preprocessing logs. It appears that the fields are already being unescaped elsewhere, perhaps by the JSON writer. So if we unescape when adding the source filename and contents, unescaping will happen again later and plain backslashes will be interpreted as escape codes. Bug: v8:6240 Change-Id: Ic66b9017ae685d6dd12944ee8d254991e26fbd32 Reviewed-on: https://chromium-review.googlesource.com/1186625 Reviewed-by: Jaroslav Sevcik Commit-Queue: Bret Sepulveda Cr-Commit-Position: refs/heads/master@{#55401} Refs: https://github.com/v8/v8/commit/29879461ceb4bc9b84b0ec38e4dd192fbf884dc2 PR-URL: https://github.com/nodejs/node/pull/24555 Fixes: https://github.com/nodejs/node/issues/20891 Reviewed-By: Richard Lau Reviewed-By: Bartosz Sosnowski --- common.gypi | 2 +- deps/v8/tools/profile.js | 27 ++------------------------- 2 files changed, 3 insertions(+), 26 deletions(-) diff --git a/common.gypi b/common.gypi index e73d215a982f72..a04c1df94b539f 100644 --- a/common.gypi +++ b/common.gypi @@ -30,7 +30,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.45', + 'v8_embedder_string': '-node.46', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/tools/profile.js b/deps/v8/tools/profile.js index cddadaaf53121a..74b4b3bf663f66 100644 --- a/deps/v8/tools/profile.js +++ b/deps/v8/tools/profile.js @@ -1002,33 +1002,10 @@ JsonProfile.prototype.addSourcePositions = function( }; }; -function unescapeString(s) { - s = s.split("\\"); - for (var i = 1; i < s.length; i++) { - if (s[i] === "") { - // Double backslash. - s[i] = "\\"; - } else if (i > 0 && s[i].startsWith("x")) { - // Escaped Ascii character. - s[i] = String.fromCharCode(parseInt(s[i].substring(1, 3), 16)) + - s[i].substring(3); - } else if (i > 0 && s[i].startsWith("u")) { - // Escaped unicode character. - s[i] = String.fromCharCode(parseInt(s[i].substring(1, 5), 16)) + - s[i].substring(5); - } else { - if (i > 0 && s[i - 1] !== "\\") { - printErr("Malformed source string"); - } - } - } - return s.join(""); -} - JsonProfile.prototype.addScriptSource = function(script, url, source) { this.scripts_[script] = { - name : unescapeString(url), - source : unescapeString(source) + name : url, + source : source }; };