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

Side by Side Diff: tools/tickprocessor.js

Issue 132021: Two requested changes to tick processor. (Closed)
Patch Set: Created 11 years, 6 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 | « tools/linux-tick-processor ('k') | no next file » | 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 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 403
404 CppEntriesProvider.prototype.loadSymbols = function(libName) { 404 CppEntriesProvider.prototype.loadSymbols = function(libName) {
405 }; 405 };
406 406
407 407
408 CppEntriesProvider.prototype.parseNextLine = function() { 408 CppEntriesProvider.prototype.parseNextLine = function() {
409 return false; 409 return false;
410 }; 410 };
411 411
412 412
413 function UnixCppEntriesProvider() { 413 function UnixCppEntriesProvider(nmExec) {
414 this.symbols = []; 414 this.symbols = [];
415 this.parsePos = 0; 415 this.parsePos = 0;
416 this.nmExec = nmExec;
416 }; 417 };
417 inherits(UnixCppEntriesProvider, CppEntriesProvider); 418 inherits(UnixCppEntriesProvider, CppEntriesProvider);
418 419
419 420
420 UnixCppEntriesProvider.FUNC_RE = /^([0-9a-fA-F]{8}) [tTwW] (.*)$/; 421 UnixCppEntriesProvider.FUNC_RE = /^([0-9a-fA-F]{8}) [tTwW] (.*)$/;
421 422
422 423
423 UnixCppEntriesProvider.prototype.loadSymbols = function(libName) { 424 UnixCppEntriesProvider.prototype.loadSymbols = function(libName) {
424 this.parsePos = 0; 425 this.parsePos = 0;
425 try { 426 try {
426 this.symbols = [ 427 this.symbols = [
427 os.system('nm', ['-C', '-n', libName], -1, -1), 428 os.system(this.nmExec, ['-C', '-n', libName], -1, -1),
428 os.system('nm', ['-C', '-n', '-D', libName], -1, -1) 429 os.system(this.nmExec, ['-C', '-n', '-D', libName], -1, -1)
429 ]; 430 ];
430 } catch (e) { 431 } catch (e) {
431 // If the library cannot be found on this system let's not panic. 432 // If the library cannot be found on this system let's not panic.
432 this.symbols = ['', '']; 433 this.symbols = ['', ''];
433 } 434 }
434 }; 435 };
435 436
436 437
437 UnixCppEntriesProvider.prototype.parseNextLine = function() { 438 UnixCppEntriesProvider.prototype.parseNextLine = function() {
438 if (this.symbols.length == 0) { 439 if (this.symbols.length == 0) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 return s; 517 return s;
517 }; 518 };
518 519
519 520
520 function processArguments(args) { 521 function processArguments(args) {
521 var result = { 522 var result = {
522 logFileName: 'v8.log', 523 logFileName: 'v8.log',
523 platform: 'unix', 524 platform: 'unix',
524 stateFilter: null, 525 stateFilter: null,
525 ignoreUnknown: false, 526 ignoreUnknown: false,
526 separateIc: false 527 separateIc: false,
528 nm: 'nm'
527 }; 529 };
528 var argsDispatch = { 530 var argsDispatch = {
529 '-j': ['stateFilter', TickProcessor.VmStates.JS, 531 '-j': ['stateFilter', TickProcessor.VmStates.JS,
530 'Show only ticks from JS VM state'], 532 'Show only ticks from JS VM state'],
531 '-g': ['stateFilter', TickProcessor.VmStates.GC, 533 '-g': ['stateFilter', TickProcessor.VmStates.GC,
532 'Show only ticks from GC VM state'], 534 'Show only ticks from GC VM state'],
533 '-c': ['stateFilter', TickProcessor.VmStates.COMPILER, 535 '-c': ['stateFilter', TickProcessor.VmStates.COMPILER,
534 'Show only ticks from COMPILER VM state'], 536 'Show only ticks from COMPILER VM state'],
535 '-o': ['stateFilter', TickProcessor.VmStates.OTHER, 537 '-o': ['stateFilter', TickProcessor.VmStates.OTHER,
536 'Show only ticks from OTHER VM state'], 538 'Show only ticks from OTHER VM state'],
537 '-e': ['stateFilter', TickProcessor.VmStates.EXTERNAL, 539 '-e': ['stateFilter', TickProcessor.VmStates.EXTERNAL,
538 'Show only ticks from EXTERNAL VM state'], 540 'Show only ticks from EXTERNAL VM state'],
539 '--ignore-unknown': ['ignoreUnknown', true, 541 '--ignore-unknown': ['ignoreUnknown', true,
540 'Exclude ticks of unknown code entries from processing'], 542 'Exclude ticks of unknown code entries from processing'],
541 '--separate-ic': ['separateIc', true, 543 '--separate-ic': ['separateIc', true,
542 'Separate IC entries'], 544 'Separate IC entries'],
543 '--unix': ['platform', 'unix', 545 '--unix': ['platform', 'unix',
544 'Specify that we are running on *nix platform'], 546 'Specify that we are running on *nix platform'],
545 '--windows': ['platform', 'windows', 547 '--windows': ['platform', 'windows',
546 'Specify that we are running on Windows platform'] 548 'Specify that we are running on Windows platform'],
549 '--nm': ['nm', 'nm',
550 'Specify the \'nm\' executable to use (e.g. --nm=/my_dir/nm)']
547 }; 551 };
548 argsDispatch['--js'] = argsDispatch['-j']; 552 argsDispatch['--js'] = argsDispatch['-j'];
549 argsDispatch['--gc'] = argsDispatch['-g']; 553 argsDispatch['--gc'] = argsDispatch['-g'];
550 argsDispatch['--compiler'] = argsDispatch['-c']; 554 argsDispatch['--compiler'] = argsDispatch['-c'];
551 argsDispatch['--other'] = argsDispatch['-o']; 555 argsDispatch['--other'] = argsDispatch['-o'];
552 argsDispatch['--external'] = argsDispatch['-e']; 556 argsDispatch['--external'] = argsDispatch['-e'];
553 557
554 function printUsageAndExit() { 558 function printUsageAndExit() {
555 print('Cmdline args: [options] [log-file-name]\n' + 559 print('Cmdline args: [options] [log-file-name]\n' +
556 'Default log file name is "v8.log".\n'); 560 'Default log file name is "v8.log".\n');
(...skipping 11 matching lines...) Expand all
568 } 572 }
569 quit(2); 573 quit(2);
570 } 574 }
571 575
572 while (args.length) { 576 while (args.length) {
573 var arg = args[0]; 577 var arg = args[0];
574 if (arg.charAt(0) != '-') { 578 if (arg.charAt(0) != '-') {
575 break; 579 break;
576 } 580 }
577 args.shift(); 581 args.shift();
582 var userValue = null;
583 var eqPos = arg.indexOf('=');
584 if (eqPos != -1) {
585 userValue = arg.substr(eqPos + 1);
586 arg = arg.substr(0, eqPos);
587 }
578 if (arg in argsDispatch) { 588 if (arg in argsDispatch) {
579 var dispatch = argsDispatch[arg]; 589 var dispatch = argsDispatch[arg];
580 result[dispatch[0]] = dispatch[1]; 590 result[dispatch[0]] = userValue == null ? dispatch[1] : userValue;
581 } else { 591 } else {
582 printUsageAndExit(); 592 printUsageAndExit();
583 } 593 }
584 } 594 }
585 595
586 if (args.length >= 1) { 596 if (args.length >= 1) {
587 result.logFileName = args.shift(); 597 result.logFileName = args.shift();
588 } 598 }
589 return result; 599 return result;
590 }; 600 };
591 601
592 602
593 var params = processArguments(arguments); 603 var params = processArguments(arguments);
594 var tickProcessor = new TickProcessor( 604 var tickProcessor = new TickProcessor(
595 params.platform == 'unix' ? new UnixCppEntriesProvider() : 605 params.platform == 'unix' ? new UnixCppEntriesProvider(params.nm) :
596 new WindowsCppEntriesProvider(), 606 new WindowsCppEntriesProvider(),
597 params.separateIc, 607 params.separateIc,
598 params.ignoreUnknown, 608 params.ignoreUnknown,
599 params.stateFilter); 609 params.stateFilter);
600 tickProcessor.processLogFile(params.logFileName); 610 tickProcessor.processLogFile(params.logFileName);
601 tickProcessor.printStatistics(); 611 tickProcessor.printStatistics();
OLDNEW
« no previous file with comments | « tools/linux-tick-processor ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698