| Index: tools/process-heap-prof.py | 
| =================================================================== | 
| --- tools/process-heap-prof.py	(revision 3252) | 
| +++ tools/process-heap-prof.py	(working copy) | 
| @@ -40,9 +40,14 @@ | 
| # to get JS constructor profile | 
|  | 
|  | 
| -import csv, sys, time | 
| +import csv, sys, time, optparse | 
|  | 
| -def process_logfile(filename, itemname): | 
| +def ProcessLogFile(filename, options): | 
| +  if options.js_cons_profile: | 
| +    itemname = 'heap-js-cons-item' | 
| +  else: | 
| +    itemname = 'heap-sample-item' | 
| + | 
| first_call_time = None | 
| sample_time = 0.0 | 
| sampling = False | 
| @@ -68,13 +73,48 @@ | 
| print('END_SAMPLE %.2f' % sample_time) | 
| sampling = False | 
| elif row[0] == itemname and sampling: | 
| -          print('%s %d' % (row[1], int(row[3]))) | 
| +          print(row[1]), | 
| +          if options.count: | 
| +            print('%d' % (int(row[2]))), | 
| +          if options.size: | 
| +            print('%d' % (int(row[3]))), | 
| +          print | 
| finally: | 
| logfile.close() | 
| except: | 
| sys.exit('can\'t open %s' % filename) | 
|  | 
| -if sys.argv[1] == '--js-cons-profile': | 
| -  process_logfile(sys.argv[2], 'heap-js-cons-item') | 
| -else: | 
| -  process_logfile(sys.argv[1], 'heap-sample-item') | 
| + | 
| +def BuildOptions(): | 
| +  result = optparse.OptionParser() | 
| +  result.add_option("--js_cons_profile", help="Constructor profile", | 
| +      default=False, action="store_true") | 
| +  result.add_option("--size", help="Report object size", | 
| +      default=False, action="store_true") | 
| +  result.add_option("--count", help="Report object count", | 
| +      default=False, action="store_true") | 
| +  return result | 
| + | 
| + | 
| +def ProcessOptions(options): | 
| +  if not options.size and not options.count: | 
| +    options.size = True | 
| +  return True | 
| + | 
| + | 
| +def Main(): | 
| +  parser = BuildOptions() | 
| +  (options, args) = parser.parse_args() | 
| +  if not ProcessOptions(options): | 
| +    parser.print_help() | 
| +    sys.exit(); | 
| + | 
| +  if not args: | 
| +    print "Missing logfile" | 
| +    sys.exit(); | 
| + | 
| +  ProcessLogFile(args[0], options) | 
| + | 
| + | 
| +if __name__ == '__main__': | 
| +  sys.exit(Main()) | 
|  |