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

Side by Side Diff: tools/logreader.js

Issue 6456025: Shorten constructor names in JS tickprocessor. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: and CallTree Created 9 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « tools/csvparser.js ('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 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 11 matching lines...) Expand all
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
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 // Initlialize namespaces
33 var devtools = devtools || {};
34 devtools.profiler = devtools.profiler || {};
35
36 32
37 /** 33 /**
38 * Base class for processing log files. 34 * Base class for processing log files.
39 * 35 *
40 * @param {Array.<Object>} dispatchTable A table used for parsing and processing 36 * @param {Array.<Object>} dispatchTable A table used for parsing and processing
41 * log records. 37 * log records.
42 * @constructor 38 * @constructor
43 */ 39 */
44 devtools.profiler.LogReader = function(dispatchTable) { 40 function LogReader(dispatchTable) {
45 /** 41 /**
46 * @type {Array.<Object>} 42 * @type {Array.<Object>}
47 */ 43 */
48 this.dispatchTable_ = dispatchTable; 44 this.dispatchTable_ = dispatchTable;
49 45
50 /** 46 /**
51 * Current line. 47 * Current line.
52 * @type {number} 48 * @type {number}
53 */ 49 */
54 this.lineNum_ = 0; 50 this.lineNum_ = 0;
55 51
56 /** 52 /**
57 * CSV lines parser. 53 * CSV lines parser.
58 * @type {devtools.profiler.CsvParser} 54 * @type {CsvParser}
59 */ 55 */
60 this.csvParser_ = new devtools.profiler.CsvParser(); 56 this.csvParser_ = new CsvParser();
61 }; 57 };
62 58
63 59
64 /** 60 /**
65 * Used for printing error messages. 61 * Used for printing error messages.
66 * 62 *
67 * @param {string} str Error message. 63 * @param {string} str Error message.
68 */ 64 */
69 devtools.profiler.LogReader.prototype.printError = function(str) { 65 LogReader.prototype.printError = function(str) {
70 // Do nothing. 66 // Do nothing.
71 }; 67 };
72 68
73 69
74 /** 70 /**
75 * Processes a portion of V8 profiler event log. 71 * Processes a portion of V8 profiler event log.
76 * 72 *
77 * @param {string} chunk A portion of log. 73 * @param {string} chunk A portion of log.
78 */ 74 */
79 devtools.profiler.LogReader.prototype.processLogChunk = function(chunk) { 75 LogReader.prototype.processLogChunk = function(chunk) {
80 this.processLog_(chunk.split('\n')); 76 this.processLog_(chunk.split('\n'));
81 }; 77 };
82 78
83 79
84 /** 80 /**
85 * Processes a line of V8 profiler event log. 81 * Processes a line of V8 profiler event log.
86 * 82 *
87 * @param {string} line A line of log. 83 * @param {string} line A line of log.
88 */ 84 */
89 devtools.profiler.LogReader.prototype.processLogLine = function(line) { 85 LogReader.prototype.processLogLine = function(line) {
90 this.processLog_([line]); 86 this.processLog_([line]);
91 }; 87 };
92 88
93 89
94 /** 90 /**
95 * Processes stack record. 91 * Processes stack record.
96 * 92 *
97 * @param {number} pc Program counter. 93 * @param {number} pc Program counter.
98 * @param {number} func JS Function. 94 * @param {number} func JS Function.
99 * @param {Array.<string>} stack String representation of a stack. 95 * @param {Array.<string>} stack String representation of a stack.
100 * @return {Array.<number>} Processed stack. 96 * @return {Array.<number>} Processed stack.
101 */ 97 */
102 devtools.profiler.LogReader.prototype.processStack = function(pc, func, stack) { 98 LogReader.prototype.processStack = function(pc, func, stack) {
103 var fullStack = func ? [pc, func] : [pc]; 99 var fullStack = func ? [pc, func] : [pc];
104 var prevFrame = pc; 100 var prevFrame = pc;
105 for (var i = 0, n = stack.length; i < n; ++i) { 101 for (var i = 0, n = stack.length; i < n; ++i) {
106 var frame = stack[i]; 102 var frame = stack[i];
107 var firstChar = frame.charAt(0); 103 var firstChar = frame.charAt(0);
108 if (firstChar == '+' || firstChar == '-') { 104 if (firstChar == '+' || firstChar == '-') {
109 // An offset from the previous frame. 105 // An offset from the previous frame.
110 prevFrame += parseInt(frame, 16); 106 prevFrame += parseInt(frame, 16);
111 fullStack.push(prevFrame); 107 fullStack.push(prevFrame);
112 // Filter out possible 'overflow' string. 108 // Filter out possible 'overflow' string.
113 } else if (firstChar != 'o') { 109 } else if (firstChar != 'o') {
114 fullStack.push(parseInt(frame, 16)); 110 fullStack.push(parseInt(frame, 16));
115 } 111 }
116 } 112 }
117 return fullStack; 113 return fullStack;
118 }; 114 };
119 115
120 116
121 /** 117 /**
122 * Returns whether a particular dispatch must be skipped. 118 * Returns whether a particular dispatch must be skipped.
123 * 119 *
124 * @param {!Object} dispatch Dispatch record. 120 * @param {!Object} dispatch Dispatch record.
125 * @return {boolean} True if dispatch must be skipped. 121 * @return {boolean} True if dispatch must be skipped.
126 */ 122 */
127 devtools.profiler.LogReader.prototype.skipDispatch = function(dispatch) { 123 LogReader.prototype.skipDispatch = function(dispatch) {
128 return false; 124 return false;
129 }; 125 };
130 126
131 127
132 /** 128 /**
133 * Does a dispatch of a log record. 129 * Does a dispatch of a log record.
134 * 130 *
135 * @param {Array.<string>} fields Log record. 131 * @param {Array.<string>} fields Log record.
136 * @private 132 * @private
137 */ 133 */
138 devtools.profiler.LogReader.prototype.dispatchLogRow_ = function(fields) { 134 LogReader.prototype.dispatchLogRow_ = function(fields) {
139 // Obtain the dispatch. 135 // Obtain the dispatch.
140 var command = fields[0]; 136 var command = fields[0];
141 if (!(command in this.dispatchTable_)) { 137 if (!(command in this.dispatchTable_)) {
142 throw new Error('unknown command: ' + command); 138 throw new Error('unknown command: ' + command);
143 } 139 }
144 var dispatch = this.dispatchTable_[command]; 140 var dispatch = this.dispatchTable_[command];
145 141
146 if (dispatch === null || this.skipDispatch(dispatch)) { 142 if (dispatch === null || this.skipDispatch(dispatch)) {
147 return; 143 return;
148 } 144 }
(...skipping 17 matching lines...) Expand all
166 dispatch.processor.apply(this, parsedFields); 162 dispatch.processor.apply(this, parsedFields);
167 }; 163 };
168 164
169 165
170 /** 166 /**
171 * Processes log lines. 167 * Processes log lines.
172 * 168 *
173 * @param {Array.<string>} lines Log lines. 169 * @param {Array.<string>} lines Log lines.
174 * @private 170 * @private
175 */ 171 */
176 devtools.profiler.LogReader.prototype.processLog_ = function(lines) { 172 LogReader.prototype.processLog_ = function(lines) {
177 for (var i = 0, n = lines.length; i < n; ++i, ++this.lineNum_) { 173 for (var i = 0, n = lines.length; i < n; ++i, ++this.lineNum_) {
178 var line = lines[i]; 174 var line = lines[i];
179 if (!line) { 175 if (!line) {
180 continue; 176 continue;
181 } 177 }
182 try { 178 try {
183 var fields = this.csvParser_.parseLine(line); 179 var fields = this.csvParser_.parseLine(line);
184 this.dispatchLogRow_(fields); 180 this.dispatchLogRow_(fields);
185 } catch (e) { 181 } catch (e) {
186 this.printError('line ' + (this.lineNum_ + 1) + ': ' + (e.message || e)); 182 this.printError('line ' + (this.lineNum_ + 1) + ': ' + (e.message || e));
187 } 183 }
188 } 184 }
189 }; 185 };
OLDNEW
« no previous file with comments | « tools/csvparser.js ('k') | tools/profile.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698