diff options
Diffstat (limited to 'deps/v8/tools/process-heap-prof.py')
-rwxr-xr-x | deps/v8/tools/process-heap-prof.py | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/deps/v8/tools/process-heap-prof.py b/deps/v8/tools/process-heap-prof.py index ff83952e0e..6a2c3978d2 100755 --- a/deps/v8/tools/process-heap-prof.py +++ b/deps/v8/tools/process-heap-prof.py @@ -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 @@ def process_logfile(filename, itemname): 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()) |