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

Side by Side Diff: tools/logreader.js

Issue 802333002: Profiler improvements (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: updated test expectations; improved tickprocessor tests failure output Created 5 years, 11 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 unified diff | Download patch
« no previous file with comments | « test/mjsunit/tools/tickprocessor-test.separate-ic ('k') | tools/profile.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 17 matching lines...) Expand all
28 /** 28 /**
29 * @fileoverview Log Reader is used to process log file produced by V8. 29 * @fileoverview Log Reader is used to process log file produced by V8.
30 */ 30 */
31 31
32 32
33 /** 33 /**
34 * Base class for processing log files. 34 * Base class for processing log files.
35 * 35 *
36 * @param {Array.<Object>} dispatchTable A table used for parsing and processing 36 * @param {Array.<Object>} dispatchTable A table used for parsing and processing
37 * log records. 37 * log records.
38 * @param {boolean} timedRange Ignore ticks outside timed range.
38 * @constructor 39 * @constructor
39 */ 40 */
40 function LogReader(dispatchTable) { 41 function LogReader(dispatchTable, timedRange) {
41 /** 42 /**
42 * @type {Array.<Object>} 43 * @type {Array.<Object>}
43 */ 44 */
44 this.dispatchTable_ = dispatchTable; 45 this.dispatchTable_ = dispatchTable;
45 46
46 /** 47 /**
48 * @type {boolean}
49 */
50 this.timedRange_ = timedRange;
51
52 /**
47 * Current line. 53 * Current line.
48 * @type {number} 54 * @type {number}
49 */ 55 */
50 this.lineNum_ = 0; 56 this.lineNum_ = 0;
51 57
52 /** 58 /**
53 * CSV lines parser. 59 * CSV lines parser.
54 * @type {CsvParser} 60 * @type {CsvParser}
55 */ 61 */
56 this.csvParser_ = new CsvParser(); 62 this.csvParser_ = new CsvParser();
63
64 /**
65 * Keeps track of whether we've seen a "current-time" tick yet.
66 * @type {boolean}
67 */
68 this.hasSeenTimerMarker_ = false;
69
70 /**
71 * List of log lines seen since last "current-time" tick.
72 * @type {Array.<String>}
73 */
74 this.logLinesSinceLastTimerMarker_ = [];
57 }; 75 };
58 76
59 77
60 /** 78 /**
61 * Used for printing error messages. 79 * Used for printing error messages.
62 * 80 *
63 * @param {string} str Error message. 81 * @param {string} str Error message.
64 */ 82 */
65 LogReader.prototype.printError = function(str) { 83 LogReader.prototype.printError = function(str) {
66 // Do nothing. 84 // Do nothing.
67 }; 85 };
68 86
69 87
70 /** 88 /**
71 * Processes a portion of V8 profiler event log. 89 * Processes a portion of V8 profiler event log.
72 * 90 *
73 * @param {string} chunk A portion of log. 91 * @param {string} chunk A portion of log.
74 */ 92 */
75 LogReader.prototype.processLogChunk = function(chunk) { 93 LogReader.prototype.processLogChunk = function(chunk) {
76 this.processLog_(chunk.split('\n')); 94 this.processLog_(chunk.split('\n'));
77 }; 95 };
78 96
79 97
80 /** 98 /**
81 * Processes a line of V8 profiler event log. 99 * Processes a line of V8 profiler event log.
82 * 100 *
83 * @param {string} line A line of log. 101 * @param {string} line A line of log.
84 */ 102 */
85 LogReader.prototype.processLogLine = function(line) { 103 LogReader.prototype.processLogLine = function(line) {
86 this.processLog_([line]); 104 if (!this.timedRange_) {
105 this.processLog_([line]);
106 return;
107 }
108 if (line.startsWith("current-time")) {
109 if (this.hasSeenTimerMarker_) {
110 this.processLog_(this.logLinesSinceLastTimerMarker_);
111 this.logLinesSinceLastTimerMarker_ = [];
112 } else {
113 this.hasSeenTimerMarker_ = true;
114 }
115 } else {
116 if (this.hasSeenTimerMarker_) {
117 this.logLinesSinceLastTimerMarker_.push(line);
118 } else if (!line.startsWith("tick")) {
119 this.processLog_([line]);
120 }
121 }
87 }; 122 };
88 123
89 124
90 /** 125 /**
91 * Processes stack record. 126 * Processes stack record.
92 * 127 *
93 * @param {number} pc Program counter. 128 * @param {number} pc Program counter.
94 * @param {number} func JS Function. 129 * @param {number} func JS Function.
95 * @param {Array.<string>} stack String representation of a stack. 130 * @param {Array.<string>} stack String representation of a stack.
96 * @return {Array.<number>} Processed stack. 131 * @return {Array.<number>} Processed stack.
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 continue; 212 continue;
178 } 213 }
179 try { 214 try {
180 var fields = this.csvParser_.parseLine(line); 215 var fields = this.csvParser_.parseLine(line);
181 this.dispatchLogRow_(fields); 216 this.dispatchLogRow_(fields);
182 } catch (e) { 217 } catch (e) {
183 this.printError('line ' + (this.lineNum_ + 1) + ': ' + (e.message || e)); 218 this.printError('line ' + (this.lineNum_ + 1) + ': ' + (e.message || e));
184 } 219 }
185 } 220 }
186 }; 221 };
OLDNEW
« no previous file with comments | « test/mjsunit/tools/tickprocessor-test.separate-ic ('k') | tools/profile.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698