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

Unified Diff: Source/devtools/front_end/timeline/TimelineJSProfile.js

Issue 1204473005: DevTools: Tweak v8 code objects name parsing. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 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
« no previous file with comments | « Source/devtools/front_end/common/ParsedURL.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/timeline/TimelineJSProfile.js
diff --git a/Source/devtools/front_end/timeline/TimelineJSProfile.js b/Source/devtools/front_end/timeline/TimelineJSProfile.js
index c49f7f5d7619d555c980bd1eba433e22fd96af48..4a48943432d154b566943a56e180fb61e38639d8 100644
--- a/Source/devtools/front_end/timeline/TimelineJSProfile.js
+++ b/Source/devtools/front_end/timeline/TimelineJSProfile.js
@@ -312,27 +312,48 @@ WebInspector.TimelineJSProfileProcessor.CodeMap.prototype = {
*/
WebInspector.TimelineJSProfileProcessor.processRawV8Samples = function(events)
{
- var unknownFrame = {
- functionName: "(unknown)",
- url: "",
- scriptId: "0",
- lineNumber: 0,
- columnNumber: 0
- };
+ var missingAddesses = new Set();
+
+ /**
+ * @param {string} functionName
+ * @param {string=} url
+ * @param {string=} scriptId
+ * @param {number=} line
+ * @param {number=} column
+ * @return {!ConsoleAgent.CallFrame}
+ */
+ function createFrame(functionName, url, scriptId, line, column)
+ {
+ return /** @type {!ConsoleAgent.CallFrame} */ ({
+ "functionName": functionName,
+ "url": url || "",
+ "scriptId": scriptId || "0",
+ "lineNumber": line || 0,
+ "columnNumber": column || 0
+ });
+ }
+
/**
* @param {string} address
* @return {!ConsoleAgent.CallFrame}
*/
function convertRawFrame(address)
{
- return codeMap.lookupEntry(address) || unknownFrame;
+ var entry = codeMap.lookupEntry(address);
+ if (entry)
+ return entry;
+ if (!missingAddesses.has(address)) {
+ missingAddesses.add(address);
+ console.error("Address " + address + " has missing code entry");
+ }
+ return createFrame(address);
}
// Code states:
// (empty) -> compiled
// ~ -> optimizable
// * -> optimized
- var reName = /^(\S*:)?[*~]?(\S*)(?: (\S*))?$/;
+ var rePrefix = /^(\w*:)?[*~]?(.*)$/m;
/**
* @param {string} name
@@ -341,22 +362,29 @@ WebInspector.TimelineJSProfileProcessor.processRawV8Samples = function(events)
*/
function buildCallFrame(name, scriptId)
{
- var parsed = reName.exec(name);
- if (!parsed)
- return unknownFrame;
- var functionName = parsed[2] || "";
- var urlData = WebInspector.ParsedURL.splitLineAndColumn(parsed[3] || "");
- var url = urlData && urlData.url || "";
- var line = urlData && urlData.lineNumber || 0;
- var column = urlData && urlData.columnNumber || 0;
- var frame = {
- "functionName": functionName,
- "url": url,
- "scriptId": String(scriptId),
- "lineNumber": line,
- "columnNumber": column
- };
- return frame;
+ var tokens = rePrefix.exec(name);
+ if (!tokens || tokens.length < 3) {
yurys 2015/06/23 17:09:56 This condition seems to always be false.
alph 2015/06/23 17:38:13 Done.
+ console.error("Cannot parse function name " + name);
+ return createFrame(name);
+ }
+ var prefix = tokens[1];
+ var body = tokens[2];
+ var rawName;
+ var rawUrl;
+ if (prefix === "Script:") {
+ rawName = "";
+ rawUrl = body;
+ } else {
+ var spacePos = body.lastIndexOf(" ");
+ rawName = spacePos !== -1 ? body.substr(0, spacePos) : body;
+ rawUrl = spacePos !== -1 ? body.substr(spacePos + 1) : "";
+ }
+ var functionName = rawName;
+ var urlData = WebInspector.ParsedURL.splitLineAndColumn(rawUrl);
+ var url = urlData.url || "";
+ var line = urlData.lineNumber || 0;
+ var column = urlData.columnNumber || 0;
+ return createFrame(functionName, url, String(scriptId), line, column);
}
var recordTypes = WebInspector.TimelineModel.RecordType;
« no previous file with comments | « Source/devtools/front_end/common/ParsedURL.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698