OLD | NEW |
---|---|
(Empty) | |
1 # Copyright 2016 the V8 project authors. All rights reserved. | |
danno
2016/07/27 10:40:03
Please move this file up a directory into the "too
| |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import os | |
6 import sys | |
7 import json | |
8 import re | |
9 import argparse | |
10 | |
11 sys.path.append(os.environ['PERF_EXEC_PATH'] + \ | |
12 '/scripts/python/Perf-Trace-Util/lib/Perf/Trace') | |
13 | |
14 from perf_trace_context import * | |
15 from Core import * | |
16 | |
17 def trace_begin(): | |
18 json_obj['eventCounts'] = {} | |
19 prog = re.compile(r'0x[0-9a-fA-F]+') | |
20 for phase in reversed(json_obj['phases']): | |
21 if phase['name'] == "disassembly": | |
22 for line in phase['data'].splitlines(): | |
23 result = re.match(prog, line) | |
24 if result: | |
25 known_addrs.add(result.group(0)) | |
26 | |
27 def trace_end(): | |
28 print json.dumps(json_obj) | |
29 | |
30 def process_event(param_dict): | |
31 addr = "0x%x" % int(param_dict['sample']['ip']) | |
32 | |
33 # Only count samples that belong to the function | |
34 if addr not in known_addrs: | |
35 return | |
36 | |
37 ev_name = param_dict['ev_name'] | |
38 if ev_name not in json_obj['eventCounts']: | |
39 json_obj['eventCounts'][ev_name] = {} | |
40 if addr not in json_obj['eventCounts'][ev_name]: | |
41 json_obj['eventCounts'][ev_name][addr] = 0 | |
42 json_obj['eventCounts'][ev_name][addr] += 1 | |
43 | |
44 if __name__ == "__main__": | |
45 parser = argparse.ArgumentParser( | |
46 description="Perf script to merge profiling data with turbofan compiler " | |
47 "traces.") | |
48 parser.add_argument("file_name", metavar="JSON File", | |
49 help="turbo trace json file.") | |
50 | |
51 args = parser.parse_args() | |
52 | |
53 with open(args.file_name, 'r') as json_file: | |
54 json_obj = json.load(json_file) | |
55 | |
56 known_addrs = set() | |
OLD | NEW |