OLD | NEW |
1 #! /usr/bin/python2 | 1 #! /usr/bin/python2 |
2 # | 2 # |
3 # Copyright 2016 the V8 project authors. All rights reserved. | 3 # Copyright 2016 the V8 project authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 # | 6 # |
7 | 7 |
8 import argparse | 8 import argparse |
9 import collections | 9 import collections |
10 import re | 10 import re |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 elif symbol == "Stub:CEntryStub" and compiler_symbol_in_chain: | 108 elif symbol == "Stub:CEntryStub" and compiler_symbol_in_chain: |
109 if show_all: | 109 if show_all: |
110 current_chain[-1] = "[compiler]" | 110 current_chain[-1] = "[compiler]" |
111 yield current_chain | 111 yield current_chain |
112 skip_until_end_of_chain = True | 112 skip_until_end_of_chain = True |
113 elif COMPILER_SYMBOLS_RE.match(symbol): | 113 elif COMPILER_SYMBOLS_RE.match(symbol): |
114 compiler_symbol_in_chain = True | 114 compiler_symbol_in_chain = True |
115 elif symbol == "Builtin:InterpreterEntryTrampoline": | 115 elif symbol == "Builtin:InterpreterEntryTrampoline": |
116 if len(current_chain) == 1: | 116 if len(current_chain) == 1: |
117 yield ["[entry trampoline]"] | 117 yield ["[entry trampoline]"] |
118 elif show_all: | 118 else: |
119 # If we see an InterpreterEntryTrampoline which is not at the top of the | 119 # If we see an InterpreterEntryTrampoline which is not at the top of the |
120 # chain and doesn't have a BytecodeHandler above it, then we have | 120 # chain and doesn't have a BytecodeHandler above it, then we have |
121 # skipped the top BytecodeHandler due to the top-level stub not building | 121 # skipped the top BytecodeHandler due to the top-level stub not building |
122 # a frame. File the chain in the [misattributed] bucket. | 122 # a frame. File the chain in the [misattributed] bucket. |
123 current_chain[-1] = "[misattributed]" | 123 current_chain[-1] = "[misattributed]" |
124 yield current_chain | 124 yield current_chain |
125 skip_until_end_of_chain = True | 125 skip_until_end_of_chain = True |
126 | 126 |
127 | 127 |
128 def calculate_samples_count_per_callchain(callchains): | 128 def calculate_samples_count_per_callchain(callchains): |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 program_options.show_full_signatures) | 213 program_options.show_full_signatures) |
214 | 214 |
215 if program_options.output_flamegraph: | 215 if program_options.output_flamegraph: |
216 write_flamegraph_input_file(program_options.output_stream, callchains) | 216 write_flamegraph_input_file(program_options.output_stream, callchains) |
217 else: | 217 else: |
218 write_handlers_report(program_options.output_stream, callchains) | 218 write_handlers_report(program_options.output_stream, callchains) |
219 | 219 |
220 | 220 |
221 if __name__ == "__main__": | 221 if __name__ == "__main__": |
222 main() | 222 main() |
OLD | NEW |