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

Side by Side Diff: tools/ll_prof.py

Issue 9227007: Version 3.8.6 (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « tools/grokdump.py ('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 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2010 the V8 project authors. All rights reserved. 3 # Copyright 2012 the V8 project authors. All rights reserved.
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
11 # copyright notice, this list of conditions and the following 11 # copyright notice, this list of conditions and the following
12 # disclaimer in the documentation and/or other materials provided 12 # disclaimer in the documentation and/or other materials provided
13 # with the distribution. 13 # with the distribution.
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 for (field, format, bit) in PERF_SAMPLE_EVENT_BODY_FIELDS 666 for (field, format, bit) in PERF_SAMPLE_EVENT_BODY_FIELDS
667 if (bit & sample_type) != 0] 667 if (bit & sample_type) != 0]
668 return Descriptor(fields) 668 return Descriptor(fields)
669 669
670 670
671 OBJDUMP_SECTION_HEADER_RE = re.compile( 671 OBJDUMP_SECTION_HEADER_RE = re.compile(
672 r"^\s*\d+\s(\.\S+)\s+[a-f0-9]") 672 r"^\s*\d+\s(\.\S+)\s+[a-f0-9]")
673 OBJDUMP_SYMBOL_LINE_RE = re.compile( 673 OBJDUMP_SYMBOL_LINE_RE = re.compile(
674 r"^([a-f0-9]+)\s(.{7})\s(\S+)\s+([a-f0-9]+)\s+(?:\.hidden\s+)?(.*)$") 674 r"^([a-f0-9]+)\s(.{7})\s(\S+)\s+([a-f0-9]+)\s+(?:\.hidden\s+)?(.*)$")
675 OBJDUMP_DYNAMIC_SYMBOLS_START_RE = re.compile( 675 OBJDUMP_DYNAMIC_SYMBOLS_START_RE = re.compile(
676 r"^DYNAMIC SYMBOL TABLE") 676 r"^DYNAMIC SYMBOL TABLE")
677 OBJDUMP_SKIP_RE = re.compile(
678 r"^.*ld\.so\.cache$")
677 KERNEL_ALLSYMS_FILE = "/proc/kallsyms" 679 KERNEL_ALLSYMS_FILE = "/proc/kallsyms"
678 PERF_KERNEL_ALLSYMS_RE = re.compile( 680 PERF_KERNEL_ALLSYMS_RE = re.compile(
679 r".*kallsyms.*") 681 r".*kallsyms.*")
680 KERNEL_ALLSYMS_LINE_RE = re.compile( 682 KERNEL_ALLSYMS_LINE_RE = re.compile(
681 r"^([a-f0-9]+)\s(?:t|T)\s(\S+)$") 683 r"^([a-f0-9]+)\s(?:t|T)\s(\S+)$")
682 684
683 685
684 class LibraryRepo(object): 686 class LibraryRepo(object):
685 def __init__(self): 687 def __init__(self):
686 self.infos = [] 688 self.infos = []
687 self.names = set() 689 self.names = set()
688 self.ticks = {} 690 self.ticks = {}
689 691
690 def Load(self, mmap_info, code_map, options): 692 def Load(self, mmap_info, code_map, options):
691 # Skip kernel mmaps when requested using the fact that their tid 693 # Skip kernel mmaps when requested using the fact that their tid
692 # is 0. 694 # is 0.
693 if mmap_info.tid == 0 and not options.kernel: 695 if mmap_info.tid == 0 and not options.kernel:
694 return True 696 return True
697 if OBJDUMP_SKIP_RE.match(mmap_info.filename):
698 return True
695 if PERF_KERNEL_ALLSYMS_RE.match(mmap_info.filename): 699 if PERF_KERNEL_ALLSYMS_RE.match(mmap_info.filename):
696 return self._LoadKernelSymbols(code_map) 700 return self._LoadKernelSymbols(code_map)
697 self.infos.append(mmap_info) 701 self.infos.append(mmap_info)
698 mmap_info.ticks = 0 702 mmap_info.ticks = 0
699 mmap_info.unique_name = self._UniqueMmapName(mmap_info) 703 mmap_info.unique_name = self._UniqueMmapName(mmap_info)
700 if not os.path.exists(mmap_info.filename): 704 if not os.path.exists(mmap_info.filename):
701 return True 705 return True
702 # Request section headers (-h), symbols (-t), and dynamic symbols 706 # Request section headers (-h), symbols (-t), and dynamic symbols
703 # (-T) from objdump. 707 # (-T) from objdump.
704 # Unfortunately, section headers span two lines, so we have to 708 # Unfortunately, section headers span two lines, so we have to
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 print "%10d total ticks" % ticks 942 print "%10d total ticks" % ticks
939 print "%10d ticks not in symbols" % missed_ticks 943 print "%10d ticks not in symbols" % missed_ticks
940 print "%10d unaccounted ticks" % really_missed_ticks 944 print "%10d unaccounted ticks" % really_missed_ticks
941 print "%10d total symbols" % len([c for c in code_map.AllCode()]) 945 print "%10d total symbols" % len([c for c in code_map.AllCode()])
942 print "%10d used symbols" % len([c for c in code_map.UsedCode()]) 946 print "%10d used symbols" % len([c for c in code_map.UsedCode()])
943 print "%9.2fs library processing time" % mmap_time 947 print "%9.2fs library processing time" % mmap_time
944 print "%9.2fs tick processing time" % sample_time 948 print "%9.2fs tick processing time" % sample_time
945 949
946 log_reader.Dispose() 950 log_reader.Dispose()
947 trace_reader.Dispose() 951 trace_reader.Dispose()
OLDNEW
« no previous file with comments | « tools/grokdump.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698