Chromium Code Reviews| Index: tools/tickprocessor.js |
| diff --git a/tools/tickprocessor.js b/tools/tickprocessor.js |
| index 4afc69f613badbe4e8f219e05788571cbb797a95..f62d166afccf1d2587fcc4ff781eb819c1cb11af 100644 |
| --- a/tools/tickprocessor.js |
| +++ b/tools/tickprocessor.js |
| @@ -511,25 +511,11 @@ WindowsCppEntriesProvider.prototype.unmangleName = function(name) { |
| }; |
| -function padRight(s, len) { |
| - s = s.toString(); |
| - if (s.length < len) { |
| - s = s + (new Array(len - s.length + 1).join(' ')); |
| - } |
| - return s; |
| -}; |
| - |
| +function ArgumentsProcessor(args) { |
| + this.args_ = args; |
| + this.result_ = ArgumentsProcessor.DEFAULTS; |
| -function processArguments(args) { |
| - var result = { |
| - logFileName: 'v8.log', |
| - platform: 'unix', |
| - stateFilter: null, |
| - ignoreUnknown: false, |
| - separateIc: false, |
| - nm: 'nm' |
| - }; |
| - var argsDispatch = { |
| + this.argsDispatch_ = { |
| '-j': ['stateFilter', TickProcessor.VmStates.JS, |
| 'Show only ticks from JS VM state'], |
|
Erik Corry
2009/07/07 11:15:32
It would be better if this was an object with keys
Mikhail Naganov
2009/07/07 12:08:10
The downside of using a map here is that the defin
|
| '-g': ['stateFilter', TickProcessor.VmStates.GC, |
| @@ -551,63 +537,82 @@ function processArguments(args) { |
| '--nm': ['nm', 'nm', |
| 'Specify the \'nm\' executable to use (e.g. --nm=/my_dir/nm)'] |
| }; |
| - argsDispatch['--js'] = argsDispatch['-j']; |
| - argsDispatch['--gc'] = argsDispatch['-g']; |
| - argsDispatch['--compiler'] = argsDispatch['-c']; |
| - argsDispatch['--other'] = argsDispatch['-o']; |
| - argsDispatch['--external'] = argsDispatch['-e']; |
| - |
| - function printUsageAndExit() { |
| - print('Cmdline args: [options] [log-file-name]\n' + |
| - 'Default log file name is "v8.log".\n'); |
| - print('Options:'); |
| - for (var arg in argsDispatch) { |
| - var synonims = [arg]; |
| - var dispatch = argsDispatch[arg]; |
| - for (var synArg in argsDispatch) { |
| - if (arg !== synArg && dispatch === argsDispatch[synArg]) { |
| - synonims.push(synArg); |
| - delete argsDispatch[synArg]; |
| - } |
| - } |
| - print(' ' + padRight(synonims.join(', '), 20) + dispatch[2]); |
| - } |
| - quit(2); |
| - } |
| + this.argsDispatch_['--js'] = this.argsDispatch_['-j']; |
| + this.argsDispatch_['--gc'] = this.argsDispatch_['-g']; |
| + this.argsDispatch_['--compiler'] = this.argsDispatch_['-c']; |
| + this.argsDispatch_['--other'] = this.argsDispatch_['-o']; |
| + this.argsDispatch_['--external'] = this.argsDispatch_['-e']; |
| +}; |
| + |
| + |
| +ArgumentsProcessor.DEFAULTS = { |
| + logFileName: 'v8.log', |
| + platform: 'unix', |
| + stateFilter: null, |
| + ignoreUnknown: false, |
| + separateIc: false, |
| + nm: 'nm' |
| +}; |
| + |
| - while (args.length) { |
| - var arg = args[0]; |
| +ArgumentsProcessor.prototype.parse = function() { |
| + while (this.args_.length) { |
| + var arg = this.args_[0]; |
| if (arg.charAt(0) != '-') { |
| break; |
| } |
| - args.shift(); |
| + this.args_.shift(); |
| var userValue = null; |
| var eqPos = arg.indexOf('='); |
| if (eqPos != -1) { |
| userValue = arg.substr(eqPos + 1); |
| arg = arg.substr(0, eqPos); |
| } |
| - if (arg in argsDispatch) { |
| - var dispatch = argsDispatch[arg]; |
| - result[dispatch[0]] = userValue == null ? dispatch[1] : userValue; |
| + if (arg in this.argsDispatch_) { |
| + var dispatch = this.argsDispatch_[arg]; |
| + this.result_[dispatch[0]] = userValue == null ? dispatch[1] : userValue; |
| } else { |
| - printUsageAndExit(); |
| + return false; |
| } |
| } |
| - if (args.length >= 1) { |
| - result.logFileName = args.shift(); |
| + if (this.args_.length >= 1) { |
| + this.result_.logFileName = this.args_.shift(); |
| } |
| - return result; |
| + return true; |
| }; |
| -var params = processArguments(arguments); |
| -var tickProcessor = new TickProcessor( |
| - params.platform == 'unix' ? new UnixCppEntriesProvider(params.nm) : |
| - new WindowsCppEntriesProvider(), |
| - params.separateIc, |
| - params.ignoreUnknown, |
| - params.stateFilter); |
| -tickProcessor.processLogFile(params.logFileName); |
| -tickProcessor.printStatistics(); |
| +ArgumentsProcessor.prototype.result = function() { |
| + return this.result_; |
| +}; |
| + |
| + |
| +ArgumentsProcessor.prototype.printUsageAndExit = function() { |
| + |
| + function padRight(s, len) { |
| + s = s.toString(); |
| + if (s.length < len) { |
| + s = s + (new Array(len - s.length + 1).join(' ')); |
|
Erik Corry
2009/07/07 11:15:32
I hope this part isn't performance critical in any
Mikhail Naganov
2009/07/07 12:08:10
No, this is just for printing an usage message.
B
|
| + } |
| + return s; |
| + } |
| + |
| + print('Cmdline args: [options] [log-file-name]\n' + |
| + 'Default log file name is "' + |
| + ArgumentsProcessor.DEFAULTS.logFileName + '".\n'); |
| + print('Options:'); |
| + for (var arg in this.argsDispatch_) { |
| + var synonims = [arg]; |
| + var dispatch = this.argsDispatch_[arg]; |
| + for (var synArg in this.argsDispatch_) { |
| + if (arg !== synArg && dispatch === this.argsDispatch_[synArg]) { |
| + synonims.push(synArg); |
| + delete this.argsDispatch_[synArg]; |
| + } |
| + } |
| + print(' ' + padRight(synonims.join(', '), 20) + dispatch[2]); |
| + } |
| + quit(2); |
| +}; |
| + |