| OLD | NEW |
| 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 18 matching lines...) Expand all Loading... |
| 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 * @param {boolean} timedRange Ignore ticks outside timed range. |
| 39 * @param {boolean} pairwiseTimedRange Ignore ticks outside pairs of timer |
| 40 * markers. |
| 39 * @constructor | 41 * @constructor |
| 40 */ | 42 */ |
| 41 function LogReader(dispatchTable, timedRange) { | 43 function LogReader(dispatchTable, timedRange, pairwiseTimedRange) { |
| 42 /** | 44 /** |
| 43 * @type {Array.<Object>} | 45 * @type {Array.<Object>} |
| 44 */ | 46 */ |
| 45 this.dispatchTable_ = dispatchTable; | 47 this.dispatchTable_ = dispatchTable; |
| 46 | 48 |
| 47 /** | 49 /** |
| 48 * @type {boolean} | 50 * @type {boolean} |
| 49 */ | 51 */ |
| 50 this.timedRange_ = timedRange; | 52 this.timedRange_ = timedRange; |
| 51 | 53 |
| 52 /** | 54 /** |
| 55 * @type {boolean} |
| 56 */ |
| 57 this.pairwiseTimedRange_ = pairwiseTimedRange; |
| 58 if (pairwiseTimedRange) { |
| 59 this.timedRange_ = true; |
| 60 } |
| 61 |
| 62 /** |
| 53 * Current line. | 63 * Current line. |
| 54 * @type {number} | 64 * @type {number} |
| 55 */ | 65 */ |
| 56 this.lineNum_ = 0; | 66 this.lineNum_ = 0; |
| 57 | 67 |
| 58 /** | 68 /** |
| 59 * CSV lines parser. | 69 * CSV lines parser. |
| 60 * @type {CsvParser} | 70 * @type {CsvParser} |
| 61 */ | 71 */ |
| 62 this.csvParser_ = new CsvParser(); | 72 this.csvParser_ = new CsvParser(); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 */ | 112 */ |
| 103 LogReader.prototype.processLogLine = function(line) { | 113 LogReader.prototype.processLogLine = function(line) { |
| 104 if (!this.timedRange_) { | 114 if (!this.timedRange_) { |
| 105 this.processLog_([line]); | 115 this.processLog_([line]); |
| 106 return; | 116 return; |
| 107 } | 117 } |
| 108 if (line.startsWith("current-time")) { | 118 if (line.startsWith("current-time")) { |
| 109 if (this.hasSeenTimerMarker_) { | 119 if (this.hasSeenTimerMarker_) { |
| 110 this.processLog_(this.logLinesSinceLastTimerMarker_); | 120 this.processLog_(this.logLinesSinceLastTimerMarker_); |
| 111 this.logLinesSinceLastTimerMarker_ = []; | 121 this.logLinesSinceLastTimerMarker_ = []; |
| 122 // In pairwise mode, a "current-time" line ends the timed range. |
| 123 if (this.pairwiseTimedRange_) { |
| 124 this.hasSeenTimerMarker_ = false; |
| 125 } |
| 112 } else { | 126 } else { |
| 113 this.hasSeenTimerMarker_ = true; | 127 this.hasSeenTimerMarker_ = true; |
| 114 } | 128 } |
| 115 } else { | 129 } else { |
| 116 if (this.hasSeenTimerMarker_) { | 130 if (this.hasSeenTimerMarker_) { |
| 117 this.logLinesSinceLastTimerMarker_.push(line); | 131 this.logLinesSinceLastTimerMarker_.push(line); |
| 118 } else if (!line.startsWith("tick")) { | 132 } else if (!line.startsWith("tick")) { |
| 119 this.processLog_([line]); | 133 this.processLog_([line]); |
| 120 } | 134 } |
| 121 } | 135 } |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 continue; | 226 continue; |
| 213 } | 227 } |
| 214 try { | 228 try { |
| 215 var fields = this.csvParser_.parseLine(line); | 229 var fields = this.csvParser_.parseLine(line); |
| 216 this.dispatchLogRow_(fields); | 230 this.dispatchLogRow_(fields); |
| 217 } catch (e) { | 231 } catch (e) { |
| 218 this.printError('line ' + (this.lineNum_ + 1) + ': ' + (e.message || e)); | 232 this.printError('line ' + (this.lineNum_ + 1) + ': ' + (e.message || e)); |
| 219 } | 233 } |
| 220 } | 234 } |
| 221 }; | 235 }; |
| OLD | NEW |