Home | History | Annotate | Download | only in scripts

Lines Matching defs:Function

128             # When a callstack contains recursive function, only add for each function once.
136 function = lib.get_function(func_id)
139 function.sample_count += 1
140 function.add_reverse_callchain(callstack, i + 1, len(callstack), event_count)
143 function.build_addr_hit_map(addr, event_count if i == 0 else 0, event_count)
148 # When a callstack contains recursive function, only add for each function once.
172 function = self.functions.get(func_id)
173 if not function:
174 function = self.functions[func_id] = FunctionScope(func_id)
175 return function
319 class Function(object):
320 """ Represent a function in a shared library. """
339 function = self.name_to_func.get(key)
340 if function is None:
342 function = Function(lib_id, symbol.symbol_name, func_id, symbol.symbol_addr,
344 self.name_to_func[key] = function
345 self.id_to_func[func_id] = function
346 return function.func_id
350 for function in self.name_to_func.values():
351 if function.func_id not in left_func_ids:
352 del self.id_to_func[function.func_id]
513 callGraph shows how a function calls other functions.
514 reverseCallGraph shows how a function is called by other functions.
599 function = lib.functions[func_id]
600 function.update_subtree_event_count()
611 function = lib.functions[func_id]
612 if function.call_graph.subtree_event_count < min_limit:
615 function.limit_callchain_percent(min_callchain_percent,
628 1. Find line ranges for each function in FunctionSet.
633 # Request line range for each function.
634 for function in self.functions.id_to_func.values():
635 if function.func_name == 'unknown':
637 lib_name = self.libs.get_lib_name(function.lib_id)
638 addr2line.add_addr(lib_name, function.start_addr, function.start_addr)
639 addr2line.add_addr(lib_name, function.start_addr,
640 function.start_addr + function.addr_len - 1)
647 for function in lib.functions.values():
649 function.call_graph.func_id].start_addr
650 for addr in function.addr_hit_map:
654 # Set line range for each function.
655 for function in self.functions.id_to_func.values():
656 if function.func_name == 'unknown':
658 dso = addr2line.get_dso(self.libs.get_lib_name(function.lib_id))
659 start_source = addr2line.get_addr_source(dso, function.start_addr)
661 function.start_addr + function.addr_len - 1)
670 function.source_info = (source_file.file_id, start_line, end_line)
678 for function in lib.functions.values():
679 for addr in function.addr_hit_map:
687 count_info = function.addr_hit_map[addr]
688 function.build_line_hit_map(source_file.file_id, line,
696 1. Use objdump to collect disassembly for each function in FunctionSet.
700 for function in self.functions.id_to_func.values():
701 if function.func_name == 'unknown':
703 lib_name = self.libs.get_lib_name(function.lib_id)
704 code = objdump.disassemble_code(lib_name, function.start_addr, function.addr_len)
705 function.disassembly = code
756 function = self.functions.id_to_func[func_id]
758 func_data['l'] = function.lib_id
759 func_data['f'] = modify_text_for_html(function.func_name)
760 if function.source_info:
761 func_data['s'] = function.source_info
762 if function.disassembly:
764 for code, addr in function.disassembly:
870 It is used to limit nodes shown in the function flamegraph. For example,
872 the starting function are collected in the report. Default is 0.01.""")