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); | 
| +}; | 
| + |