| 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 |